downloadbrowseksydfius's The XOR Algorithm :)

Download ksydfius2.zip, 2 kb (password: crackmes.de)
Browse contents of ksydfius2.zip

cryptanalytic challenge

little overview:
----------------------
u have:
- 1 plaintext
- 1 corresponding ciphertext
- 1 algorithm that requires a key

ur goal:
- The plaintext has been encrypted with a key
- Your goal is to extract the key that encrypts the plaintext to the cipher text
- If you have done so correctly, the program will decrypt the goodboy message and tell u the answer :)

have fun!

-ksydfius

Difficulty: 1 - Very easy, for newbies
Platform: Windows
Language: Assembler

Published: 07. Sep, 2012
Downloads: 713

Rating

Votes: 6
Crackme is quite nice.

Rate this crackme:

Send a message to ksydfius »

View profile of ksydfius »

Solutions

Solution by Reaper91, published 05. oct, 2012; download (40 kb), password: crackmes.de or browse.

Reaper91 has not rated this crackme yet.

Solution by ThePoolGuy, published 14. oct, 2012; download (25 kb), password: crackmes.de or browse.

ThePoolGuy has rated this crackme as quite nice.

Solution by whizz, published 19. sep, 2012; download (108 kb), password: crackmes.de or browse.

whizz has rated this crackme as quite nice.

Solution by bearchik, published 19. sep, 2012; download (4 kb), password: crackmes.de or browse.

bearchik has rated this crackme as quite nice.

The submission of solutions is closed.

Discussion and comments

bearchik
07. Sep 2012
At first I solved this algorithm hands, but then saw that there 240 byte and wrote the program.
sciense_m00nlight
nwert
07. Sep 2012
easy one, science_m00nlight ;)
ksydfius
Author
07. Sep 2012
congratulations! :D

yes, too easy, the algorithm is very very weak :)
maybe i should have made it so that u only have the ciphertext to make it a bit harder... oh well ;)

btw moonlight is the song where i got that plaintext from
yolila
11. Sep 2012
Seriously, I have just finished my first crackme job. thank you, ksydfius!
archx
12. Sep 2012
im a complete noob to this, lol still suck on this. Any hints?
ksydfius
Author
13. Sep 2012
u can do it by hand ;)

no coding necessary
very basic understanding of XOR is all u need
Dr. Cat
14. Sep 2012
We go about our daily lives understanding almost nothing of the world. Few of us spend much time wondering why nature is the way it is; where the cosmos came from;... why we remember the past and not the future; and why there is a universe.
andrewl.us
Moderator
14. Sep 2012
Please submit a small tutorial, Dr. Cat.
nadav12456
17. Sep 2012
does the encrypted data is in the correct format? cause writing some decryprion script failed to match one letter foreach password letter
kingdeking
17. Sep 2012
Can you post a solution. I am very interested in it since I am stuck writing a decryption program. My problem is the way the encryption algorithm calculates its next offset k that is added after xor:

k = (unsigned int)Result[i] % (unsigned int)32; //0x20

Since it is modulo 32 I fail to tell which "k" is associated with which "i" (obviously there are multiple i's to each k since the length of the encryption key is 240). Any tips?
nadav12456
17. Sep 2012
thats true, multiple i's, but... if you loop over the i's, there is only one k it was encrypted with, at the step of the ENCRYPTION, so ive recreated the encryption part, computing k, for each step, which is depends only on i, (given the encrypted data...)... then you can reverse the encryption stage...
but, well, it didnt work, so maybe im missing something simple here, a bit annoying.
kingdeking
17. Sep 2012
Yes, I have done that at first aswell but I run into the same problems. Since you write Solution[k] now for every i you dont avoid generating the same k in different i-Iterations. You end up writing to Solution[k] multiple times.
kingdeking
17. Sep 2012
Or can you show me your code? Maybe I just miss something.
whizz
18. Sep 2012
Submitted a simple explanation and some Java code to generate key. #Lazy enough to do it by hand. :)
nadav12456
18. Sep 2012
kingdeking, it sould generate the same solution at each ime... but it doesnt, for me, so it strange...
if i try encrypt something else, it does ok, python code:
enc_data = [ord(i) for i in open(enc_data_path,"rb").read()]
real_data = [ord(i) for i in "We go about our daily lives understanding almost nothing of the world. Few of us spend much time wondering why nature is the way it is; where the cosmos came from;... why we remember the past and not the future; and why there is a universe."]
passw = [[] for i in range(0x20)]

for i in range(len(enc_data)):
mod_sum = sum([enc_data[j] for j in range(i)]) % 32
passw[mod_sum].append(((enc_data[i]-mod_sum) % (256)) ^ (real_data[i]%256))
kingdeking
18. Sep 2012
Allright I solved it. The truth is, even if we write multiple times to Solution[k] it doesnt matter because it will fill Buffer[k] just with the exact same content again.

"Great job if you can read this message then you are well deserved :) The answer is sience_m00nlight"

And the Ascii output in ollydebug is different from console output, retarded!
kingdeking
18. Sep 2012
Btw Nadav, I dont really get how you calculate your next k. All you have to do is:
k = (unsigned int)Result[i] % (unsigned int)32; //0x20
nadav12456
18. Sep 2012
Damn, i havent noticed the xor ebx,ebx at the end of some function, made me think ebx (or k in your implementation) is sum of encrypted data up to the current index... so, it didnt work, ill try again, with some valid k... Nadav.
xmk99
19. Sep 2012
no plaintext and ciphertext found in the zip
kingdeking
19. Sep 2012
lmao. Its embedded in the executable of course.
ksydfius
Author
19. Sep 2012
very nice tuts guys, thx!
SandboxEscaper
21. Aug, 21:40
Very nice crackme. I wrote this on the go while reversing should anyone be interested: http://thomas-vanhoutte.blogspot.be/2016/08/crackmesde-solutions-2-analysis-of-xor.html

Its a bit chaotic and rushed towards the end, but maybe it is useful to someone ;). (ps: I'm really bad at math, so forgive the lack of fancy formulas)

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.