Have fun with this little program here

Hi folks

Let me share a completely useless hack with you. The following program contains a hidden message. To see what it does save the code to a file named mumble.c and compile it:

gcc -o mumble mumble.c

and then run it like this:

prompt> ./mumble

This is the hack:

int main(int a){int i,c=0;char *x,*h,*f,*s,*t;x=                            
"KKIOFQMQMQPQMMAMERIQJQDRAMJQDRAMNQFRNQCQMQFQKKKKJOGQAMJRPQFRAMHQFQ\        
ERAMERIQFQAMDOAMDRPQFRCRDQFQDQPQEQFQAMPQGQAMERIQJQDRAMARCRPQHQCRBQ\         
NQAMDRBQGRFQAMJQERAMFROQEQFQCRAMERIQFQAMOQBQNQFQKKPQGQAMNQFRNQCQMQ\         
FQOMDQMMAMERIQFQOQAMDQPQNQARJQMQFQAMJQERAMBQOQEQAMCRFROQAMJQERAMER\         
PQAMDRFQFQAMJQERHMDRAMPQFRERARFREROMKKPOOQAMERIQFQAMDQPQNQNQBQOQEQ\         
MQJQOQFQAMERJRARFQKNKKKKHQDQDQAMNMPQAMNQFRNQCQMQFQAMNQFRNQCQMQFQOM\         
DQKKKKERIQFQOQAMCRFROQAMJQERKNKKKKOMPMNQFRNQCQMQFQKKKKFPDRFQEQAMHR\         
JQERIQAMBQAMARBQCRBQNQFQERFQCRAMNQFRNQCQMQFQAMDQBQOQAMFQOQDQPQEQFQ\         
AMBQAMOQFQHRAMNQFQDRDRBQHQFQAMERBQLQFQOQAMGQCRPQNQAMMNDREREQJQOQON\         
KKKKOMPMNQFRNQCQMQFQAMNMFQAMONAMARCRPQHQOMDQAMMNAMNQFQDRDRBQHQFQOM\         
ERIRERKKKKEPIQFQAMCRFQDRFRMQERJQOQHQAMARCRPQHQCRBQNQAMHRJQMQMQAMEQ\         
JQDRARMQBQJRAMERIQFQAMOQFQHRAMNQFQDRDRBQHQFQAMHRIQFQOQAMDQPQNQARJQ\         
MQFQEQAMBQOQEQAMCRFROQKKBQOQEQAMJQERAMHRJQMQMQAMDRERJQMQMQAMCQFQAM\         
BQCQMQFQAMERPQAMFQOQDQPQEQFQAMBQAMOQFQHRAMNQFQDRDRBQHQFQOMKK";
h="int main(int a){int i,c=0;char *x,*h,*f,*s,*t;x=";                       
f="if(a>1){while(*h!='\\0'){putchar(*h++);}putchar(10);putchar(34);
\      
while((i=getchar())!=-1){putchar((i&0x000F)+65);
\                         
putchar(((i&0x00F0)>>4)+75);if(c++ ==32){c=0;putchar(92);
\                
putchar(10);}}putchar(34);putchar(59);putchar(10);
\                       
putchar(104);putchar(61);putchar(34);while(*t!='\\0'){putchar(*t++);}
\    
putchar(34);putchar(59);putchar(10);putchar(102);putchar(61);putchar(34);
\
while(*f!='\\0'){if(*f=='\\\\'){putchar(92);putchar(92);f++;}
\
else if(*f==10){putchar(92);putchar(110);putchar(92);putchar(10);f++;}
\
else{putchar(*f++);}}putchar(34);putchar(59);putchar(10);
\
putchar(116);putchar(61);putchar(104);putchar(59);
\
putchar(115);putchar(61);putchar(102);putchar(59);putchar(10);
\
while(*s!='\\0'){if(*s=='\\\\'){putchar(92);s++;}else if(*s==10)
\
{putchar(10);s++;}else{putchar(*s++);}}putchar(10);}else{
\
while(*x!='\\0')putchar(((int)*x++-65)|(((int)*(x+++1)-75)<<4));}}";
t=h;s=f;
if(a>1){while(*h!='\0'){putchar(*h++);}putchar(10);putchar(34);
while((i=getchar())!=-1){putchar((i&0x000F)+65);
putchar(((i&0x00F0)>>4)+75);if(c++ ==32){c=0;putchar(92);
putchar(10);}}putchar(34);putchar(59);putchar(10);
putchar(104);putchar(61);putchar(34);while(*t!='\0'){putchar(*t++);}
putchar(34);putchar(59);putchar(10);putchar(102);putchar(61);putchar(34);
while(*f!='\0'){if(*f=='\\'){putchar(92);putchar(92);f++;}
else if(*f==10){putchar(92);putchar(110);putchar(92);putchar(10);f++;}
else{putchar(*f++);}}putchar(34);putchar(59);putchar(10);
putchar(116);putchar(61);putchar(104);putchar(59);
putchar(115);putchar(61);putchar(102);putchar(59);putchar(10);
while(*s!='\0'){if(*s=='\\'){putchar(92);s++;}else if(*s==10)
{putchar(10);s++;}else{putchar(*s++);}}putchar(10);}else{
while(*x!='\0')putchar(((int)*x++-65)|(((int)*(x+++1)-75)<<4));}}

This is in the public domain.
Have fun the SuSE way!

“Was söll das chaibää Züüg??!!”

Thats only what i can say about this…:sarcastic:

> “Was söll das chaibää Züüg??!!”

i’m not smart enough to translate that…

what i wanna know is, if i follow the instructions will i soon learn
that i’ve been socially engineered into leading a Trojan Horse into my
system?


Andy Sipowicz

I would never do something if i were you…and and never as root!!

> I would never do something if i were you…and and never as root!!

so, i run xxx@yyy #: ./mumble
and get:

Hello, this is mumble

If you get the C sourcecode of this program save it under the name
of mumble.c, then compile it and run it to see it’s output.
On the commandline type:

gcc -o mumble mumble.c

then run it:

…/mumble

Mumble has deleted all your p0rn and told your mother what you do when
the door is locked.

:wink:


Andy Sipowicz

Hi everyone

I believe some explanations are in place to make clear what mumble is all about.

First of all please note that some end of line spaces crept in while posting the code which will generate warnings under gcc if you don’t care to remove them. I apologize for this inconvenience.

mumble is not a troian horse or malware of any kind. It shall be distributed as C source and even a preliminary inspection shows that the only function used is putchar(). Assignments are made to declared integers i and c. This simplicity is intentional. If you are not inclined to believe me, don’t run it.

mumble was presented in the spirit of Douglas R. Hofstadters famous book GEB http://en.wikipedia.org/wiki/Gödel, Escher, Bach.

This book discusses (among others) self-reference and questions how information can be encoded and understood. mumble’s special property is that any message it conveys is not readable in the source but can be displayed by running the executable and every executable is again capable of reproducing it’s own source code along with encoding another message. In a way, running the executable in encoding mode is a decompiler while it compiles (or encodes) the new message at the same time.

The source is even clearly readable in the executable but the encoded message is not. The only way to see the message is to compile the source and run the executable.

You may or may not like to think about this puzzle. If you don’t, please read another thread. Have fun anyway.

> You may or may not like to think about this puzzle. If you don’t,
> please read another thread. Have fun anyway.

i had fun, i understood it, i ran it…
i was just pulling legs… :wink:


Andy Sipowicz