Bitcoin Forum
June 24, 2024, 04:58:50 AM *
News: Voting for pizza day contest
 
  Home Help Search Login Register More  
  Show Posts
Pages: [1] 2 3 »
1  Alternate cryptocurrencies / Announcements (Altcoins) / Re: [ANN] JimCoin [JIM] A currency for Jims, by Jims. on: March 13, 2018, 09:30:57 PM
Jim,

If you are still developing this. The windows wallet (windows 10) only allows me to send small qty's of jimcoin (< 300 coins). If I try to send a larger amount the error is "Transaction size to big".

I can send all coins from one wallet to another using a bunch of small transactions.
2  Alternate cryptocurrencies / Announcements (Altcoins) / Re: [ANN] JimCoin [JIM] A currency for Jims, by Jims. on: March 02, 2018, 04:04:31 PM
Jim, the OSX installer doesn't seem to work for version 10.12
3  Bitcoin / Bitcoin Discussion / Re: The Legend of Satoshi Nakamato, FINAL STEP PUBLISHED.... 4.87 BTC GRAND PRIZE! on: February 01, 2018, 04:14:56 PM
Congratulations to the winner!!! I would love to hear from you! I have been defeated! Cheesy

Got any other puzzles floating around?
4  Bitcoin / Bitcoin Discussion / Re: The Legend of Satoshi Nakamato, FINAL STEP PUBLISHED.... 4.87 BTC GRAND PRIZE! on: February 01, 2018, 03:38:31 PM
Congratulations to whoever got it!

Now where's that write up!
5  Bitcoin / Bitcoin Discussion / Re: The Legend of Satoshi Nakamato, FINAL STEP PUBLISHED.... 4.87 BTC GRAND PRIZE! on: January 28, 2018, 10:41:25 PM
"The biggest Troll of Satoshi Nakamoto. The fucking Step"
Seems that those creators and coin-troll mom killed the rabbit!
The only one that I am following and missing in this forum is the rabbit.
No rabbit No solution.

You are just waiting around hoping that someone gives you the answer.

Exploring DNA/RNA codons is better then just whining for someone to give you the answer.

In the interest of keeping my post about more then just engaging this nonsense.., I wanted to visually be able to see what flames were responsible for that "iskeyfile" pattern.., so I worked through it by hand and color coded the bits.

Note: when I say Top/Top I am referring to the outside track of the top of the image, after it has been rotated 90 degrees cw (Portrait).

https://imgur.com/a/DGGOg

@itod, sorta what you are looking for.
6  Bitcoin / Bitcoin Discussion / Re: The Legend of Satoshi Nakamato, FINAL STEP PUBLISHED.... 4.87 BTC GRAND PRIZE! on: January 28, 2018, 07:20:12 PM
And I would be thankful for a link (Twitter?) to where Coin Artist said she coded the message with bacon cyphre. This bacon piece of info popped up out of nowhere and one moment nobody and the next everybody is searching for bacon coded hidden messages.

The bacon idea came from this thread. It's a popular idea because it was used, specifically with the pheonix and turtledove poem, to try and prove Bacon was shakespeare.

@compneuro, I've fully tested your dna idea. I assigned amino acid bases to each type of flame all 24 ways, from every starting point. Nothing as promising as the patterns crax0r pointed out.

I'll post my code if anyone wants it.
7  Bitcoin / Bitcoin Discussion / Re: The Legend of Satoshi Nakamato, FINAL STEP PUBLISHED.... 4.87 BTC GRAND PRIZE! on: January 24, 2018, 03:59:43 PM
There are 8 unique combination of border/fill/height for each of the flames on the border (10 if you count the orange ones, but they look like noise to me).

  • Red,Green,Tall
  • Red,Green,Short
  • Red,Purple,Tall
  • Red,Purple,Short
  • Yellow,Green,Tall
  • Yellow,Green,Short
  • Yellow,Purple,Tall
  • Yellow,Purple,Short

I think there is a real possibility that this a representation of octal, but not direct octal > text. I think it might be encoded a couple of levels... Something like octal > hex -or- binary > Morse > etc.

There are 40,320 possible ways to assign 0-8 to each of the color/height combinations. Also, not knowing the direction to read the information makes it more of a shot in the dark. So manually checking this might be unreasonable, and even scripting this is going to produce quite a bit of information to sift through. It would be nice if there were some clues available that might narrow the possibilities. I will try to script this out when I have some time. I think it might be best to grab a small sample rather than the whole thing.

If anyone has the ability to get this scripted out faster than me, I would really appreciate it if you would share your code with me.


I can modify my code to do this, but I don't know what you are going to do with the output, After you've represented the 152 flames as octal numbers and converted that to binary you'll have 456 bits. I'm not sure how you would convert that to morse, seeing as morse is trinary.., but let's say you could. We still don't know starting position, so we could try all 456 possibilities combined with your 40,320 possible ways of assigning octal numbers is 18,385,920 outputs. Wanna read the inner and outer tracks both directions? 73,543,680 possible combinations. Don't know whether to start with inner or outer flames? 147,087,360 possible outputs. Forgetting that maybe all 8 tracks were painted out of order and seeing as, in reality, you will also need to brute force the spaces, your output is going to be astronomical..., so what I'm saying is, unless you can think of some ways to narrow this down, I don't think it's worth the effort. I mean you could compare the output to a dictionary, but that doesn't do you any good if she/he/they didn't hide a message.
8  Bitcoin / Bitcoin Discussion / Re: The Legend of Satoshi Nakamato, FINAL STEP PUBLISHED.... 4.87 BTC GRAND PRIZE! on: January 22, 2018, 06:40:22 AM
4- Has anyone tried to trace the roots?

Yes, but I abandoned that idea..., unless someone comes up with something as to what they might mean that seems plausible.

Here you go: https://imgur.com/0S8oaPd https://imgur.com/K07xn2w
9  Bitcoin / Bitcoin Discussion / Re: The Legend of Satoshi Nakamato, FINAL STEP PUBLISHED.... 4.87 BTC GRAND PRIZE! on: January 17, 2018, 08:56:58 PM
We were using different inputs and methods though. I was suggesting construction like this:

first 12 flames (space delimited flames) = 0yp 1yg 1yg 0og 1yp 1op 0yg 1op 1yg 0yg 1op 0yg

and taking one bit per flame on a rotation of height (1) outside color (y) and inside color (o)

first 12 flames after operation = 0 y g 0 y p 0 o g 0 o g       which gives 011010001001 according to my scheme

xor of that is of course '000000010011'

....

....

Bacon on the 6s throwaway the leading zero
Doing that now I get->  JAYWUZUZVY.....
and after xoring -> AT_CMODODPCF.....

Bacon on the 5s keeping the zero
Doing this I now get -> NCIBQWK....
after xoring -> AE_IEMHAZY...


Interesting way of taking the data, but I can confirm you are at least doing your debaconing correctly now.

Here is my codes output using your input data

Code:
Turning on Verbose Mode...
line 0 is: 0yg0yp0og0og0op0op0yg0op0yp1

line 1 is: yp0yp1op0yg0og0yp1op0yg0

line 2 is: og0yp1og0yg0op0yg1yg0op1og0og1op0

line 3 is: yg1og0og0op0y

line 4 is: p0op0og0

line 5 is: op0yp0yp0og1og0y

line 6 is: g0yp0yp1og0y

line 7 is: g0og0yg1og0op0yg0y

Total Characters Read: 152

Normalizeing line 0
Line 0 is now: 0110100010010000000110000101
Normalizeing line 1
Line 1 is now: 100101000110010101000110
Normalizeing line 2
Line 2 is now: 010101010110000111110001010011000
Normalizeing line 3
Line 3 is now: 1110100100001
Normalizeing line 4
Line 4 is now: 00000010
Normalizeing line 5
Line 5 is now: 0001001000110101
Normalizeing line 6
Line 6 is now: 101001010101
Normalizeing line 7
Line 7 is now: 100101110100001101

Combined String: 01101000100100000001100001011001010001100101010001100101010101100001111100010100110001110100100001000000100001001000110101101001010101100101110100001101
XORING with 011010
Resulting string 00000001001101101000001000110000111000001100111000001100111100001000010101111101011000011101001000101001001000100001011100000000111100001100011101100100

String split into 5's for decoding:
00000 00100 11011 01000 00100 01100 00111 00000 11001 11000 00110 01111 00001 00001 01011 11101 01100 00111 01001 00010 10010 01000 10000 10111 00000 00011 11000 01100 01110 11001 00

Debaconing:
AE IEMHAZYGPBBL MHJCSIQXADYMOZ

Removing Spaces

00000001001101101000001000110000111000001100111000001100111100001000010101111101011000011101001000101001001000100001011100000000111100001100011101100100

Shifting String
Buffer:
00000001001101101000001000110000111000001100111000001100111100001000010101111101011000011101001000101001001000100001011100000000111100001100011101100100

00000010011011010000010001100001110000011001110000011001111000010000101011111010110000111010010001010010010001000010111000000001111000011000111011001000

String split into 5's for decoding:
00000 01001 10110 10000 01000 11000 01110 00001 10011 10000 01100 11110 00010 00010 10111 11010 11000 01110 10010 00101 00100 10001 00001 01110 00000 00111 10000 11000 11101 10010 00

Debaconing:
AJWQIYOBTQM CCX YOSFERBOAHQY S

And some partial output without verbose...

Quote
AE IEMHAZYGPBBL MHJCSIQXADYMOZ
AJWQIYOBTQM CCX YOSFERBOAHQY S
ATNARQ DHAZ EFPVQ EKJCC APBR E
BG BDBYGOBTYIK LB IUSEFYA DDWI
CNUCGDQM DHQQV WDURJEILQB GHMQ
E IEMHAZYGPBBL MHJCSIQXADYMOZA
JWQIYOBTQM CCX YOSFERBOAHQY SA
TNARQ DHAZ EFPVQ EKJCC APBR EA
G BDBYGOBTYIK LB IUSEFYA DDWIA
NUCGDQM DHQQV WDURJEILQB GHMQA
 IEMHAZYGPBBL MHJCSIQXADYMOZAB
WQIYOBTQM CCX YOSFERBOAHQY SAC
NARQ DHAZ EFPVQ EKJCC APBR EAE
10  Bitcoin / Bitcoin Discussion / Re: The Legend of Satoshi Nakamato, FINAL STEP PUBLISHED.... 4.87 BTC GRAND PRIZE! on: January 17, 2018, 06:20:20 AM
Here is the first chunk of output, so you can see how it works:

Code:
Turning on Verbose Mode...
line 0 is: 0yp1yg1yg0og1yp1op0yg1op1yg0yg1op0yg0op0og1yp0op1op1op0yg1yg10g0yg1op1op0yp0yg1yp1yp

line 1 is: 1yg1yp0yp1yp1op1yp1og1op0op1yg1og0op1og1yg0yg1yg1op1og1op1op0yg0yp1yg0yg

line 2 is: 1og0yg0og0yg1op1op1og0yg0yp0yp1yg0op1op1op0yg1yg1yg1op1yp1og0og1og1op1og1op1og0yp1og1yg1op1op1op0yp

line 3 is: 0yp1og1op1og0og0yg1og1yg0yg1op1op0yp1yg

line 4 is: 1op0yg1og1yp0yg1og1og0yp

line 5 is: 1og0op0yp0yp1op0op1yp1yp0yp1op1og1op1op1yg0yg0yg

line 6 is: 1og0op1yp0yp0yp0yp1op1yg1op1og0og0yp

line 7 is: 1og0yp1op1og0yp0yp1yg1op1og0og0yp1og1op0og1yp1yg0og0yg

Total Characters Read: 456

Normalizeing line 0
Line 0 is now: 010111111001110100011100111011100011000001110000100100011111101011100100010011110110
Normalizeing line 1
Line 1 is now: 111110010110100110101100000111101000101111011111100101100100011010111011
Normalizeing line 2
Line 2 is now: 101011001011100100101011010010111000100100011111111100110101001101100101100101010101111100100100010
Normalizeing line 3
Line 3 is now: 010101100101001011101111011100100010111
Normalizeing line 4
Line 4 is now: 100011101110011101101010
Normalizeing line 5
Line 5 is now: 101000010010100000110110010100101100100111011011
Normalizeing line 6
Line 6 is now: 101000110010010010100111100101001010
Normalizeing line 7
Line 7 is now: 101010100101010010111100101001010101100001110111001011

Combined String: 010111111001110100011100111011100011000001110000100100011111101011100100010011110110111110010110100110101100000111101000101111011111100101100100011010111011101011001011100100101011010010111000100100011111111100110101001101100101100101010101111100100100010010101100101001011101111011100100010111100011101110011101101010101000010010100000110110010100101100100111011011101000110010010010100111100101001010101010100101010010111100101001010101100001110111001011
XORING with 011010
Resulting string 001101100011101110000110100001111001011011101010111110000101110001111110001001101100100100001100111100110110011101110010110101000101111111111110000000100001110001010001111110110001001000100010111110000101100110101111010111111111111111001111100110111110001000110110110011000111100001111110001101111001110100000111110000110010001000111010101100001110110110111101000001110010101000001000111101111111010000110000111111001000100110110011001111111011101101010001

String split into 5's for decoding:
00110 11000 11101 11000 01101 00001 11100 10110 11101 01011 11100 00101 11000 11111 10001 00110 11001 00100 00110 01111 00110 11001 11011 10010 11010 10001 01111 11111 11100 00000 10000 11100 01010 00111 11101 10001 00100 01000 10111 11000 01011 00110 10111 10101 11111 11111 11110 01111 10011 01111 10001 00011 01101 10011 00011 11000 01111 11000 11011 11001 11010 00001 11110 00011 00100 01000 11101 01011 00001 11011 01101 11101 00000 11100 10101 00000 10001 11101 11111 10100 00110 00011 11110 01000 10011 01100 11001 11111 10111 01101 01000 1

Debaconing:
GY YNB W L FY RGZEGPGZ S RP  AQ KH REIXYLGXV   PTPRDNTDYPY Z B DEI LB N A VAR  UGD ITMZ XNI

Removing Spaces

001101100011101110000110100001111001011011101010111110000101110001111110001001101100100100001100111100110110011101110010110101000101111111111110000000100001110001010001111110110001001000100010111110000101100110101111010111111111111111001111100110111110001000110110110011000111100001111110001101111001110100000111110000110010001000111010101100001110110110111101000001110010101000001000111101111111010000110000111111001000100110110011001111111011101101010001

Shifting String
Buffer:
001101100011101110000110100001111001011011101010111110000101110001111110001001101100100100001100111100110110011101110010110101000101111111111110000000100001110001010001111110110001001000100010111110000101100110101111010111111111111111001111100110111110001000110110110011000111100001111110001101111001110100000111110000110010001000111010101100001110110110111101000001110010101000001000111101111111010000110000111111001000100110110011001111111011101101010001

011011000111011100001101000011110010110111010101111100001011100011111100010011011001001000011001111001101100111011100101101010001011111111111100000001000011100010100011111101100010010001000101111100001011001101011110101111111111111110011111001101111100010001101101100110001111000011111100011011110011101000001111100001100100010001110101011000011101101101111010000011100101010000010001111011111110100001100001111110010001001101100110011111110111011010100010

String split into 5's for decoding:
01101 10001 11011 10000 11010 00011 11001 01101 11010 10111 11000 01011 10001 11111 00010 01101 10010 01000 01100 11110 01101 10011 10111 00101 10101 00010 11111 11111 11000 00001 00001 11000 10100 01111 11011 00010 01000 10001 01111 10000 10110 01101 01111 01011 11111 11111 11100 11111 00110 11111 00010 00110 11011 00110 00111 10000 11111 10001 10111 10011 10100 00011 11100 00110 01000 10001 11010 10110 00011 10110 11011 11010 00001 11001 01010 00001 00011 11011 11111 01000 01100 00111 11100 10001 00110 11001 10011 11111 01110 11010 10001 0

Debaconing:
NR Q DZN XYLR CNSIM NTXFVC  YBBYUP CIRPQWNPL    G CG GHQ RXTUD GIR WDW  BZKBD  IMH RGZT O R

EDIT: It is also important to note that the trial I posted above used 1 for yellow, 0 for orange, 1 for green, and 0 for purple. (You can change this by specifying -n [0 or 1 or 2 or 3] I ran it with the other possibilities as well and still didn't get your result.
11  Bitcoin / Bitcoin Discussion / Re: The Legend of Satoshi Nakamato, FINAL STEP PUBLISHED.... 4.87 BTC GRAND PRIZE! on: January 17, 2018, 06:17:11 AM
@chubbychew, I have updated my code (posted below) so that it can xor bitstrings. That said, I did not find your string "AEIEMHAZYGPBBLMHJCSIQXADYMOZ "

Here is my code:

debacon.c
Code:
#include "cyphers.h"

int main(int argc, char* argv[]){
FILE* scram;
int opt;
int fcheck = 0;
int nflag = 0;
int btype = 0;
int bitflip = 0;
char** line = malloc(sizeof(char *) * 16);
int i = 0;
int j = 0;
int k = 0;
size_t len = 0;
int ntot = 0;
char* buffer;
char* bitstring;
char* temp;
int runBacon = 0;
int runHex = 0;
int xorit = 0;
int runDNA = 0;
int runRNA = 0;
int verbose = 0;

while((opt = getopt(argc, argv, "hvf:a:n:i:x:HBDR")) != -1){
switch(opt){
case 'h':
printf("\nUSAGE: ./decode -f path_to_input_file type_of_decode options\n");
printf("OPTIONS: -f [FILENAME] to specify input file\n");
printf("OPTIONS: -v for verbose mode\n");
printf("OPTIONS: -a [a or b] to specify which type of bacon alphebet (Bacon Cypher Only)\n");
printf("OPTIONS: -n [0 or 1 or 2 or 3] to specify how the bitstring should be read\n");
printf("OPTIONS: -i [t or f] to specify how 0's and 1's are read from the bitstring\n");
printf("OPTIONS: -x [bitstring] to xor bits with given bitstring\n");
printf("OPTIONS: -B for Bacon Cypher\n");
printf("OPTIONS: -H for HEX conversion\n");
printf("OPTIONS: -D for DNA RNA Stop Codon Cypher Version 1 (Provide Bases or Flame Colors)\n");
printf("OPTIONS: -R for DNA RNA Stop Codon Cypher Version 2 (Flame Pairs Only)\n");
printf("OPTIONS: -h displays this menu\n");
printf("\nEXAMPLE: ./decode -f file -B -a b -n 2 -i f -v\n");
exit(EXIT_SUCCESS);
case 'f':
scram = fopen(optarg, "r");
fcheck = 1;
break;
case 'v':
printf("\nTurning on Verbose Mode...\n");
verbose = 1;
break;
case 'a':
if(optarg[0] == 'a' || optarg[0] == 'A'){
btype = 0;
} else if(optarg[0] == 'b' || optarg[0] == 'B'){
btype = 1;
} else{
printf("\nERROR: Invalid argument for for -a option, must be a or b\n");
exit(EXIT_FAILURE);
}
break;
case 'n':
if(atoi(optarg) < 4){
nflag = atoi(optarg);
} else{
printf("\nERROR: Invalid argument for -n option, must be 0, 1, 2, or 3\n");
}
break;
case 'i':
if(optarg[0] == 't' || optarg[0] == 'T'){
bitflip = 1;
}
break;
case 'x':
xorit = 1;
bitstring = malloc(sizeof(char*) * strlen(optarg));
strcpy(bitstring, optarg);
break;
case 'B':
if(runHex == 1){
printf("\nERROR: Cannot run Bacon Cypher and Hex conversion together\n");
exit(EXIT_FAILURE);
} else if(runDNA == 1 || runRNA == 1){
printf("\nERROR: Cannot run Bacon Cypher and DNA RNA conversion together\n");
exit(EXIT_FAILURE);
} else{
runBacon = 1;
}
break;
case 'H':
if(runBacon == 1){
printf("\nERROR: Cannot run Bacon Cypher and Hex conversion together\n");
exit(EXIT_FAILURE);
} else if(runDNA== 1 || runRNA == 1){
printf("\nERROR: Cannot run DNA RNA Cypher and Hex conversion together\n");
exit(EXIT_FAILURE);
} else{
runHex = 1;
}
break;
case 'D':
if(runHex == 1){
printf("\nERROR: Cannot run Hex conversion and DNA RNA Cypher together\n");
exit(EXIT_FAILURE);
} else if(runBacon == 1){
printf("\nERROR: Cannot run Bacon Cypher and DNA RNA Cypher together\n");
exit(EXIT_FAILURE);
} else if(runRNA == 1){
printf("\nERROR: Cannot run both versions of DNA RNA Cypher together\n");
exit(EXIT_FAILURE);
} else{
runDNA = 1;
}
break;
case 'R':
if(runHex == 1){
printf("\nERROR: Cannot run Hex conversion and DNA RNA Cypher together\n");
exit(EXIT_FAILURE);
} else if(runBacon == 1){
printf("\nERROR: Cannot run Bacon Cypher and DNA RNA Cypher together\n");
exit(EXIT_FAILURE);
} else if(runDNA == 1){
printf("\nERROR: Cannot run both versions of DNA RNA Cypher together\n");
exit(EXIT_FAILURE);
} else{
runRNA = 1;
}
break;
default:
printf("ERROR: Unrecognized option, try -h\n");
exit(EXIT_FAILURE);
}
}

if(fcheck == 0){
printf("ERROR: Must specify input file, try -h\n");
exit(EXIT_FAILURE);
} else if(argc <= 3){
printf("ERROR: Must specify -H, -B, -D or -R.., try -h for help\n");
}

i = getlines(scram, &line, &ntot, len);

if(verbose == 1){
for(j = 0; j < i; j++){
printf("line %i is: %s\n", j, line[j]);
}
printf("Total Characters Read: %i\n\n", ntot);
j = 0;
}

buffer = malloc(sizeof(char) * ntot * 5);
temp = malloc(sizeof(char) * ntot * 5);

if(runDNA == 1){
for(j = 0; j < i; j++){
line[j] = normalize(line[j], 8);
}
j = 1;
strcpy(buffer, line[0]);
for(j = 1; j < i; j++){
strcat(buffer, line[j]);
}

if(verbose == 1){
printf("\nCombined String: %s\n", buffer);
}

for(k = 0; k <= strlen(buffer); k++){
divideString(buffer, 3);
if(verbose == 1){
printf("\nString split into 3's for decoding:\n");
printf("%s\n", buffer);
printf("\nDNA RNA Cypher Decode\n");
}
deRNA(buffer);
shift(buffer, verbose);
}
for(j = 0; j <= i; j++){
free(line[j]);
}
free(line);
free(buffer);
free(temp);
if(xorit == 1){
free(bitstring);
}
fclose(scram);
return 0;
} else if(runRNA == 1){
for(j = 0; j < i; j++){
line[j] = normalize(line[j], 8);
}
j = 1;
strcpy(buffer, line[0]);
for(j = 1; j < i; j++){
strcat(buffer, line[j]);
}
for(j = 0; j <= i; j++){
free(line[j]);
}
free(line);
free(buffer);
free(temp);
if(xorit == 1){
free(bitstring);
}
fclose(scram);
return 0;
}

for(j = 0; j < i; j++){
         if(verbose == 1){
                 printf("Normalizeing line %i\n", j);
                }
                if(bitflip == 1){
                 flip(line[j]);
                }
                line[j] = normalize(line[j], nflag);
                if(verbose == 1){
                 printf("Line %i is now: %s\n", j, line[j]);
                }
}

        j = 1;
        strcpy(buffer, line[0]);
        for(j = 1; j < i; j++){
         strcat(buffer, line[j]);
        }

        if(verbose == 1){
         printf("\nCombined String: %s\n", buffer);
        }

if(xorit == 1){
if(verbose == 1){
printf("XORING with %s\n", bitstring);
}
xors(buffer, bitstring);
if(verbose == 1){
printf("Resulting string %s\n", buffer);
}
}

if(runBacon == 1){
for(k = 0; k <= strlen(buffer); k++){
divideString(buffer, 5);
if(verbose == 1){
printf("\nString split into 5's for decoding:\n");
printf("%s\n", buffer);

printf("\nDebaconing:\n");
}
debacon(buffer, btype);

shift(buffer, verbose);
}
}

if(runHex == 1){
for(k = 0; k <= strlen(buffer); k++){
if(strlen(buffer)%4 != 0){
switch(strlen(buffer)%4){
case 1:
temp[0] = '0';
temp[1] = '0';
temp[2] = '0';
temp[3] = '\0';
strcat(temp, buffer);
break;
case 2:
temp[0] = '0';
temp[1] = '0';
temp[2] = '\0';
strcat(temp, buffer);
break;
case 3:
temp[0] = '0';
temp[1] = '\0';
strcat(temp, buffer);
break;
default:
printf("Something bad happened...\n");
break;
}
} else{
strcpy(temp, buffer);
}
divideString(temp, 4);
if(verbose == 1){
printf("\nString split into 4's\n");
printf("%s\n", temp);
printf("\nConverting to Hex:\n");
}
deHex(temp);
clean(temp, verbose);
shift(buffer, verbose);

}
}
j = 0;
for(j = 0; j <= i; j++){
free(line[j]);
}
free(line);
if(xorit == 1){
free(bitstring);
}
fclose(scram);
free(buffer);
free(temp);
return 0;
}

cyphers.h
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

void shift(char* string, int verbose);
int getlines(FILE* stream, char*** line, int* ntot, size_t len);
char* normalize(char* string, int nflag);
void clean(char* string, int verbose);
void divideString(char* string, int n);
void debacon(char* string, int btype);
void flip(char* string);
void deHex(char* string);
void deRNA(char* string);
void xors(char* string1, char* string2);

cyphers.c
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

void flip(char *string){
        char *i;
        for(i=string; *i; i++){
                if(*i == '1'){
                        *i = '0';
                } else if(*i == '0'){
                        *i = '1';
                }
        }
}

void deHex(char *string){
        char buffer[5];
        int i = 0;

        while(string[i] != '\0'){
                buffer[0] = string[i];
                i++;
                buffer[1] = string[i];
                i++;
                buffer[2] = string[i];
                i++;
                buffer[3] = string[i];
                buffer[4] = '\0';
                i+=2;

                if(strcmp(buffer, "0000") == 0){
                        printf("0");
                } else if(strcmp(buffer, "0001") == 0){
                        printf("1");
                } else if(strcmp(buffer, "0010") == 0){
                        printf("2");
                } else if(strcmp(buffer, "0011") == 0){
                        printf("3");
                } else if(strcmp(buffer, "0100") == 0){
                        printf("4");
                } else if(strcmp(buffer, "0101") == 0){
                        printf("5");
                } else if(strcmp(buffer, "0110") == 0){
                        printf("6");
                } else if(strcmp(buffer, "0111") == 0){
                        printf("7");
                } else if(strcmp(buffer, "1000") == 0){
                        printf("8");
                } else if(strcmp(buffer, "1001") == 0){
                        printf("9");
                } else if(strcmp(buffer, "1010") == 0){
                        printf("A");
                } else if(strcmp(buffer, "1011") == 0){
                        printf("B");
                } else if(strcmp(buffer, "1100") == 0){
                        printf("C");
                } else if(strcmp(buffer, "1101") == 0){
                        ;printf("D");
                } else if(strcmp(buffer, "1110") == 0){
                        printf("E");
                } else if(strcmp(buffer, "1111") == 0){
                        printf("F");
                } else{
                        printf(" ");
                }
        }
        printf("\n");
}

void divideString(char *string, int n){
        int size = strlen(string);
        int i = 1;
        int j = 1;
        char* buffer = malloc(sizeof(char* ) * strlen(string) * 2);

        strcpy(buffer,string);
        string[0] = buffer[0];

        for(i = 1; j < size; i++){
                if(j%n == 0){
                        string[i] = ' ';
                        i++;
                }
                        string[i] = buffer[j];
                        j++;
        }
        string[i] = '\0';
        free(buffer);
}

int getlines(FILE* stream, char*** line, int* ntot, size_t len){
        int i = 0;
int max = 16;
ssize_t nread;

while((nread = getline(&(*line)[i], &len, stream)) != -1){
if(i == (max-1)){
max = max*2;
*line = realloc(*line, sizeof(char*) * max);
if(*line == NULL){
printf("ERROR: Memmory Allocation Failed\n");
exit(EXIT_FAILURE);
}
}
*ntot += (nread - 1);
i++;
}
 
        return i;
}

void shift(char* string, int verbose){
        char *nospace = string;
        char *temp = string;
char* buffer = malloc(sizeof(char* ) * strlen(string) * 2);

        char t;
        int i = 0;
        int size;

        if(verbose == 1){
                printf("\nRemoving Spaces\n");
        }
        while(*temp != 0){
                *nospace = *temp++;
                if(*nospace != ' '){
                        nospace++;
                }
        }
        *nospace = 0;
        if(verbose == 1){
                printf("\n%s\n", string);
                printf("\nShifting String\n");
        }
        strcpy(buffer, string);
        if(verbose == 1){
                printf("Buffer: \n%s\n\n", buffer);
        }
        t = string[0];
        size = strlen(string);
        for(i = 0; i < (size-1); i++){
                string[i] = buffer[i+1];
        }
        string[i] = t;
        string[i+1] = '\0';
        if(verbose == 1){
                printf("%s\n", string);
        }
free(buffer);
}

void clean(char* string, int verbose){
        char *nospace = string;
        char *temp = string;

        if(verbose == 1){
                printf("\nRemoving Spaces\n");
        }
        while(*temp != 0){
                *nospace = *temp++;
                if(*nospace != ' '){
                        nospace++;
                }
        }
        *nospace = 0;
}

char* normalize(char* string, int nflag){
        char *i;
        switch(nflag){
                case 0:
                        for(i=string; *i; i++){ 
                                if(*i == 'y' || *i == 'Y'){
                                        *i = '1';
                                } else if(*i == 'o' || *i == 'O'){
                                        *i = '0';
                                } else if(*i == 'g' || *i == 'G'){
                                        *i = '1';
                                } else if(*i == 'p' || *i == 'P' || *i == 'b' || *i == 'B'){
                                        *i = '0';
                                } else if(*i == '\n'){
                                        *i = '\0';
                                }
                        }
                        return string;
                case 1:
                        for(i=string; *i; i++){ 
                                if(*i == 'y' || *i == 'Y'){
                                        *i = '0';
                                } else if(*i == 'o' || *i == 'O'){
                                        *i = '1';
                                } else if(*i == 'g' || *i == 'G'){
                                        *i = '1';
                                } else if(*i == 'p' || *i == 'P' || *i == 'b' || *i == 'B'){
                                        *i = '0';
                                } else if(*i == '\n'){
                                        *i = '\0';
                                }
                        }
                        return string;
                case 2:
                        for(i=string; *i; i++){   
                                if(*i == 'y' || *i == 'Y'){
                                        *i = '1';
                                } else if(*i == 'o' || *i == 'O'){
                                        *i = '0';
                                } else if(*i == 'g' || *i == 'G'){
                                        *i = '0';
                                } else if(*i == 'p' || *i == 'P' || *i == 'b' || *i == 'B'){
                                        *i = '1';
                                } else if(*i == '\n'){
                                        *i = '\0';
                                }
                        }
                        return string;
                case 3: 
                        for(i=string; *i; i++){
                                if(*i == 'y' || *i == 'Y'){
                                        *i = '0';
                                } else if(*i == 'o' || *i == 'O'){
                                        *i = '1';
                                } else if(*i == 'g' || *i == 'G'){
                                        *i = '0';
                                } else if(*i == 'p' || *i == 'P' || *i == 'b' || *i == 'B'){
                                        *i = '1';
                                } else if(*i == '\n'){
                                        *i = '\0';
                                }
                        }
                        return string;
                case 8: 
                        for(i=string; *i; i++){
                                if(*i == '\n'){
                                        *i = '\0';
                                }
                        }
                        return string;
                default:
                        printf("\nERROR: Could not normalize stirng\n");
                        return string;
        }
}

void deRNA(char *string){
char buffer[4];
int i = 0;

while(string[i] != '\0'){
buffer[0] = string[i];
i++;
buffer[1] = string[i];
i++;
buffer[2] = string[i];
buffer[3] = '\0';
i+=2;

if(strcmp(buffer, "yyy") == 0 || strcmp(buffer, "YYY") == 0 || strcmp(buffer, "ttt") == 0 || strcmp(buffer, "TTT") == 0 || strcmp(buffer, "uuu") == 0 || strcmp(buffer, "UUU") == 0){
printf("F");
} if(strcmp(buffer, "yyp") == 0 || strcmp(buffer, "YYP") == 0 || strcmp(buffer, "yyb") == 0 || strcmp(buffer, "YYB") == 0 || strcmp(buffer, "ttc") == 0 || strcmp(buffer, "TTC") == 0 || strcmp(buffer, "uuc") == 0 || strcmp(buffer, "UUC") == 0){
printf("F");
} if(strcmp(buffer, "yyo") == 0 || strcmp(buffer, "YYO") == 0 || strcmp(buffer, "yyr") == 0 || strcmp(buffer, "YYR") == 0 || strcmp(buffer, "tta") == 0 || strcmp(buffer, "TTA") == 0 || strcmp(buffer, "uua") == 0 || strcmp(buffer, "UUA") == 0){
printf("L");
} if(strcmp(buffer, "yyg") == 0 || strcmp(buffer, "YYG") == 0 || strcmp(buffer, "ttg") == 0 || strcmp(buffer, "TTG") == 0 || strcmp(buffer, "uug") == 0 || strcmp(buffer, "UUG") == 0){
printf("L");
} if(strcmp(buffer, "pyy") == 0 || strcmp(buffer, "PYY") == 0 || strcmp(buffer, "byy") == 0 || strcmp(buffer, "BYY") == 0 || strcmp(buffer, "ctt") == 0 || strcmp(buffer, "CTT") == 0 || strcmp(buffer, "cuu") == 0 || strcmp(buffer, "CUU") == 0){
printf("L");
} if(strcmp(buffer, "pyp") == 0 || strcmp(buffer, "PYP") == 0 || strcmp(buffer, "byb") == 0 || strcmp(buffer, "BYB") == 0 || strcmp(buffer, "ctc") == 0 || strcmp(buffer, "CTC") == 0 || strcmp(buffer, "cuc") == 0 || strcmp(buffer, "CUC") == 0){
printf("L");
} if(strcmp(buffer, "pyo") == 0 || strcmp(buffer, "PYO") == 0 || strcmp(buffer, "byo") == 0 || strcmp(buffer, "BYO") == 0 || strcmp(buffer, "pyr") == 0 || strcmp(buffer, "PYR") == 0 || strcmp(buffer, "byr") == 0 || strcmp(buffer, "BYR") == 0 || strcmp(buffer, "cta") == 0 || strcmp(buffer, "CTA") == 0 || strcmp(buffer, "cua") == 0 || strcmp(buffer, "CUA") == 0){
printf("L");
} if(strcmp(buffer, "pyg") == 0 || strcmp(buffer, "PYG") == 0 || strcmp(buffer, "byg") == 0 || strcmp(buffer, "bYG") == 0 || strcmp(buffer, "cug") == 0 || strcmp(buffer, "CUG") == 0 || strcmp(buffer, "ctg") == 0 || strcmp(buffer, "CTG") == 0){
printf("L");
} if(strcmp(buffer, "oyy") == 0 || strcmp(buffer, "OYY") == 0 || strcmp(buffer, "ryy") == 0 || strcmp(buffer, "RYY") == 0 || strcmp(buffer, "auu") == 0 || strcmp(buffer, "AUU") == 0 || strcmp(buffer, "att") == 0 || strcmp(buffer, "ATT") == 0){
printf("I");
} if(strcmp(buffer, "oyp") == 0 || strcmp(buffer, "OYP") == 0 || strcmp(buffer, "oyb") == 0 || strcmp(buffer, "OYB") == 0 || strcmp(buffer, "ryp") == 0 || strcmp(buffer, "RYP") == 0 || strcmp(buffer, "ryb") == 0 || strcmp(buffer, "RYB") == 0 || strcmp(buffer, "atc") == 0 || strcmp(buffer, "ATC") == 0 || strcmp(buffer, "auc") == 0 || strcmp(buffer, "AUC") == 0){
printf("I");
} if(strcmp(buffer, "oyo") == 0 || strcmp(buffer, "OYO") == 0 || strcmp(buffer, "ryr") == 0 || strcmp(buffer, "RYR") == 0 || strcmp(buffer, "aua") == 0 || strcmp(buffer, "AUA") == 0 || strcmp(buffer, "ata") == 0 || strcmp(buffer, "ATA") == 0){
printf("I");
} if(strcmp(buffer, "oyg") == 0 || strcmp(buffer, "OYG") == 0 || strcmp(buffer, "ryg") == 0 || strcmp(buffer, "RYG") == 0 || strcmp(buffer, "aug") == 0 || strcmp(buffer, "AUG") == 0 || strcmp(buffer, "atg") == 0 || strcmp(buffer, "ATG") == 0){
printf(" - M - ");
} if(strcmp(buffer, "gyy") == 0 || strcmp(buffer, "GYY") == 0 || strcmp(buffer, "guu") == 0 || strcmp(buffer, "GUU") == 0 || strcmp(buffer, "gtt") == 0 || strcmp(buffer, "GTT") == 0){
printf("V");
} if(strcmp(buffer, "gyp") == 0 || strcmp(buffer, "GYP") == 0 || strcmp(buffer, "gyb") == 0 || strcmp(buffer, "GYB") == 0 || strcmp(buffer, "guc") == 0 || strcmp(buffer, "GUC") == 0 || strcmp(buffer, "gtc") == 0 || strcmp(buffer, "GTC") == 0){
printf("V");
} if(strcmp(buffer, "gyo") == 0 || strcmp(buffer, "GYO") == 0 || strcmp(buffer, "gyr") == 0 || strcmp(buffer, "GYR") == 0 || strcmp(buffer, "gua") == 0 || strcmp(buffer, "GUA") == 0 || strcmp(buffer, "gta") == 0 || strcmp(buffer, "GTA") == 0){
printf("V");
} if(strcmp(buffer, "gyg") == 0 || strcmp(buffer, "GYG") == 0 || strcmp(buffer, "gug") == 0 || strcmp(buffer, "GUG") == 0 || strcmp(buffer, "gtg") == 0 || strcmp(buffer, "GTG") == 0){
printf("V");
} if(strcmp(buffer, "ypy") == 0 || strcmp(buffer, "YPY") == 0 || strcmp(buffer, "yby") == 0 || strcmp(buffer, "YBY") == 0 || strcmp(buffer, "ucu") == 0 || strcmp(buffer, "UCU") == 0 || strcmp(buffer, "tct") == 0 || strcmp(buffer, "TCT") == 0){
printf("S");
} if(strcmp(buffer, "ypp") == 0 || strcmp(buffer, "YPP") == 0 || strcmp(buffer, "ybb") == 0 || strcmp(buffer, "YBB") == 0 || strcmp(buffer, "ucc") == 0 || strcmp(buffer, "UCC") == 0 || strcmp(buffer, "tcc") == 0 || strcmp(buffer, "TCC") == 0){
printf("S");
} if(strcmp(buffer, "ypo") == 0 || strcmp(buffer, "YPO") == 0 || strcmp(buffer, "ybo") == 0 || strcmp(buffer, "YBO") == 0 || strcmp(buffer, "ypr") == 0 || strcmp(buffer, "YPR") == 0 || strcmp(buffer, "ybr") == 0 || strcmp(buffer, "YBR") == 0 || strcmp(buffer, "uca") == 0 || strcmp(buffer, "UCA") == 0 || strcmp(buffer, "tca") == 0 || strcmp(buffer, "TCA") == 0){
printf("S");
} if(strcmp(buffer, "ypg") == 0 || strcmp(buffer, "YPG") == 0 || strcmp(buffer, "ybg") == 0 || strcmp(buffer, "YBG") == 0 || strcmp(buffer, "ucg") == 0 || strcmp(buffer, "UCG") == 0 || strcmp(buffer, "tcg") == 0 || strcmp(buffer, "TCG") == 0){
printf("S");
} if(strcmp(buffer, "ppy") == 0 || strcmp(buffer, "PPY") == 0 || strcmp(buffer, "bby") == 0 || strcmp(buffer, "BBY") == 0 || strcmp(buffer, "ccu") == 0 || strcmp(buffer, "CCU") == 0 || strcmp(buffer, "cct") == 0 || strcmp(buffer, "CCT") == 0){
printf("P");
} if(strcmp(buffer, "ppp") == 0 || strcmp(buffer, "PPP") == 0 || strcmp(buffer, "bbb") == 0 || strcmp(buffer, "BBB") == 0 || strcmp(buffer, "ccc") == 0 || strcmp(buffer, "CCC") == 0){
printf("P");
} if(strcmp(buffer, "ppo") == 0 || strcmp(buffer, "PPO") == 0 || strcmp(buffer, "bbo") == 0 || strcmp(buffer, "BBO") == 0 || strcmp(buffer, "ppr") == 0 || strcmp(buffer, "PPR") == 0 || strcmp(buffer, "bbr") == 0 || strcmp(buffer, "BBR") == 0 || strcmp(buffer, "cca") == 0 || strcmp(buffer, "CCA") == 0){
printf("P");
} if(strcmp(buffer, "ppg") == 0 || strcmp(buffer, "PPG") == 0 || strcmp(buffer, "bbg") == 0 || strcmp(buffer, "BBG") == 0 || strcmp(buffer, "ccg") == 0 || strcmp(buffer, "CCG") == 0){
printf("P");
} if(strcmp(buffer, "opy") == 0 || strcmp(buffer, "OPY") == 0 || strcmp(buffer, "oby") == 0 || strcmp(buffer, "OBY") == 0 || strcmp(buffer, "rpy") == 0 || strcmp(buffer, "RPY") == 0 || strcmp(buffer, "rby") == 0 || strcmp(buffer, "RBY") == 0 || strcmp(buffer, "acu") == 0 || strcmp(buffer, "ACU") == 0 || strcmp(buffer, "act") == 0 || strcmp(buffer, "ACT") == 0){
printf("T");
} if(strcmp(buffer, "opp") == 0 || strcmp(buffer, "OPP") == 0 || strcmp(buffer, "obb") == 0 || strcmp(buffer, "OBB") == 0 || strcmp(buffer, "rpp") == 0 || strcmp(buffer, "RPP") == 0 || strcmp(buffer, "rbb") == 0 || strcmp(buffer, "RBB") == 0 || strcmp(buffer, "acc") == 0 || strcmp(buffer, "ACC") == 0){
printf("T");
} if(strcmp(buffer, "opo") == 0 || strcmp(buffer, "OPO") == 0 || strcmp(buffer, "obo") == 0 || strcmp(buffer, "OBO") == 0 || strcmp(buffer, "rpr") == 0 || strcmp(buffer, "RPR") == 0 || strcmp(buffer, "rbr") == 0 || strcmp(buffer, "RBR") == 0 || strcmp(buffer, "aca") == 0 || strcmp(buffer, "ACA") == 0){
printf("T");
} if(strcmp(buffer, "opg") == 0 || strcmp(buffer, "OPG") == 0 || strcmp(buffer, "obg") == 0 || strcmp(buffer, "OBG") == 0 || strcmp(buffer, "rpg") == 0 || strcmp(buffer, "RPG") == 0 || strcmp(buffer, "rbg") == 0 || strcmp(buffer, "RBG") == 0 || strcmp(buffer, "acg") == 0 || strcmp(buffer, "ACG") == 0){
printf("T");
} if(strcmp(buffer, "gpy") == 0 || strcmp(buffer, "GPY") == 0 || strcmp(buffer, "gby") == 0 || strcmp(buffer, "GBY") == 0 || strcmp(buffer, "gcu") == 0 || strcmp(buffer, "GCU") == 0 || strcmp(buffer, "gct") == 0 || strcmp(buffer, "GCT") == 0){
printf("A");
} if(strcmp(buffer, "gpp") == 0 || strcmp(buffer, "GPP") == 0 || strcmp(buffer, "gbb") == 0 || strcmp(buffer, "GBB") == 0 || strcmp(buffer, "gcc") == 0 || strcmp(buffer, "GCC") == 0){
printf("A");
} if(strcmp(buffer, "gpo") == 0 || strcmp(buffer, "GPO") == 0 || strcmp(buffer, "gbo") == 0 || strcmp(buffer, "GBO") == 0 || strcmp(buffer, "gpr") == 0 || strcmp(buffer, "GPR") == 0 || strcmp(buffer, "gbr") == 0 || strcmp(buffer, "GBR") == 0 || strcmp(buffer, "gca") == 0 || strcmp(buffer, "GCA") == 0){
printf("A");
} if(strcmp(buffer, "gpg") == 0 || strcmp(buffer, "GPG") == 0 || strcmp(buffer, "gbg") == 0 || strcmp(buffer, "GBG") == 0 || strcmp(buffer, "gcg") == 0 || strcmp(buffer, "GCG") == 0){
printf("A");
} if(strcmp(buffer, "yoy") == 0 || strcmp(buffer, "YOY") == 0 || strcmp(buffer, "yry") == 0 || strcmp(buffer, "YRY") == 0 || strcmp(buffer, "uau") == 0 || strcmp(buffer, "UAU") == 0 || strcmp(buffer, "tat") == 0 || strcmp(buffer, "TAT") == 0){
printf("Y");
} if(strcmp(buffer, "yop") == 0 || strcmp(buffer, "YOP") == 0 || strcmp(buffer, "yob") == 0 || strcmp(buffer, "YOB") == 0 || strcmp(buffer, "yrp") == 0 || strcmp(buffer, "YRP") == 0 || strcmp(buffer, "yrb") == 0 || strcmp(buffer, "YRB") == 0 || strcmp(buffer, "uac") == 0 || strcmp(buffer, "UAC") == 0 || strcmp(buffer, "tac") == 0 || strcmp(buffer, "TAC") == 0){
printf("Y");
} if(strcmp(buffer, "yoo") == 0 || strcmp(buffer, "YOO") == 0 || strcmp(buffer, "yrr") == 0 || strcmp(buffer, "YRR") == 0 || strcmp(buffer, "uaa") == 0 || strcmp(buffer, "UAA") == 0 || strcmp(buffer, "taa") == 0 || strcmp(buffer, "TAA") == 0){
printf(" STOP ");
} if(strcmp(buffer, "yog") == 0 || strcmp(buffer, "YOG") == 0 || strcmp(buffer, "yrg") == 0 || strcmp(buffer, "YRG") == 0 || strcmp(buffer, "uag") == 0 || strcmp(buffer, "UAG") == 0 || strcmp(buffer, "tag") == 0 || strcmp(buffer, "TAG") == 0){
printf(" STOP ");
} if(strcmp(buffer, "poy") == 0 || strcmp(buffer, "POY") == 0 || strcmp(buffer, "boy") == 0 || strcmp(buffer, "BOY") == 0 || strcmp(buffer, "pry") == 0 || strcmp(buffer, "PRY") == 0 || strcmp(buffer, "bry") == 0 || strcmp(buffer, "BRY") == 0 || strcmp(buffer, "cau") == 0 || strcmp(buffer, "CAU") == 0 || strcmp(buffer, "cat") == 0 || strcmp(buffer, "CAT") == 0){
printf("H");
} if(strcmp(buffer, "pop") == 0 || strcmp(buffer, "POP") == 0 || strcmp(buffer, "bob") == 0 || strcmp(buffer, "BOB") == 0 || strcmp(buffer, "prp") == 0 || strcmp(buffer, "PRP") == 0 || strcmp(buffer, "brb") == 0 || strcmp(buffer, "BRB") == 0 || strcmp(buffer, "cac") == 0 || strcmp(buffer, "CAC") == 0){
printf("H");
} if(strcmp(buffer, "poo") == 0 || strcmp(buffer, "POO") == 0 || strcmp(buffer, "boo") == 0 || strcmp(buffer, "BOO") == 0 || strcmp(buffer, "prr") == 0 || strcmp(buffer, "PRR") == 0 || strcmp(buffer, "brr") == 0 || strcmp(buffer, "BRR") == 0 || strcmp(buffer, "caa") == 0 || strcmp(buffer, "CAA") == 0){
printf("Q");
} if(strcmp(buffer, "pog") == 0 || strcmp(buffer, "POG") == 0 || strcmp(buffer, "bog") == 0 || strcmp(buffer, "BOG") == 0 || strcmp(buffer, "prg") == 0 || strcmp(buffer, "PRG") == 0 || strcmp(buffer, "brg") == 0 || strcmp(buffer, "BRG") == 0 || strcmp(buffer, "cag") == 0 || strcmp(buffer, "CAG") == 0){
printf("Q");
} if(strcmp(buffer, "ooy") == 0 || strcmp(buffer, "OOY") == 0 || strcmp(buffer, "rry") == 0 || strcmp(buffer, "RRY") == 0 || strcmp(buffer, "aau") == 0 || strcmp(buffer, "AAU") == 0 || strcmp(buffer, "aat") == 0 || strcmp(buffer, "AAT") == 0){
printf("N");
} if(strcmp(buffer, "oop") == 0 || strcmp(buffer, "OOP") == 0 || strcmp(buffer, "oob") == 0 || strcmp(buffer, "OOB") == 0 || strcmp(buffer, "rrp") == 0 || strcmp(buffer, "RRP") == 0 || strcmp(buffer, "rrb") == 0 || strcmp(buffer, "RRB") == 0 || strcmp(buffer, "aac") == 0 || strcmp(buffer, "AAC") == 0){
printf("N");
} if(strcmp(buffer, "ooo") == 0 || strcmp(buffer, "OOO") == 0 || strcmp(buffer, "rrr") == 0 || strcmp(buffer, "RRR") == 0 || strcmp(buffer, "aaa") == 0 || strcmp(buffer, "AAA") == 0){
printf("K");
} if(strcmp(buffer, "oog") == 0 || strcmp(buffer, "OOG") == 0 || strcmp(buffer, "rrg") == 0 || strcmp(buffer, "RRG") == 0 || strcmp(buffer, "aag") == 0 || strcmp(buffer, "AAG") == 0){
printf("K");
} if(strcmp(buffer, "goy") == 0 || strcmp(buffer, "GOY") == 0 || strcmp(buffer, "gry") == 0 || strcmp(buffer, "GRY") == 0 || strcmp(buffer, "gau") == 0 || strcmp(buffer, "GAU") == 0 || strcmp(buffer, "gat") == 0 || strcmp(buffer, "GAT") == 0){
printf("D");
} if(strcmp(buffer, "gop") == 0 || strcmp(buffer, "GOP") == 0 || strcmp(buffer, "gob") == 0 || strcmp(buffer, "GOB") == 0 || strcmp(buffer, "grp") == 0 || strcmp(buffer, "GRP") == 0 || strcmp(buffer, "grb") == 0 || strcmp(buffer, "GRB") == 0 || strcmp(buffer, "gac") == 0 || strcmp(buffer, "GAC") == 0){
printf("D");
} if(strcmp(buffer, "goo") == 0 || strcmp(buffer, "GOO") == 0 || strcmp(buffer, "grr") == 0 || strcmp(buffer, "GRR") == 0 || strcmp(buffer, "gaa") == 0 || strcmp(buffer, "GAA") == 0){
printf("E");
} if(strcmp(buffer, "gog") == 0 || strcmp(buffer, "GOG") == 0 || strcmp(buffer, "grg") == 0 || strcmp(buffer, "GRG") == 0 || strcmp(buffer, "gag") == 0 || strcmp(buffer, "GAG") == 0){
printf("E");
} if(strcmp(buffer, "ygy") == 0 || strcmp(buffer, "YGY") == 0 || strcmp(buffer, "ugu") == 0 || strcmp(buffer, "UGU") == 0 || strcmp(buffer, "tgt") == 0 || strcmp(buffer, "TGT") == 0){
printf("C");
} if(strcmp(buffer, "ygp") == 0 || strcmp(buffer, "YGP") == 0 || strcmp(buffer, "ygb") == 0 || strcmp(buffer, "YGB") == 0 || strcmp(buffer, "ugc") == 0 || strcmp(buffer, "UGC") == 0 || strcmp(buffer, "tgc") == 0 || strcmp(buffer, "TGC") == 0){
printf("C");
} if(strcmp(buffer, "ygo") == 0 || strcmp(buffer, "YGO") == 0 || strcmp(buffer, "ygr") == 0 || strcmp(buffer, "YGR") == 0 || strcmp(buffer, "uga") == 0 || strcmp(buffer, "UGA") == 0 || strcmp(buffer, "tga") == 0 || strcmp(buffer, "TGA") == 0){
printf(" STOP ");
} if(strcmp(buffer, "ygg") == 0 || strcmp(buffer, "YGG") == 0 || strcmp(buffer, "ugg") == 0 || strcmp(buffer, "UGG") == 0 || strcmp(buffer, "tgg") == 0 || strcmp(buffer, "TGG") == 0){
printf("W");
} if(strcmp(buffer, "pgy") == 0 || strcmp(buffer, "PGY") == 0 || strcmp(buffer, "bgy") == 0 || strcmp(buffer, "BGY") == 0 || strcmp(buffer, "cgu") == 0 || strcmp(buffer, "CGU") == 0 || strcmp(buffer, "cgt") == 0 || strcmp(buffer, "CGT") == 0){
printf("R");
} if(strcmp(buffer, "pgp") == 0 || strcmp(buffer, "PGP") == 0 || strcmp(buffer, "bgb") == 0 || strcmp(buffer, "BGB") == 0 || strcmp(buffer, "cgc") == 0 || strcmp(buffer, "CGC") == 0){
printf("R");
} if(strcmp(buffer, "pgo") == 0 || strcmp(buffer, "PGO") == 0 || strcmp(buffer, "bgo") == 0 || strcmp(buffer, "BGO") == 0 || strcmp(buffer, "pgr") == 0 || strcmp(buffer, "PGR") == 0 || strcmp(buffer, "bgr") == 0 || strcmp(buffer, "BGR") == 0 || strcmp(buffer, "cga") == 0 || strcmp(buffer, "CGA") == 0){
printf("R");
} if(strcmp(buffer, "pgg") == 0 || strcmp(buffer, "PGG") == 0 || strcmp(buffer, "bgg") == 0 || strcmp(buffer, "BGG") == 0 || strcmp(buffer, "cgg") == 0 || strcmp(buffer, "CGG") == 0){
printf("R");
} if(strcmp(buffer, "ogy") == 0 || strcmp(buffer, "OGY") == 0 || strcmp(buffer, "rgy") == 0 || strcmp(buffer, "RGY") == 0 || strcmp(buffer, "agu") == 0 || strcmp(buffer, "AGU") == 0 || strcmp(buffer, "agt") == 0 || strcmp(buffer, "AGT") == 0){
printf("S");
} if(strcmp(buffer, "ogp") == 0 || strcmp(buffer, "OGP") == 0 || strcmp(buffer, "ogb") == 0 || strcmp(buffer, "OGB") == 0 || strcmp(buffer, "rgp") == 0 || strcmp(buffer, "RGP") == 0 || strcmp(buffer, "rgb") == 0 || strcmp(buffer, "RGB") == 0 || strcmp(buffer, "agc") == 0 || strcmp(buffer, "AGC") == 0){
printf("S");
} if(strcmp(buffer, "ogo") == 0 || strcmp(buffer, "OGO") == 0 || strcmp(buffer, "rgr") == 0 || strcmp(buffer, "RGR") == 0 || strcmp(buffer, "aga") == 0 || strcmp(buffer, "AGA") == 0){
printf("R");
} if(strcmp(buffer, "ogg") == 0 || strcmp(buffer, "OGG") == 0 || strcmp(buffer, "rgg") == 0 || strcmp(buffer, "RGG") == 0 || strcmp(buffer, "agg") == 0 || strcmp(buffer, "AGG") == 0){
printf("R");
} if(strcmp(buffer, "ggy") == 0 || strcmp(buffer, "GGY") == 0 || strcmp(buffer, "ggu") == 0 || strcmp(buffer, "GGU") == 0 || strcmp(buffer, "ggt") == 0 || strcmp(buffer, "GGT") == 0){
printf("G");
} if(strcmp(buffer, "ggp") == 0 || strcmp(buffer, "GGP") == 0 || strcmp(buffer, "ggb") == 0 || strcmp(buffer, "GGB") == 0 || strcmp(buffer, "ggc") == 0 || strcmp(buffer, "GGC") == 0){
printf("G");
} if(strcmp(buffer, "ggo") == 0 || strcmp(buffer, "GGO") == 0 || strcmp(buffer, "ggr") == 0 || strcmp(buffer, "GGR") == 0 || strcmp(buffer, "gga") == 0 || strcmp(buffer, "GGA") == 0){
printf("G");
} if(strcmp(buffer, "ggg") == 0 || strcmp(buffer, "GGG") == 0){
printf("G");
} else{
printf(" ");
}
}
printf("\n");
}


void debacon(char *string, int btype){
char buffer[6];
int i = 0;

while(string[i] != '\0'){

buffer[0] = string[i];
i++;
buffer[1] = string[i];
i++;
buffer[2] = string[i];
i++;
buffer[3] = string[i];
i++;
buffer[4] = string[i];
buffer[5] = '\0';
i+=2;

if(btype == 0){
if(strcmp(buffer, "00000") == 0){
printf("A");
} else if(strcmp(buffer, "00001") == 0){
printf("B");
} else if(strcmp(buffer, "00010") == 0){
printf("C");
} else if(strcmp(buffer, "00011") == 0){
printf("D");
} else if(strcmp(buffer, "00100") == 0){
printf("E");
} else if(strcmp(buffer, "00101") == 0){
printf("F");
} else if(strcmp(buffer, "00110") == 0){
printf("G");
} else if(strcmp(buffer, "00111") == 0){
printf("H");
} else if(strcmp(buffer, "01000") == 0){
printf("J");
} else if(strcmp(buffer, "01001") == 0){
printf("K");
} else if(strcmp(buffer, "01010") == 0){
printf("L");
} else if(strcmp(buffer, "01011") == 0){
printf("M");
} else if(strcmp(buffer, "01100") == 0){
printf("N");
} else if(strcmp(buffer, "01101") == 0){
printf("O");
} else if(strcmp(buffer, "01110") == 0){
printf("P");
} else if(strcmp(buffer, "01111") == 0){
printf("Q");
} else if(strcmp(buffer, "10000") == 0){
printf("R");
} else if(strcmp(buffer, "10001") == 0){
printf("S");
} else if(strcmp(buffer, "10010") == 0){
printf("T");
} else if(strcmp(buffer, "10011") == 0){
printf("V");
} else if(strcmp(buffer, "10100") == 0){
printf("W");
} else if(strcmp(buffer, "10101") == 0){
printf("X");
} else if(strcmp(buffer, "10110") == 0){
printf("Y");
} else if(strcmp(buffer, "10111") == 0){
printf("Z");
} else{
printf(" ");
}
}
if(btype == 1){
if(strcmp(buffer, "00000") == 0){
printf("A");
} else if(strcmp(buffer, "00001") == 0){
printf("B");
} else if(strcmp(buffer, "00010") == 0){
printf("C");
} else if(strcmp(buffer, "00011") == 0){
printf("D");
} else if(strcmp(buffer, "00100") == 0){
printf("E");
} else if(strcmp(buffer, "00101") == 0){
printf("F");
} else if(strcmp(buffer, "00110") == 0){
printf("G");
} else if(strcmp(buffer, "00111") == 0){
printf("H");
} else if(strcmp(buffer, "01000") == 0){
printf("I");
} else if(strcmp(buffer, "01001") == 0){
printf("J");
} else if(strcmp(buffer, "01010") == 0){
printf("K");
} else if(strcmp(buffer, "01011") == 0){
printf("L");
} else if(strcmp(buffer, "01100") == 0){
printf("M");
} else if(strcmp(buffer, "01101") == 0){
printf("N");
} else if(strcmp(buffer, "01110") == 0){
printf("O");
} else if(strcmp(buffer, "01111") == 0){
printf("P");
} else if(strcmp(buffer, "10000") == 0){
printf("Q");
} else if(strcmp(buffer, "10001") == 0){
printf("R");
} else if(strcmp(buffer, "10010") == 0){
printf("S");
} else if(strcmp(buffer, "10011") == 0){
printf("T");
} else if(strcmp(buffer, "10100") == 0){
printf("U");
} else if(strcmp(buffer, "10101") == 0){
printf("V");
} else if(strcmp(buffer, "10110") == 0){
printf("W");
} else if(strcmp(buffer, "10111") == 0){
printf("X");
} else if(strcmp(buffer, "11000") == 0){
printf("Y");
} else if(strcmp(buffer, "11001") == 0){
printf("Z");
} else{
printf(" ");
}
}
}
printf("\n");
}

void xors(char* string1, char* string2){
int j = strlen(string2);
int k = 0;
char* i;

for(i=string1; *i; i++){
if(k >= j){
k = 0;
}
        if(*i == '0' && string2[k] == '0'){
                *i = '0';
                } else if(*i == '0' && string2[k] == '1'){
                        *i = '1';
                } else if(*i == '1' && string2[k] == '0'){
                        *i = '1';
                } else if(*i == '1' && string2[k] == '1'){
                        *i = '0';
                }
k++;
}
}

This is the input data I used (Maybe it doesn't match your data?)

Code:
0yp1yg1yg0og1yp1op0yg1op1yg0yg1op0yg0op0og1yp0op1op1op0yg1yg10g0yg1op1op0yp0yg1yp1yp
1yg1yp0yp1yp1op1yp1og1op0op1yg1og0op1og1yg0yg1yg1op1og1op1op0yg0yp1yg0yg
1og0yg0og0yg1op1op1og0yg0yp0yp1yg0op1op1op0yg1yg1yg1op1yp1og0og1og1op1og1op1og0yp1og1yg1op1op1op0yp
0yp1og1op1og0og0yg1og1yg0yg1op1op0yp1yg
1op0yg1og1yp0yg1og1og0yp
1og0op0yp0yp1op0op1yp1yp0yp1op1og1op1op1yg0yg0yg
1og0op1yp0yp0yp0yp1op1yg1op1og0og0yp
1og0yp1op1og0yp0yp1yg1op1og0og0yp1og1op0og1yp1yg0og0yg

And the command I used was:

./debacon -f data -B -a b -x 011010 -v

-f specifies the data file
-B tells it to run a bacon cypher
-a b tells it to run bacon v2 cypher
-x 011010 tells it to xor 011010 with the bitstring the whole way through before debacon
-v turns on verbose mode

See following post for output...
12  Bitcoin / Bitcoin Discussion / Re: The Legend of Satoshi Nakamato, FINAL STEP PUBLISHED.... 4.87 BTC GRAND PRIZE! on: January 16, 2018, 10:52:28 PM

So what are you waiting? Go ahead you have a big homework and weeks ahead to play with your lovely flames  Grin Grin Grin

You do realize that it doesn't take much time at all to test something like this right?

Input Data:

Code:
0yp1yg1yg0og1yp1op0yg1op1yg0yg1op0yg0op0og1yp0op1op1op0yg1yg10g0yg1op1op0yp0yg1yp1yp
1yg1yp0yp1yp1op1yp1og1op0op1yg1og0op1og1yg0yg1yg1op1og1op1op0yg0yp1yg0yg
1og0yg0og0yg1op1op1og0yg0yp0yp1yg0op1op1op0yg1yg1yg1op1yp1og0og1og1op1og1op1og0yp1og1yg1op1op1op0yp
0yp1og1op1og0og0yg1og1yg0yg1op1op0yp1yg
1op0yg1og1yp0yg1og1og0yp
1og0op0yp0yp1op0op1yp1yp0yp1op1og1op1op1yg0yg0yg
1og0op1yp0yp0yp0yp1op1yg1op1og0og0yp
1og0yp1op1og0yp0yp1yg1op1og0og0yp1og1op0og1yp1yg0og0yg

Ran a bunch of different bacon cyphers using this input (no xor) and didn't see anything interesting (I'd post the output, but it exceeds character limit)

@ChubbyChew, After I get off work tonight I'll make it so that my code xor's bitstrings and I'll verify your result.., Although, I'm not sure why you want to verify that?
13  Bitcoin / Bitcoin Discussion / Re: The Legend of Satoshi Nakamato, FINAL STEP PUBLISHED.... 4.87 BTC GRAND PRIZE! on: January 16, 2018, 10:11:26 PM
Well, if you do take the path I suggest, height(H) Outer color (O) Inner Color (I) and go around the aforementioned path HOIHOIHOIHOI etc..., then xor that result with the repeating ribbon 011010, then bacon that result, you end up with ONLY A's and B's (interesting result?) which if you Bacon that again, you get..... jibberjabber (maybe)

SMEKCXBE_RGUQY_GGAREQ_PS_ZUUFB

I take back what I said as I misunderstood you. You are saying you built your bitstring by taking a height bit, then outer color bit, then inner color bit and repeating?  I have not tried that.
14  Bitcoin / Bitcoin Discussion / Re: The Legend of Satoshi Nakamato, FINAL STEP PUBLISHED.... 4.87 BTC GRAND PRIZE! on: January 16, 2018, 09:56:42 PM
I've got a theory I've been working on for a couple of days. It almost feels like a Eureka moment with no payoff *yet. I'm wondering if anyone else wants to help me see if I'm on the right track or if I'm close but got off somewhere. I really feel like I'm on to something here:

 it starts by looking at this "statement" with the ampersand: https://imgur.com/a/NfjBI

1) It appears that the statement is saying: "flames and leaves" but not the colored flames, the little white orange ones we've all been ignoring.

2) There are three leaves on/near the ampersand: pointing left, up and down

3) There are three leaves on the left side border pointing: left, up and down

4) There are orange flames touching these leaves. The one pointing left is touched by 1 orange/white flame. The one pointing up is touched by 2 orange/white flames. The one pointing down is being touched by 3 orange white flames

5) The one pointing left appears to me to be indicating flame height (tall). If it was pointing to an actual flame it would appear ambiguous (pointing at color or height?) as you'll see shortly. Also the leaf on the top border is also being touched by 1 orange white flame, it appears to be indicate flame height (short) and is not pointing at a colored flame.

6) The one pointing up and touched by 2 orange white flames appears to indicate outer flame color (yellow)

7) The leaf pointing down and touched by 3 orange white flames appears to indicate inner flame color.

So: it looks to me like it's saying 123 -> height, outer color, inner color

So where to start looking at this pattern? Take the Alphabet Canary path starting with the inner track at the upper left corner and go clockwise, then counter clockwise on the outer track. Using my own notation of outer corners as Captital and inner as lowercase as shown in the image abdcaACDBA

If you take that path and rotate what you are looking at each flame height(tall) outer color (yellow) inner color (green), then the binary string you get starts with 011010. Off to a good start! Since the alphabet_canary found pattern of short flame every six flames, you would always get a 0 for those flames. A fixed value followed by 5 binary values. That could be a hint to check the bacon cypher which would have been an obscure clue before coin_artist posted the poem link now it's a no brainer.

I'm not sure I did it right but when I checked the bacon cypher doing everything as described above taking 6 values (always with a zero up front) and making that a Bacon character i got jibberish. "?JAYWUZUZVY?FM?IQISN?VZ?D" to be exact. It did occur to me that there are 152 flames and if you do this type of thing (looking for three different properties on a rotational basis) you could extract all the data from the flames and end up with a 456 bit binary stream because 152%3 is 2. But I haven't gotten any results that seem promising but my eyes are untrained compared to some of those here.


I'm not discrediting your ideas with the leaves and the orange flames. You may be onto something there.

That said, i have already seperated out lengths (all lengths total, as well as odd lengths only), inner colors, and outer colors. I then combined said strings in every possible combination (without dividing strings into smaller strings) and ran bacon cyphers (v1 and v2) on those combinations from every possible starting point. I've also repeated that process with every possible way of interpretting colors as 0 and 1 (assuming 4 colors), as well as reading everything backwards. I can confidently say there is no bacon message (occasional random word, sure) to be found going this route. Unless you start xoring bits, or reading bits in a different order or some combination of both.
15  Bitcoin / Bitcoin Discussion / Re: The Legend of Satoshi Nakamato, FINAL STEP PUBLISHED.... 4.87 BTC GRAND PRIZE! on: January 16, 2018, 03:47:04 PM
@kn0w0n3 If you disable the newbie PM protection I'd like to chat more in PM.

Disabled it and sent you a PM.

16  Bitcoin / Bitcoin Discussion / Re: The Legend of Satoshi Nakamato, FINAL STEP PUBLISHED.... 4.87 BTC GRAND PRIZE! on: January 15, 2018, 08:17:32 PM
@Itod, so in your opinion the "The_____iskeyfile" message is the intended message?

Well, I have a theory didn't want to mention before while trying to find the proof. The message "THEfm_aurISKEYFILE" can hardly be a collision, and the bold scrambled part is intentionally left there to be de-scrambled in the same way other bit-streams should be de-scrambled to get a key. If you come across the stream of bytes from private key you may not notice something is scrambled, but if you find something like plaintext quoted above it's pretty obvious something is wrong. So to answer you: yes I think it's intentionally left there scrambled/corrupted to show the way.

Anything can be the way to de-scramble it in a coherent message. The current path I'm working are the chessboard fields affected by Phoenix fire. It looks to me that those chessboard fields that should be dark are somehow lighter with this bright blue Phoenix color then the white ones, so some bits associated with those chessboard fields should be inverted in raw bit-streams. I believe if we invert some bits from the "THEfm_aurISKEYFILE" bit-stream, in this way I've described, we will get coherent message from this bit-stream, and then we should apply this same transformation to colors bit-streams to get the private key.

Why "keyfile" though?

Perhaps the odd word choice was needed to create/preserve the 0x1x1x0x1x1x0 pattern.
17  Bitcoin / Bitcoin Discussion / Re: The Legend of Satoshi Nakamato, FINAL STEP PUBLISHED.... 4.87 BTC GRAND PRIZE! on: January 15, 2018, 06:00:44 PM
I only recently found this puzzle and thought I might spend a little time thinking about it. I went through every page of this (painful) thread to see if my own thoughts on the puzzle had been stated by anyone else, and it seems I might have some original ideas. As much as I would like to have the "Eureka!" moment and sweep the private key for myself, I thought it would be better to share.

My thoughts/findings are not listed in any particular order of priority:

  • I do not see a rabbit. There may be hidden imagery, but I do not believe that the rabbit so many people are talking about is of any substance.
  • I have read a lot of people looking at the "flame" border as a potential binary message. Rather than the height or width of each flame, it makes more sense to me that the color would indicate each bit. What sticks out to me the most is the red-bordered flames. Each of these red bordered flames is filled with either green or purple(blue/violet depending on the color depth of your screen). My thought was that maybe it could be that green=1 and purple=0 or vice-versa.
  • Following my original thought that the red flames are the message, I have also considered that the inner and outer rows of flames in the border might each represent 0 an 1, respectively (or vice-versa). I have also seen a reference to http://yewknee.com/blog/peter-saville-colour-code/ which seemed like it might be something worth exploring.
  • The glyphs in each of the corners look like Ulam spirals to me. Ulam spirals are used to represent prime numbers. If these are Ulam spirals, then they would each have a value of 17. This caught my attention as it matches the 17 leaves in the painting.
  • Whether or not the glyphs are Ulam spirals, I agree that they might also indicate a direction to read the information in the image. Not just the border, however. I think they might indicate how to read the symbols/objects in the middle of the painting as well. One way that I approached this was to examine the chess board in 5x5 "quadrants"
     at each corner, then trace the path of the glyphs through squares contained within each quadrant. If these are all drawn on the board at the same time there is overlap, but I am not sure if that matters. Hell, I am not sure of anything. Example here: https://imgur.com/a/v1EoS
  • I looked at the *.tif in a hex editor and I found the string "bitcoin mystery 076".
  • I have seen a number of posts where people "zoom and enhance" sections to find characters or hidden imagery. It is obvious that this was done with paint, perhaps acrylic. There may have been other mediums incorporated as well, or other tools besides paint brushes. There are portions that do look like she used the back of her brush handle or another hard instrument. In my experience with paint, especially when applied as liberal this appears to have been, intentionally adding in the tiny details would be more obvious. I think a lot of the details and hidden images people are seeing can be chalked up to artifacts created by brush strokes and color blending/bleeding.
  • Do we know how large the painting is in physical dimensions? Knowing the physical dimensions might give us a better idea of the level of detail to look for. The *.tif is 24"x18".
  • Maybe this whole thing is much more simple than we expect. I am entertaining the possibility that each of the objects might represent a character or series of characters. For example, the black knight/horse could be BK, bk, Bk, bK, k, K, or any of those with "h" instead of "k". Following that logic, maybe the number of flames of certain color might be something worth examining (example, if there are 16 red flames with purple fill, it might be 16rp or something like that).
  • Maybe rather than looking for a private key in its entirety, we should be looking for the variables required to calculate the private private key (base point, prime modulo,
     etc.). I am not as well-versed in the math as I would like to be, so perhaps someone who is could chime in.

Anyway, I just wanted to list out my own thoughts and see if this might light a fuse of inspiration for anyone.

I have not seen anyone mention Ulam spirals, and I do find that to be an interesting idea. Up until you said that I had been thinking that they were probably greek keys.

Colors representing bits has been suggested by a few people, and I do think there is probably some data in the colors. I had actually posted some code a while back that interpreted the colors of flames as 0s or 1s (User specifies how they should be interpreted) and then can convert the bits to ascii, do a bacon cypher, or dna stop codons.

Here is a fully dynamic version (Feed it as many lines as you want) of that code for anyone who wants it.

debacon.c
Code:
#include "cyphers.h"

int main(int argc, char* argv[]){
FILE* scram;
int opt;
int fcheck = 0;
int nflag = 0;
int btype = 0;
int bitflip = 0;
char** line = malloc(sizeof(char *) * 16);
int i = 0;
int j = 0;
int k = 0;
size_t len = 0;
ssize_t* nread = malloc(sizeof(ssize_t) * 16);
int ntot = 0;
char* buffer;
char* temp;
int runBacon = 0;
int runHex = 0;
int runDNA = 0;
int runRNA = 0;
int verbose = 0;

while((opt = getopt(argc, argv, "hvf:a:n:i:HBDR")) != -1){
switch(opt){
case 'h':
printf("\nUSAGE: ./decode -f path_to_input_file type_of_decode options\n");
printf("OPTIONS: -f [FILENAME] to specify input file\n");
printf("OPTIONS: -v for verbose mode\n");
printf("OPTIONS: -a [a or b] to specify which type of bacon alphebet (Bacon Cypher Only)\n");
printf("OPTIONS: -n [0 or 1 or 2 or 3] to specify how the bitstring should be read\n");
printf("OPTIONS: -i [t or f] to specify how 0's and 1's are read from the bitstring\n");
printf("OPTIONS: -B for Bacon Cypher\n");
printf("OPTIONS: -H for HEX conversion\n");
printf("OPTIONS: -D for DNA RNA Stop Codon Cypher Version 1 (Provide Bases or Flame Colors)\n");
printf("OPTIONS: -R for DNA RNA Stop Codon Cypher Version 2 (Flame Pairs Only)\n");
printf("OPTIONS: -h displays this menu\n");
printf("\nEXAMPLE: ./decode -f file -B -a b -n 2 -i f -v\n");
exit(EXIT_SUCCESS);
case 'f':
scram = fopen(optarg, "r");
fcheck = 1;
break;
case 'v':
printf("\nTurning on Verbose Mode...\n");
verbose = 1;
break;
case 'a':
if(optarg[0] == 'a' || optarg[0] == 'A'){
btype = 0;
} else if(optarg[0] == 'b' || optarg[0] == 'B'){
btype = 1;
} else{
printf("\nERROR: Invalid argument for for -a option, must be a or b\n");
exit(EXIT_FAILURE);
}
break;
case 'n':
if(atoi(optarg) < 4){
nflag = atoi(optarg);
} else{
printf("\nERROR: Invalid argument for -n option, must be 0, 1, 2, or 3\n");
}
break;
case 'i':
if(optarg[0] == 't' || optarg[0] == 'T'){
bitflip = 1;
}
break;
case 'B':
if(runHex == 1){
printf("\nERROR: Cannot run Bacon Cypher and Hex conversion together\n");
exit(EXIT_FAILURE);
} else if(runDNA == 1 || runRNA == 1){
printf("\nERROR: Cannot run Bacon Cypher and DNA RNA conversion together\n");
exit(EXIT_FAILURE);
} else{
runBacon = 1;
}
break;
case 'H':
if(runBacon == 1){
printf("\nERROR: Cannot run Bacon Cypher and Hex conversion together\n");
exit(EXIT_FAILURE);
} else if(runDNA== 1 || runRNA == 1){
printf("\nERROR: Cannot run DNA RNA Cypher and Hex conversion together\n");
exit(EXIT_FAILURE);
} else{
runHex = 1;
}
break;
case 'D':
if(runHex == 1){
printf("\nERROR: Cannot run Hex conversion and DNA RNA Cypher together\n");
exit(EXIT_FAILURE);
} else if(runBacon == 1){
printf("\nERROR: Cannot run Bacon Cypher and DNA RNA Cypher together\n");
exit(EXIT_FAILURE);
} else if(runRNA == 1){
printf("\nERROR: Cannot run both versions of DNA RNA Cypher together\n");
exit(EXIT_FAILURE);
} else{
runDNA = 1;
}
break;
case 'R':
if(runHex == 1){
printf("\nERROR: Cannot run Hex conversion and DNA RNA Cypher together\n");
exit(EXIT_FAILURE);
} else if(runBacon == 1){
printf("\nERROR: Cannot run Bacon Cypher and DNA RNA Cypher together\n");
exit(EXIT_FAILURE);
} else if(runDNA == 1){
printf("\nERROR: Cannot run both versions of DNA RNA Cypher together\n");
exit(EXIT_FAILURE);
} else{
runRNA = 1;
}
break;
default:
printf("ERROR: Unrecognized option, try -h\n");
exit(EXIT_FAILURE);
}
}

if(fcheck == 0){
printf("ERROR: Must specify input file, try -h\n");
exit(EXIT_FAILURE);
} else if(argc <= 3){
printf("ERROR: Must specify -H, -B, -D or -R.., try -h for help\n");
}

i = getlines(scram, &line, &ntot, len);

if(verbose == 1){
for(j = 0; j < i; j++){
printf("line %i is: %s\n", j, line[j]);
}
printf("Total Characters Read: %i\n\n", ntot);
j = 0;
}

buffer = malloc(sizeof(char) * ntot * 5);
temp = malloc(sizeof(char) * ntot * 5);

if(runDNA == 1){
for(j = 0; j < i; j++){
line[j] = normalize(line[j], 8);
}
j = 1;
strcpy(buffer, line[0]);
for(j = 1; j < i; j++){
strcat(buffer, line[j]);
}

if(verbose == 1){
printf("\nCombined String: %s\n", buffer);
}

for(k = 0; k <= strlen(buffer); k++){
divideString(buffer, 3);
if(verbose == 1){
printf("\nString split into 3's for decoding:\n");
printf("%s\n", buffer);
printf("\nDNA RNA Cypher Decode\n");
}
deRNA(buffer);
shift(buffer, verbose);
}
for(j = 0; j <= i; j++){
free(line[j]);
}
free(line);
free(buffer);
free(temp);
free(nread);
fclose(scram);
return 0;
} else if(runRNA == 1){
for(j = 0; j < i; j++){
line[j] = normalize(line[j], 8);
}
j = 1;
strcpy(buffer, line[0]);
for(j = 1; j < i; j++){
strcat(buffer, line[j]);
}
for(j = 0; j <= i; j++){
free(line[j]);
}
free(line);
free(buffer);
free(temp);
free(nread);
fclose(scram);
return 0;
}

for(j = 0; j < i; j++){
         if(verbose == 1){
                 printf("Normalizeing line %i\n", j);
                }
                if(bitflip == 1){
                 flip(line[j]);
                }
                line[j] = normalize(line[j], nflag);
                if(verbose == 1){
                 printf("Line %i is now: %s\n", j, line[j]);
                }
}

        j = 1;
        strcpy(buffer, line[0]);
        for(j = 1; j < i; j++){
         strcat(buffer, line[j]);
        }

        if(verbose == 1){
         printf("\nCombined String: %s\n", buffer);
        }


if(runBacon == 1){
for(k = 0; k <= strlen(buffer); k++){
divideString(buffer, 5);
if(verbose == 1){
printf("\nString split into 5's for decoding:\n");
printf("%s\n", buffer);

printf("\nDebaconing:\n");
}
debacon(buffer, btype);

shift(buffer, verbose);
}
}

if(runHex == 1){
for(k = 0; k <= strlen(buffer); k++){
if(strlen(buffer)%4 != 0){
switch(strlen(buffer)%4){
case 1:
temp[0] = '0';
temp[1] = '0';
temp[2] = '0';
temp[3] = '\0';
strcat(temp, buffer);
break;
case 2:
temp[0] = '0';
temp[1] = '0';
temp[2] = '\0';
strcat(temp, buffer);
break;
case 3:
temp[0] = '0';
temp[1] = '\0';
strcat(temp, buffer);
break;
default:
printf("Something bad happened...\n");
break;
}
} else{
strcpy(temp, buffer);
}
divideString(temp, 4);
if(verbose == 1){
printf("\nString split into 4's\n");
printf("%s\n", temp);
printf("\nConverting to Hex:\n");
}
deHex(temp);
clean(temp, verbose);
shift(buffer, verbose);

}
}
j = 0;
for(j = 0; j <= i; j++){
free(line[j]);
}
free(line);
free(nread);
fclose(scram);
free(buffer);
free(temp);
return 0;
}
cyphers.c
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

void flip(char *string){
        char *i;
        for(i=string; *i; i++){
                if(*i == '1'){
                        *i = '0';
                } else if(*i == '0'){
                        *i = '1';
                }
        }
}

void deHex(char *string){
        char buffer[5];
        int i = 0;

        while(string[i] != '\0'){
                buffer[0] = string[i];
                i++;
                buffer[1] = string[i];
                i++;
                buffer[2] = string[i];
                i++;
                buffer[3] = string[i];
                buffer[4] = '\0';
                i+=2;

                if(strcmp(buffer, "0000") == 0){
                        printf("0");
                } else if(strcmp(buffer, "0001") == 0){
                        printf("1");
                } else if(strcmp(buffer, "0010") == 0){
                        printf("2");
                } else if(strcmp(buffer, "0011") == 0){
                        printf("3");
                } else if(strcmp(buffer, "0100") == 0){
                        printf("4");
                } else if(strcmp(buffer, "0101") == 0){
                        printf("5");
                } else if(strcmp(buffer, "0110") == 0){
                        printf("6");
                } else if(strcmp(buffer, "0111") == 0){
                        printf("7");
                } else if(strcmp(buffer, "1000") == 0){
                        printf("8");
                } else if(strcmp(buffer, "1001") == 0){
                        printf("9");
                } else if(strcmp(buffer, "1010") == 0){
                        printf("A");
                } else if(strcmp(buffer, "1011") == 0){
                        printf("B");
                } else if(strcmp(buffer, "1100") == 0){
                        printf("C");
                } else if(strcmp(buffer, "1101") == 0){
                        ;printf("D");
                } else if(strcmp(buffer, "1110") == 0){
                        printf("E");
                } else if(strcmp(buffer, "1111") == 0){
                        printf("F");
                } else{
                        printf(" ");
                }
        }
        printf("\n");
}

void divideString(char *string, int n){
        int size = strlen(string);
        int i = 1;
        int j = 1;
        char* buffer = malloc(sizeof(char* ) * strlen(string) * 2);

        strcpy(buffer,string);
        string[0] = buffer[0];

        for(i = 1; j < size; i++){
                if(j%n == 0){
                        string[i] = ' ';
                        i++;
                }
                        string[i] = buffer[j];
                        j++;
        }
        string[i] = '\0';
        free(buffer);
}

int getlines(FILE* stream, char*** line, int* ntot, size_t len){
        int i = 0;
int max = 16;
ssize_t nread;

while((nread = getline(&(*line)[i], &len, stream)) != -1){
if(i == (max-1)){
max = max*2;
*line = realloc(*line, sizeof(char*) * max);
if(*line == NULL){
printf("ERROR: Memmory Allocation Failed\n");
exit(EXIT_FAILURE);
}
}
*ntot += (nread - 1);
i++;
}
 
        return i;
}

void shift(char* string, int verbose){
        char *nospace = string;
        char *temp = string;
char* buffer = malloc(sizeof(char* ) * strlen(string) * 2);

        char t;
        int i = 0;
        int size;

        if(verbose == 1){
                printf("\nRemoving Spaces\n");
        }
        while(*temp != 0){
                *nospace = *temp++;
                if(*nospace != ' '){
                        nospace++;
                }
        }
        *nospace = 0;
        if(verbose == 1){
                printf("\n%s\n", string);
                printf("\nShifting String\n");
        }
        strcpy(buffer, string);
        if(verbose == 1){
                printf("Buffer: \n%s\n\n", buffer);
        }
        t = string[0];
        size = strlen(string);
        for(i = 0; i < (size-1); i++){
                string[i] = buffer[i+1];
        }
        string[i] = t;
        string[i+1] = '\0';
        if(verbose == 1){
                printf("%s\n", string);
        }
free(buffer);
}

void clean(char* string, int verbose){
        char *nospace = string;
        char *temp = string;

        if(verbose == 1){
                printf("\nRemoving Spaces\n");
        }
        while(*temp != 0){
                *nospace = *temp++;
                if(*nospace != ' '){
                        nospace++;
                }
        }
        *nospace = 0;
}

char* normalize(char* string, int nflag){
        char *i;
        switch(nflag){
                case 0:
                        for(i=string; *i; i++){  
                                if(*i == 'y' || *i == 'Y'){
                                        *i = '1';
                                } else if(*i == 'o' || *i == 'O'){
                                        *i = '0';
                                } else if(*i == 'g' || *i == 'G'){
                                        *i = '1';
                                } else if(*i == 'p' || *i == 'P' || *i == 'b' || *i == 'B'){
                                        *i = '0';
                                } else if(*i == '\n'){
                                        *i = '\0';
                                }
                        }
                        return string;
                case 1:
                        for(i=string; *i; i++){  
                                if(*i == 'y' || *i == 'Y'){
                                        *i = '0';
                                } else if(*i == 'o' || *i == 'O'){
                                        *i == '1';
                                } else if(*i == 'g' || *i == 'G'){
                                        *i = '1';
                                } else if(*i == 'p' || *i == 'P' || *i == 'b' || *i == 'B'){
                                        *i = '0';
                                } else if(*i == '\n'){
                                        *i == '\0';
                                }
                        }
                        return string;
                case 2:
                        for(i=string; *i; i++){  
                                if(*i == 'y' || *i == 'Y'){
                                        *i = '1';
                                } else if(*i == 'o' || *i == 'O'){
                                        *i = '0';
                                } else if(*i == 'g' || *i == 'G'){
                                        *i == '0';
                                } else if(*i == 'p' || *i == 'P' || *i == 'b' || *i == 'B'){
                                        *i == '1';
                                } else if(*i == '\n'){
                                        *i = '\0';
                                }
                        }
                        return string;
                case 3:  
                        for(i=string; *i; i++){
                                if(*i == 'y' || *i == 'Y'){
                                        *i = '0';
                                } else if(*i == 'o' || *i == 'O'){
                                        *i = '1';
                                } else if(*i == 'g' || *i == 'G'){
                                        *i = '0';
                                } else if(*i == 'p' || *i == 'P' || *i == 'b' || *i == 'B'){
                                        *i = '1';
                                } else if(*i == '\n'){
                                        *i = '\0';
                                }
                        }
                        return string;
                case 8:  
                        for(i=string; *i; i++){
                                if(*i == '\n'){
                                        *i = '\0';
                                }
                        }
                        return string;
                default:
                        printf("\nERROR: Could not normalize stirng\n");
                        return string;
        }
}

void deRNA(char *string){
char buffer[4];
int i = 0;

while(string[i] != '\0'){
buffer[0] = string[i];
i++;
buffer[1] = string[i];
i++;
buffer[2] = string[i];
buffer[3] = '\0';
i+=2;

if(strcmp(buffer, "yyy") == 0 || strcmp(buffer, "YYY") == 0 || strcmp(buffer, "ttt") == 0 || strcmp(buffer, "TTT") == 0 || strcmp(buffer, "uuu") == 0 || strcmp(buffer, "UUU") == 0){
printf("F");
} if(strcmp(buffer, "yyp") == 0 || strcmp(buffer, "YYP") == 0 || strcmp(buffer, "yyb") == 0 || strcmp(buffer, "YYB") == 0 || strcmp(buffer, "ttc") == 0 || strcmp(buffer, "TTC") == 0 || strcmp(buffer, "uuc") == 0 || strcmp(buffer, "UUC") == 0){
printf("F");
} if(strcmp(buffer, "yyo") == 0 || strcmp(buffer, "YYO") == 0 || strcmp(buffer, "yyr") == 0 || strcmp(buffer, "YYR") == 0 || strcmp(buffer, "tta") == 0 || strcmp(buffer, "TTA") == 0 || strcmp(buffer, "uua") == 0 || strcmp(buffer, "UUA") == 0){
printf("L");
} if(strcmp(buffer, "yyg") == 0 || strcmp(buffer, "YYG") == 0 || strcmp(buffer, "ttg") == 0 || strcmp(buffer, "TTG") == 0 || strcmp(buffer, "uug") == 0 || strcmp(buffer, "UUG") == 0){
printf("L");
} if(strcmp(buffer, "pyy") == 0 || strcmp(buffer, "PYY") == 0 || strcmp(buffer, "byy") == 0 || strcmp(buffer, "BYY") == 0 || strcmp(buffer, "ctt") == 0 || strcmp(buffer, "CTT") == 0 || strcmp(buffer, "cuu") == 0 || strcmp(buffer, "CUU") == 0){
printf("L");
} if(strcmp(buffer, "pyp") == 0 || strcmp(buffer, "PYP") == 0 || strcmp(buffer, "byb") == 0 || strcmp(buffer, "BYB") == 0 || strcmp(buffer, "ctc") == 0 || strcmp(buffer, "CTC") == 0 || strcmp(buffer, "cuc") == 0 || strcmp(buffer, "CUC") == 0){
printf("L");
} if(strcmp(buffer, "pyo") == 0 || strcmp(buffer, "PYO") == 0 || strcmp(buffer, "byo") == 0 || strcmp(buffer, "BYO") == 0 || strcmp(buffer, "pyr") == 0 || strcmp(buffer, "PYR") == 0 || strcmp(buffer, "byr") == 0 || strcmp(buffer, "BYR") == 0 || strcmp(buffer, "cta") == 0 || strcmp(buffer, "CTA") == 0 || strcmp(buffer, "cua") == 0 || strcmp(buffer, "CUA") == 0){
printf("L");
} if(strcmp(buffer, "pyg") == 0 || strcmp(buffer, "PYG") == 0 || strcmp(buffer, "byg") == 0 || strcmp(buffer, "bYG") == 0 || strcmp(buffer, "cug") == 0 || strcmp(buffer, "CUG") == 0 || strcmp(buffer, "ctg") == 0 || strcmp(buffer, "CTG") == 0){
printf("L");
} if(strcmp(buffer, "oyy") == 0 || strcmp(buffer, "OYY") == 0 || strcmp(buffer, "ryy") == 0 || strcmp(buffer, "RYY") == 0 || strcmp(buffer, "auu") == 0 || strcmp(buffer, "AUU") == 0 || strcmp(buffer, "att") == 0 || strcmp(buffer, "ATT") == 0){
printf("I");
} if(strcmp(buffer, "oyp") == 0 || strcmp(buffer, "OYP") == 0 || strcmp(buffer, "oyb") == 0 || strcmp(buffer, "OYB") == 0 || strcmp(buffer, "ryp") == 0 || strcmp(buffer, "RYP") == 0 || strcmp(buffer, "ryb") == 0 || strcmp(buffer, "RYB") == 0 || strcmp(buffer, "atc") == 0 || strcmp(buffer, "ATC") == 0 || strcmp(buffer, "auc") == 0 || strcmp(buffer, "AUC") == 0){
printf("I");
} if(strcmp(buffer, "oyo") == 0 || strcmp(buffer, "OYO") == 0 || strcmp(buffer, "ryr") == 0 || strcmp(buffer, "RYR") == 0 || strcmp(buffer, "aua") == 0 || strcmp(buffer, "AUA") == 0 || strcmp(buffer, "ata") == 0 || strcmp(buffer, "ATA") == 0){
printf("I");
} if(strcmp(buffer, "oyg") == 0 || strcmp(buffer, "OYG") == 0 || strcmp(buffer, "ryg") == 0 || strcmp(buffer, "RYG") == 0 || strcmp(buffer, "aug") == 0 || strcmp(buffer, "AUG") == 0 || strcmp(buffer, "atg") == 0 || strcmp(buffer, "ATG") == 0){
printf(" - M - ");
} if(strcmp(buffer, "gyy") == 0 || strcmp(buffer, "GYY") == 0 || strcmp(buffer, "guu") == 0 || strcmp(buffer, "GUU") == 0 || strcmp(buffer, "gtt") == 0 || strcmp(buffer, "GTT") == 0){
printf("V");
} if(strcmp(buffer, "gyp") == 0 || strcmp(buffer, "GYP") == 0 || strcmp(buffer, "gyb") == 0 || strcmp(buffer, "GYB") == 0 || strcmp(buffer, "guc") == 0 || strcmp(buffer, "GUC") == 0 || strcmp(buffer, "gtc") == 0 || strcmp(buffer, "GTC") == 0){
printf("V");
} if(strcmp(buffer, "gyo") == 0 || strcmp(buffer, "GYO") == 0 || strcmp(buffer, "gyr") == 0 || strcmp(buffer, "GYR") == 0 || strcmp(buffer, "gua") == 0 || strcmp(buffer, "GUA") == 0 || strcmp(buffer, "gta") == 0 || strcmp(buffer, "GTA") == 0){
printf("V");
} if(strcmp(buffer, "gyg") == 0 || strcmp(buffer, "GYG") == 0 || strcmp(buffer, "gug") == 0 || strcmp(buffer, "GUG") == 0 || strcmp(buffer, "gtg") == 0 || strcmp(buffer, "GTG") == 0){
printf("V");
} if(strcmp(buffer, "ypy") == 0 || strcmp(buffer, "YPY") == 0 || strcmp(buffer, "yby") == 0 || strcmp(buffer, "YBY") == 0 || strcmp(buffer, "ucu") == 0 || strcmp(buffer, "UCU") == 0 || strcmp(buffer, "tct") == 0 || strcmp(buffer, "TCT") == 0){
printf("S");
} if(strcmp(buffer, "ypp") == 0 || strcmp(buffer, "YPP") == 0 || strcmp(buffer, "ybb") == 0 || strcmp(buffer, "YBB") == 0 || strcmp(buffer, "ucc") == 0 || strcmp(buffer, "UCC") == 0 || strcmp(buffer, "tcc") == 0 || strcmp(buffer, "TCC") == 0){
printf("S");
} if(strcmp(buffer, "ypo") == 0 || strcmp(buffer, "YPO") == 0 || strcmp(buffer, "ybo") == 0 || strcmp(buffer, "YBO") == 0 || strcmp(buffer, "ypr") == 0 || strcmp(buffer, "YPR") == 0 || strcmp(buffer, "ybr") == 0 || strcmp(buffer, "YBR") == 0 || strcmp(buffer, "uca") == 0 || strcmp(buffer, "UCA") == 0 || strcmp(buffer, "tca") == 0 || strcmp(buffer, "TCA") == 0){
printf("S");
} if(strcmp(buffer, "ypg") == 0 || strcmp(buffer, "YPG") == 0 || strcmp(buffer, "ybg") == 0 || strcmp(buffer, "YBG") == 0 || strcmp(buffer, "ucg") == 0 || strcmp(buffer, "UCG") == 0 || strcmp(buffer, "tcg") == 0 || strcmp(buffer, "TCG") == 0){
printf("S");
} if(strcmp(buffer, "ppy") == 0 || strcmp(buffer, "PPY") == 0 || strcmp(buffer, "bby") == 0 || strcmp(buffer, "BBY") == 0 || strcmp(buffer, "ccu") == 0 || strcmp(buffer, "CCU") == 0 || strcmp(buffer, "cct") == 0 || strcmp(buffer, "CCT") == 0){
printf("P");
} if(strcmp(buffer, "ppp") == 0 || strcmp(buffer, "PPP") == 0 || strcmp(buffer, "bbb") == 0 || strcmp(buffer, "BBB") == 0 || strcmp(buffer, "ccc") == 0 || strcmp(buffer, "CCC") == 0){
printf("P");
} if(strcmp(buffer, "ppo") == 0 || strcmp(buffer, "PPO") == 0 || strcmp(buffer, "bbo") == 0 || strcmp(buffer, "BBO") == 0 || strcmp(buffer, "ppr") == 0 || strcmp(buffer, "PPR") == 0 || strcmp(buffer, "bbr") == 0 || strcmp(buffer, "BBR") == 0 || strcmp(buffer, "cca") == 0 || strcmp(buffer, "CCA") == 0){
printf("P");
} if(strcmp(buffer, "ppg") == 0 || strcmp(buffer, "PPG") == 0 || strcmp(buffer, "bbg") == 0 || strcmp(buffer, "BBG") == 0 || strcmp(buffer, "ccg") == 0 || strcmp(buffer, "CCG") == 0){
printf("P");
} if(strcmp(buffer, "opy") == 0 || strcmp(buffer, "OPY") == 0 || strcmp(buffer, "oby") == 0 || strcmp(buffer, "OBY") == 0 || strcmp(buffer, "rpy") == 0 || strcmp(buffer, "RPY") == 0 || strcmp(buffer, "rby") == 0 || strcmp(buffer, "RBY") == 0 || strcmp(buffer, "acu") == 0 || strcmp(buffer, "ACU") == 0 || strcmp(buffer, "act") == 0 || strcmp(buffer, "ACT") == 0){
printf("T");
} if(strcmp(buffer, "opp") == 0 || strcmp(buffer, "OPP") == 0 || strcmp(buffer, "obb") == 0 || strcmp(buffer, "OBB") == 0 || strcmp(buffer, "rpp") == 0 || strcmp(buffer, "RPP") == 0 || strcmp(buffer, "rbb") == 0 || strcmp(buffer, "RBB") == 0 || strcmp(buffer, "acc") == 0 || strcmp(buffer, "ACC") == 0){
printf("T");
} if(strcmp(buffer, "opo") == 0 || strcmp(buffer, "OPO") == 0 || strcmp(buffer, "obo") == 0 || strcmp(buffer, "OBO") == 0 || strcmp(buffer, "rpr") == 0 || strcmp(buffer, "RPR") == 0 || strcmp(buffer, "rbr") == 0 || strcmp(buffer, "RBR") == 0 || strcmp(buffer, "aca") == 0 || strcmp(buffer, "ACA") == 0){
printf("T");
} if(strcmp(buffer, "opg") == 0 || strcmp(buffer, "OPG") == 0 || strcmp(buffer, "obg") == 0 || strcmp(buffer, "OBG") == 0 || strcmp(buffer, "rpg") == 0 || strcmp(buffer, "RPG") == 0 || strcmp(buffer, "rbg") == 0 || strcmp(buffer, "RBG") == 0 || strcmp(buffer, "acg") == 0 || strcmp(buffer, "ACG") == 0){
printf("T");
} if(strcmp(buffer, "gpy") == 0 || strcmp(buffer, "GPY") == 0 || strcmp(buffer, "gby") == 0 || strcmp(buffer, "GBY") == 0 || strcmp(buffer, "gcu") == 0 || strcmp(buffer, "GCU") == 0 || strcmp(buffer, "gct") == 0 || strcmp(buffer, "GCT") == 0){
printf("A");
} if(strcmp(buffer, "gpp") == 0 || strcmp(buffer, "GPP") == 0 || strcmp(buffer, "gbb") == 0 || strcmp(buffer, "GBB") == 0 || strcmp(buffer, "gcc") == 0 || strcmp(buffer, "GCC") == 0){
printf("A");
} if(strcmp(buffer, "gpo") == 0 || strcmp(buffer, "GPO") == 0 || strcmp(buffer, "gbo") == 0 || strcmp(buffer, "GBO") == 0 || strcmp(buffer, "gpr") == 0 || strcmp(buffer, "GPR") == 0 || strcmp(buffer, "gbr") == 0 || strcmp(buffer, "GBR") == 0 || strcmp(buffer, "gca") == 0 || strcmp(buffer, "GCA") == 0){
printf("A");
} if(strcmp(buffer, "gpg") == 0 || strcmp(buffer, "GPG") == 0 || strcmp(buffer, "gbg") == 0 || strcmp(buffer, "GBG") == 0 || strcmp(buffer, "gcg") == 0 || strcmp(buffer, "GCG") == 0){
printf("A");
} if(strcmp(buffer, "yoy") == 0 || strcmp(buffer, "YOY") == 0 || strcmp(buffer, "yry") == 0 || strcmp(buffer, "YRY") == 0 || strcmp(buffer, "uau") == 0 || strcmp(buffer, "UAU") == 0 || strcmp(buffer, "tat") == 0 || strcmp(buffer, "TAT") == 0){
printf("Y");
} if(strcmp(buffer, "yop") == 0 || strcmp(buffer, "YOP") == 0 || strcmp(buffer, "yob") == 0 || strcmp(buffer, "YOB") == 0 || strcmp(buffer, "yrp") == 0 || strcmp(buffer, "YRP") == 0 || strcmp(buffer, "yrb") == 0 || strcmp(buffer, "YRB") == 0 || strcmp(buffer, "uac") == 0 || strcmp(buffer, "UAC") == 0 || strcmp(buffer, "tac") == 0 || strcmp(buffer, "TAC") == 0){
printf("Y");
} if(strcmp(buffer, "yoo") == 0 || strcmp(buffer, "YOO") == 0 || strcmp(buffer, "yrr") == 0 || strcmp(buffer, "YRR") == 0 || strcmp(buffer, "uaa") == 0 || strcmp(buffer, "UAA") == 0 || strcmp(buffer, "taa") == 0 || strcmp(buffer, "TAA") == 0){
printf(" STOP ");
} if(strcmp(buffer, "yog") == 0 || strcmp(buffer, "YOG") == 0 || strcmp(buffer, "yrg") == 0 || strcmp(buffer, "YRG") == 0 || strcmp(buffer, "uag") == 0 || strcmp(buffer, "UAG") == 0 || strcmp(buffer, "tag") == 0 || strcmp(buffer, "TAG") == 0){
printf(" STOP ");
} if(strcmp(buffer, "poy") == 0 || strcmp(buffer, "POY") == 0 || strcmp(buffer, "boy") == 0 || strcmp(buffer, "BOY") == 0 || strcmp(buffer, "pry") == 0 || strcmp(buffer, "PRY") == 0 || strcmp(buffer, "bry") == 0 || strcmp(buffer, "BRY") == 0 || strcmp(buffer, "cau") == 0 || strcmp(buffer, "CAU") == 0 || strcmp(buffer, "cat") == 0 || strcmp(buffer, "CAT") == 0){
printf("H");
} if(strcmp(buffer, "pop") == 0 || strcmp(buffer, "POP") == 0 || strcmp(buffer, "bob") == 0 || strcmp(buffer, "BOB") == 0 || strcmp(buffer, "prp") == 0 || strcmp(buffer, "PRP") == 0 || strcmp(buffer, "brb") == 0 || strcmp(buffer, "BRB") == 0 || strcmp(buffer, "cac") == 0 || strcmp(buffer, "CAC") == 0){
printf("H");
} if(strcmp(buffer, "poo") == 0 || strcmp(buffer, "POO") == 0 || strcmp(buffer, "boo") == 0 || strcmp(buffer, "BOO") == 0 || strcmp(buffer, "prr") == 0 || strcmp(buffer, "PRR") == 0 || strcmp(buffer, "brr") == 0 || strcmp(buffer, "BRR") == 0 || strcmp(buffer, "caa") == 0 || strcmp(buffer, "CAA") == 0){
printf("Q");
} if(strcmp(buffer, "pog") == 0 || strcmp(buffer, "POG") == 0 || strcmp(buffer, "bog") == 0 || strcmp(buffer, "BOG") == 0 || strcmp(buffer, "prg") == 0 || strcmp(buffer, "PRG") == 0 || strcmp(buffer, "brg") == 0 || strcmp(buffer, "BRG") == 0 || strcmp(buffer, "cag") == 0 || strcmp(buffer, "CAG") == 0){
printf("Q");
} if(strcmp(buffer, "ooy") == 0 || strcmp(buffer, "OOY") == 0 || strcmp(buffer, "rry") == 0 || strcmp(buffer, "RRY") == 0 || strcmp(buffer, "aau") == 0 || strcmp(buffer, "AAU") == 0 || strcmp(buffer, "aat") == 0 || strcmp(buffer, "AAT") == 0){
printf("N");
} if(strcmp(buffer, "oop") == 0 || strcmp(buffer, "OOP") == 0 || strcmp(buffer, "oob") == 0 || strcmp(buffer, "OOB") == 0 || strcmp(buffer, "rrp") == 0 || strcmp(buffer, "RRP") == 0 || strcmp(buffer, "rrb") == 0 || strcmp(buffer, "RRB") == 0 || strcmp(buffer, "aac") == 0 || strcmp(buffer, "AAC") == 0){
printf("N");
} if(strcmp(buffer, "ooo") == 0 || strcmp(buffer, "OOO") == 0 || strcmp(buffer, "rrr") == 0 || strcmp(buffer, "RRR") == 0 || strcmp(buffer, "aaa") == 0 || strcmp(buffer, "AAA") == 0){
printf("K");
} if(strcmp(buffer, "oog") == 0 || strcmp(buffer, "OOG") == 0 || strcmp(buffer, "rrg") == 0 || strcmp(buffer, "RRG") == 0 || strcmp(buffer, "aag") == 0 || strcmp(buffer, "AAG") == 0){
printf("K");
} if(strcmp(buffer, "goy") == 0 || strcmp(buffer, "GOY") == 0 || strcmp(buffer, "gry") == 0 || strcmp(buffer, "GRY") == 0 || strcmp(buffer, "gau") == 0 || strcmp(buffer, "GAU") == 0 || strcmp(buffer, "gat") == 0 || strcmp(buffer, "GAT") == 0){
printf("D");
} if(strcmp(buffer, "gop") == 0 || strcmp(buffer, "GOP") == 0 || strcmp(buffer, "gob") == 0 || strcmp(buffer, "GOB") == 0 || strcmp(buffer, "grp") == 0 || strcmp(buffer, "GRP") == 0 || strcmp(buffer, "grb") == 0 || strcmp(buffer, "GRB") == 0 || strcmp(buffer, "gac") == 0 || strcmp(buffer, "GAC") == 0){
printf("D");
} if(strcmp(buffer, "goo") == 0 || strcmp(buffer, "GOO") == 0 || strcmp(buffer, "grr") == 0 || strcmp(buffer, "GRR") == 0 || strcmp(buffer, "gaa") == 0 || strcmp(buffer, "GAA") == 0){
printf("E");
} if(strcmp(buffer, "gog") == 0 || strcmp(buffer, "GOG") == 0 || strcmp(buffer, "grg") == 0 || strcmp(buffer, "GRG") == 0 || strcmp(buffer, "gag") == 0 || strcmp(buffer, "GAG") == 0){
printf("E");
} if(strcmp(buffer, "ygy") == 0 || strcmp(buffer, "YGY") == 0 || strcmp(buffer, "ugu") == 0 || strcmp(buffer, "UGU") == 0 || strcmp(buffer, "tgt") == 0 || strcmp(buffer, "TGT") == 0){
printf("C");
} if(strcmp(buffer, "ygp") == 0 || strcmp(buffer, "YGP") == 0 || strcmp(buffer, "ygb") == 0 || strcmp(buffer, "YGB") == 0 || strcmp(buffer, "ugc") == 0 || strcmp(buffer, "UGC") == 0 || strcmp(buffer, "tgc") == 0 || strcmp(buffer, "TGC") == 0){
printf("C");
} if(strcmp(buffer, "ygo") == 0 || strcmp(buffer, "YGO") == 0 || strcmp(buffer, "ygr") == 0 || strcmp(buffer, "YGR") == 0 || strcmp(buffer, "uga") == 0 || strcmp(buffer, "UGA") == 0 || strcmp(buffer, "tga") == 0 || strcmp(buffer, "TGA") == 0){
printf(" STOP ");
} if(strcmp(buffer, "ygg") == 0 || strcmp(buffer, "YGG") == 0 || strcmp(buffer, "ugg") == 0 || strcmp(buffer, "UGG") == 0 || strcmp(buffer, "tgg") == 0 || strcmp(buffer, "TGG") == 0){
printf("W");
} if(strcmp(buffer, "pgy") == 0 || strcmp(buffer, "PGY") == 0 || strcmp(buffer, "bgy") == 0 || strcmp(buffer, "BGY") == 0 || strcmp(buffer, "cgu") == 0 || strcmp(buffer, "CGU") == 0 || strcmp(buffer, "cgt") == 0 || strcmp(buffer, "CGT") == 0){
printf("R");
} if(strcmp(buffer, "pgp") == 0 || strcmp(buffer, "PGP") == 0 || strcmp(buffer, "bgb") == 0 || strcmp(buffer, "BGB") == 0 || strcmp(buffer, "cgc") == 0 || strcmp(buffer, "CGC") == 0){
printf("R");
} if(strcmp(buffer, "pgo") == 0 || strcmp(buffer, "PGO") == 0 || strcmp(buffer, "bgo") == 0 || strcmp(buffer, "BGO") == 0 || strcmp(buffer, "pgr") == 0 || strcmp(buffer, "PGR") == 0 || strcmp(buffer, "bgr") == 0 || strcmp(buffer, "BGR") == 0 || strcmp(buffer, "cga") == 0 || strcmp(buffer, "CGA") == 0){
printf("R");
} if(strcmp(buffer, "pgg") == 0 || strcmp(buffer, "PGG") == 0 || strcmp(buffer, "bgg") == 0 || strcmp(buffer, "BGG") == 0 || strcmp(buffer, "cgg") == 0 || strcmp(buffer, "CGG") == 0){
printf("R");
} if(strcmp(buffer, "ogy") == 0 || strcmp(buffer, "OGY") == 0 || strcmp(buffer, "rgy") == 0 || strcmp(buffer, "RGY") == 0 || strcmp(buffer, "agu") == 0 || strcmp(buffer, "AGU") == 0 || strcmp(buffer, "agt") == 0 || strcmp(buffer, "AGT") == 0){
printf("S");
} if(strcmp(buffer, "ogp") == 0 || strcmp(buffer, "OGP") == 0 || strcmp(buffer, "ogb") == 0 || strcmp(buffer, "OGB") == 0 || strcmp(buffer, "rgp") == 0 || strcmp(buffer, "RGP") == 0 || strcmp(buffer, "rgb") == 0 || strcmp(buffer, "RGB") == 0 || strcmp(buffer, "agc") == 0 || strcmp(buffer, "AGC") == 0){
printf("S");
} if(strcmp(buffer, "ogo") == 0 || strcmp(buffer, "OGO") == 0 || strcmp(buffer, "rgr") == 0 || strcmp(buffer, "RGR") == 0 || strcmp(buffer, "aga") == 0 || strcmp(buffer, "AGA") == 0){
printf("R");
} if(strcmp(buffer, "ogg") == 0 || strcmp(buffer, "OGG") == 0 || strcmp(buffer, "rgg") == 0 || strcmp(buffer, "RGG") == 0 || strcmp(buffer, "agg") == 0 || strcmp(buffer, "AGG") == 0){
printf("R");
} if(strcmp(buffer, "ggy") == 0 || strcmp(buffer, "GGY") == 0 || strcmp(buffer, "ggu") == 0 || strcmp(buffer, "GGU") == 0 || strcmp(buffer, "ggt") == 0 || strcmp(buffer, "GGT") == 0){
printf("G");
} if(strcmp(buffer, "ggp") == 0 || strcmp(buffer, "GGP") == 0 || strcmp(buffer, "ggb") == 0 || strcmp(buffer, "GGB") == 0 || strcmp(buffer, "ggc") == 0 || strcmp(buffer, "GGC") == 0){
printf("G");
} if(strcmp(buffer, "ggo") == 0 || strcmp(buffer, "GGO") == 0 || strcmp(buffer, "ggr") == 0 || strcmp(buffer, "GGR") == 0 || strcmp(buffer, "gga") == 0 || strcmp(buffer, "GGA") == 0){
printf("G");
} if(strcmp(buffer, "ggg") == 0 || strcmp(buffer, "GGG") == 0){
printf("G");
} else{
printf(" ");
}
}
printf("\n");
}


void debacon(char *string, int btype){
char buffer[6];
int i = 0;

while(string[i] != '\0'){

buffer[0] = string[i];
i++;
buffer[1] = string[i];
i++;
buffer[2] = string[i];
i++;
buffer[3] = string[i];
i++;
buffer[4] = string[i];
buffer[5] = '\0';
i+=2;

if(btype == 0){
if(strcmp(buffer, "00000") == 0){
printf("A");
} else if(strcmp(buffer, "00001") == 0){
printf("B");
} else if(strcmp(buffer, "00010") == 0){
printf("C");
} else if(strcmp(buffer, "00011") == 0){
printf("D");
} else if(strcmp(buffer, "00100") == 0){
printf("E");
} else if(strcmp(buffer, "00101") == 0){
printf("F");
} else if(strcmp(buffer, "00110") == 0){
printf("G");
} else if(strcmp(buffer, "00111") == 0){
printf("H");
} else if(strcmp(buffer, "01000") == 0){
printf("J");
} else if(strcmp(buffer, "01001") == 0){
printf("K");
} else if(strcmp(buffer, "01010") == 0){
printf("L");
} else if(strcmp(buffer, "01011") == 0){
printf("M");
} else if(strcmp(buffer, "01100") == 0){
printf("N");
} else if(strcmp(buffer, "01101") == 0){
printf("O");
} else if(strcmp(buffer, "01110") == 0){
printf("P");
} else if(strcmp(buffer, "01111") == 0){
printf("Q");
} else if(strcmp(buffer, "10000") == 0){
printf("R");
} else if(strcmp(buffer, "10001") == 0){
printf("S");
} else if(strcmp(buffer, "10010") == 0){
printf("T");
} else if(strcmp(buffer, "10011") == 0){
printf("V");
} else if(strcmp(buffer, "10100") == 0){
printf("W");
} else if(strcmp(buffer, "10101") == 0){
printf("X");
} else if(strcmp(buffer, "10110") == 0){
printf("Y");
} else if(strcmp(buffer, "10111") == 0){
printf("Z");
} else{
printf(" ");
}
}
if(btype == 1){
if(strcmp(buffer, "00000") == 0){
printf("A");
} else if(strcmp(buffer, "00001") == 0){
printf("B");
} else if(strcmp(buffer, "00010") == 0){
printf("C");
} else if(strcmp(buffer, "00011") == 0){
printf("D");
} else if(strcmp(buffer, "00100") == 0){
printf("E");
} else if(strcmp(buffer, "00101") == 0){
printf("F");
} else if(strcmp(buffer, "00110") == 0){
printf("G");
} else if(strcmp(buffer, "00111") == 0){
printf("H");
} else if(strcmp(buffer, "01000") == 0){
printf("I");
} else if(strcmp(buffer, "01001") == 0){
printf("J");
} else if(strcmp(buffer, "01010") == 0){
printf("K");
} else if(strcmp(buffer, "01011") == 0){
printf("L");
} else if(strcmp(buffer, "01100") == 0){
printf("M");
} else if(strcmp(buffer, "01101") == 0){
printf("N");
} else if(strcmp(buffer, "01110") == 0){
printf("O");
} else if(strcmp(buffer, "01111") == 0){
printf("P");
} else if(strcmp(buffer, "10000") == 0){
printf("Q");
} else if(strcmp(buffer, "10001") == 0){
printf("R");
} else if(strcmp(buffer, "10010") == 0){
printf("S");
} else if(strcmp(buffer, "10011") == 0){
printf("T");
} else if(strcmp(buffer, "10100") == 0){
printf("U");
} else if(strcmp(buffer, "10101") == 0){
printf("V");
} else if(strcmp(buffer, "10110") == 0){
printf("W");
} else if(strcmp(buffer, "10111") == 0){
printf("X");
} else if(strcmp(buffer, "11000") == 0){
printf("Y");
} else if(strcmp(buffer, "11001") == 0){
printf("Z");
} else{
printf(" ");
}
}
}
printf("\n");
}
cyphers.h
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

void shift(char* string, int verbose);
int getlines(FILE* stream, char*** line, int* ntot, size_t len);
char* normalize(char* string, int nflag);
void clean(char* string, int verbose);
void divideString(char* string, int n);
void debacon(char* string, int btype);
void flip(char* string);
void deHex(char* string);
void deRNA(char* string);


@Itod, so in your opinion the "The_____iskeyfile" message is the intended message?
18  Bitcoin / Bitcoin Discussion / Re: The Legend of Satoshi Nakamato, FINAL STEP PUBLISHED.... 4.87 BTC GRAND PRIZE! on: January 13, 2018, 07:57:49 PM
Me too i would completely agree, and to that mom called coin-artist or coinboss or cointroll or whatever i would say:  "FUCK YOU AND FUCK YOUR MARKETING SCHEME"

Why even try then?

You should probably try one of these puzzles instead. I think you'll still find them difficult to solve, but you probably won't end up as frustrated.: https://www.puzzlewarehouse.com/puzzles-for-ages-3-to-4/
19  Bitcoin / Bitcoin Discussion / Re: The Legend of Satoshi Nakamato, FINAL STEP PUBLISHED.... 4.87 BTC GRAND PRIZE! on: January 12, 2018, 07:31:00 PM
Here is the data I have from the flames.  The order is inner top/inner right/inner bottom/inner left/outer left/outer bottom/outer right/outer top.

Outer Color Yellow - 0  Outer Color Orange - 1   Inner Color Purple - 0  Inner Color Green - 1  Inner Color Skinny - 0 Inner Color Fat - 1 Short Flame - 0 Tall Flame- 1

Outer Color - 0001010100101101110010110000000010111011100011110000101011100001110001011111110 1011100111101001100101001101100110001111000110000101110101100011101110010
Inner Color -  0111001011010100001111000100100000100110111101001011111100110010001110011101010 1100001101111110001011011101000000000100111100000010110100100101101010111
Skinny Fat -   0100110000110001110101110001110000111000110101110001000011111100011001100010001 1010000011001001101001100011000101001011100111111110100111011011000111100
Tall Short -    0110110110100010110110110011110111110110110111110010100011100010110111110111110 1111100111001101101101101101000101101111100101000111100101100111001101100

There can be 16 variations of these if you switch the 0's and 1's on each.  If you omit the Tall Short data due to the fact that there is a repeating pattern then there are only 9 variations unless you use the non-pattern heights as an xor on one or more of the data streams.

  https://i.imgur.com/a/5mwna  Why is this image link not working???

I think the flames are decoded in pairs.  So the first 2 flames (starting inner top left) could be 000011 or one of the eight other variations if you swap the 0's and 1's.

You will end up with 76 alphanumeric characters at the end.  I think the private key is hidden in there along with a congratulatory message.  

I think the key ribbons are telling you to use 6 bits for the decoding as well as showing the height pattern for the order.


Have you written any code to test this? if so, anything interesting?
20  Bitcoin / Bitcoin Discussion / Re: The Legend of Satoshi Nakamato, FINAL STEP PUBLISHED.... 4.87 BTC GRAND PRIZE! on: January 12, 2018, 07:23:37 PM
LOL, i've only spent like 15 mins on those trolling flames, most of those blinds have spent hours everyday trying to find the private key there.

... lols

Anyway, I'm fairly sure the rabbit is a troll. Many of the "clues" they have posted seem to be poorly copied from the beginning of this puzzle as well as from previous puzzles. If you read through this whole thread, as well as the scribd document of the previous arg.., You'll see what I mean.

Occasionally, they seem to say things that do seem like they could plausibly be a hint.., However, most of that seems to lead to things people have already discovered.

Regardless, I will admit that I have spent a small amount of time on the rabbits clues.. "just in case", and because there is definitely a rabbit in the picture. That said, I do not think you are correct about the right hand, as that seems to be part of the Phoenix wing.

https://imgur.com/a/NuWW8

I did not make the rabbit in the image I posted. I asked a graphic designer friend to cut the rabbit out from the photo, and that is what he saw (without having background on the photo, I just asked him to cut out the rabbit).


But again.., as of right now., It does not seem like the rabbit who is posting is leading anyone anywhere. Unless you've uncovered something you haven't shared.
Pages: [1] 2 3 »
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!