downloadbrowseX-Treem's Communicate 1.0

Download Communicate1_0.zip, 3 kb (password: crackmes.de)
Browse contents of Communicate1_0.zip

The target is keygening it or at least find out a working username and password. It requires some communication knowledge and a little bit of fantasy to workout...uhm..how can we call it?...ah yes!!..a key. Or shall we say..The Key.

Happy brainstorming :)

Difficulty: 4 - Needs special knowledge
Platform: Windows
Language: Assembler

Published: 17. Jul, 2006
Downloads: 648

Rating

Votes: 10
Crackme is nothing special.

Rate this crackme:

Send a message to X-Treem »

View profile of X-Treem »

Solutions

There are no solutions to this crackme yet. Have you solved it? Please write a tutorial and submit it here!

Submit your solution »

Discussion and comments

red477
18. Jul 2006
Nice crackme...;)
EvOlUtIoN
18. Jul 2006
Very difficult... any solution?
BoR0
19. Jul 2006
I doubt this crackme is keygenable. It may contain just one valid key and one valid user I think.

The main thing is, we have a 73-byte key (which is kind of a code cave).

Now our username and password (xored and all that stuff by that nasty algorithm) should make the code cave return 0x180C in sum, AS WELL AS making the code-cave a bunch of set of instructions, which in my opinion is kind of impossible.

I didn't find a message saying "Good job", or etc. So this means that we have to write ourself a code that does it all for us (in only 73 bytes)?

I kindly ask the author to send me a message (hint me?) about this crackme.
X-Treem
Author
19. Jul 2006
if u dont know how to afford a simple cryptoanalysis stop trying with this keygenme. There was an old Spider crackme called Christmas that used same way protection and that one has been soluted this means it's not impossible.

A xor B = C

that means that any combination of A and B that gives out C are good. C is you cave and this means that not only 1 username and password are correct.

73bytes are enough for doing almost everything.
The fact you cant find any good job message doesnt mean there is not.
hardcoder
22. Jul 2006
This crackme should be rated more than 6, to hard to figure out what's happening, anybody out there for solution
zairon
Moderator
22. Jul 2006
Where are you stuck? What's the part you think it's hard? I think it's not so hard but if you guys have some problems I can think to raise the level up; I have only to know which are the problems :)
crp-
23. Jul 2006
finding out whats happening is actually pretty straight forward. 0x49 bytes of ciphertext with an unknown 0xE byte key and an almost unknown plaintext is a bit more challenging :)
LAS3R
24. Jul 2006
agree with zairon, it's not that hard, xor algo, seen worse, i would rate it 3-4 , but very entertaining crackme, ideas i never thougth of!

Nice work!
ultrasound
24. Jul 2006
i am stuck with same thing as you BoR0..

it seems if the 'sum(XORed_magic_bytes)!=0x180C' then the instruction 'retn' is written to pipefile and executed, else the 'XORed_magic_bytes' are executed themselves (as they are written to the pipefile before the XOR is reversed)...

As BoR0 said, are we supposed to XOR this code until it is some valid code??
nasa_t
25. Jul 2006
Here,i have same problem with BoR0,ultrasound.It is easy to find how to make the crackme show you the encrypted good_boy message.
I use general instructions such as:push ebp/mov ebp,esp at the beginning,and leave/retn 4 at the end to make the cryptoanalysis easier.But these instructions crashes themselves,coz the push ebp/mov ebp and leave/retn 4 should have indistinct xor key.
After all,if we only ontain just several certain xor key,the job will be much more interesting.But I can't guess the tricky behind,and bruteforce would be impossible.
Guys like LAS3R,if you find the backdoor or trick,please write tut,and we will appreciate you and X-Treem.

BTW:data at 004030B6 may be C2 04 00,not C2 00 04,otherwise it will crash after input 0xE bytes name and serial. :)
Isaiah
25. Jul 2006
I think the key like this

?? ?? ?? ?? ?? 7A EF ?? ?? 2D 98 D4 6B
Isaiah
25. Jul 2006
I suppose the 73 bytes code begin with
push ebp
mov ebp,esp
and end with:
leave
retn 4
I spend 10 hours to bruteforce the KEY.But False
crp-
25. Jul 2006
> suppose the 73 bytes code begin with
> push ebp
> mov ebp,esp
> and end with:
> leave
> retn 4

this is not possible since 0x5A ^ 0x00 != 0xC3
crp-
25. Jul 2006
oops.... 0x5A ^ 0x00 != 0xC2 of course
Isaiah
25. Jul 2006
oh~.I'm wrong~~.
is anybody find the Key?
BoR0
27. Jul 2006
I passed the 180Ch sum check, hehe. But the program crashes now ;)

szUser db "BoR0 loves you", 0
szPassword db 0F1h, 0BBh, 0A7h, 26h, 17h, 34h, 16h, 0ECh, 0DEh, 0AFh, 0DDh, 067h, 8Bh, 70h, 0

For full bruteforce code check out http://www.cyberspace.org/~tehmath/communicate.brute.asm
crp-
27. Jul 2006
you found just 1 of billions of keys that yiels to correct checksum. i think the correct way to solve this is to "guess" some code bytes right, and work from that, however that might take a long time...
Isaiah
27. Jul 2006
the each byte of the KEY must between 0 to 0x7F
crp-
27. Jul 2006
there seem to be no keys that consist only of 00-7F bytes and produce a correct checksum
Isaiah
27. Jul 2006
oh,but the key generate by XOR opration between name and password.so the each byte of KEY must between 0x7F.

I get some hint from author he say the plaintext like this:
.Code
...
ret 4
szGoodjobMsg db dup(?)
crp-
27. Jul 2006
> oh,but the key generate by XOR opration between name and
> password.so the each byte of KEY must between 0x7F.

hmm, only if name and password also only consist of 0x00-0x7F
X-Treem
Author
27. Jul 2006
as i told in pm to someone else...
Isaiah assumption are right and the code is really simple so assuming first three bytes of code (means last three bytes of the key) is really simple, i can suggest MB_OK maybe someone understand with the last three bytes of key then is simple to find text and rest of key.
crp-
27. Jul 2006
if Isaiah assumptions are right then its impossible to solve as there are no keys (with every byte in the 0-0x7F range) that produce plaintext with a checksum of 0x180C.
Isaiah
28. Jul 2006
The first byte of code isn't decrypted by the last three byte of Key.It's decrypted by the sixth,seventh and eighth byte of the Key
crp-
28. Jul 2006
> It's decrypted by the sixth,seventh and eighth byte of the Key

are we trying to solve different crackmes ? ;)
BoR0
29. Jul 2006
This might come handy.

#include <stdio.h>

int main() {
int k,x;

for (x=13,k=72;k>=0;k--,x--) {
if (x<0) x=13;
printf("key[%d] = szuser[%d] ^ szpass[%d]\n", k, x, x);
}

return 0;
}
Isaiah
29. Jul 2006
I made a mistake~.I thought the key length is 13,but it's 14
ultrasound
29. Jul 2006
the problem i am having with this is that you cant assume the last byte of the code is the last byte that will be executed.. the 'retn 4' mnemonic could be anywhere in the bytes, not specifically 70->73..

the only thing you can be sure of is that it starts at the start, which you would assume, as above, starts with:

push ebp
mov ebp, esp

but the hex for this is 55, 8B, EC, which would require the last three bytes of the key to be 00, 7A, EF.. but as Isaiah has said, you cant produce EF by XORing characters (normal characters) which would be your name/serial...

so if this isnt the starting code, then what could it be !!?
BoR0
29. Jul 2006
This type of code/encryption is very useful, and can save lots of needed information. Hmm... maybe I will write a file encrypter soon..
X-Treem
Author
29. Jul 2006
lol
ok ok my mistake :)
i was taloking about Isaiah assumption about code (kindly hinted).
dont pay attention that serial will never be a text string, there could be any char from 0 to 255, the routine is really a shit, the keygenme goal is to let you crack you brain to find how serial and pass are checked and find out encripted "good job" routine code. So do not focalize on how could be serial appearance.
jE!
29. Jul 2006
hey, author, as i understood, in PASSWORD box we need to put non english letters??

if so, then this is incorrect crackme IMHO
LAS3R
30. Jul 2006
jE! a hint "copy and paste" ;)
BoR0
30. Jul 2006
This one is really nice, but still I doubt it's a keygenme. More like a crackme.
X-Treem
Author
30. Jul 2006
lol it's a keygenme :) hard thing is finding key, not algo :)
crackmes.de moderator has been given a valid username and serial to test functionality.

LAS3R is right, copy and paste :)

so stop crying about appearance, apply on method.
jE!
30. Jul 2006
it is incorrect:)
:)from where copy??

in edit box expected to put printable inglizh chars 20h-7Fh;
Otherwise use HEX input, then convert... so is in all normal crackmes, if you look..
X-Treem
Author
31. Jul 2006
...
i repeat, if you are able find the Key used to encrypt code using brain well,otherwise do not try.
ixiodor
27. Dec 2010
Dear Friends,after 8 hour i have cracked this crackme ^^ It's really simple guys! Tomorrow i make a tutorial.
ixiodor
27. Dec 2010
P.S no Needs special knowledge.
Only a low level programmation skill (XOR Foundament) and brain.(I coded 2 programs for do this).
ixiodor
04. Jan 2011
Solution (Italian): http://quequero.org/Soluzione_Communicate_1.0
X-Treem
Author
05. Jan 2011
I checked it and this was the solution i was expecting. Great job ixiodor

You may leave your comment, thoughts and discuss this crackme with other reversers here.
Acting childish will not be tolerated.
HTML and such will be left as-is, so don't try.