tim0tei on 7:37 PM 03/12/2020: A classic level 1 for beginners! Thanks.
aechiara on 4:35 PM 04/02/2020: very good starting point
b1h0 on 5:19 PM 04/17/2020: About a week ago I sent my solution. But since I see that it does not appear, I leave here the link of my GitHub repository where I have also left it.
https://github.com/gabimarti/crackmes-solutions/blob/master/crackmes.one/Shad3-Keyg3n_M1/b1h0-Shad3-Keyg3n_M1.md
internaut401 on 9:26 PM 04/30/2020: Solved! Very easy, for beginners ;)
ttotons on 5:29 PM 05/10/2020: Thank you, this was pretty easy and really fun! I had to use my old friend Ascii Table.
venomR1 on 7:50 AM 06/15/2020: Very good for beginners.
Elephant on 1:27 PM 06/30/2025: FLAG: "#fuck~irgc"
004007fa int64_t check_key(char* userInput)
004007fa { // var_20 unused
004007fa int32_t var_20 = 0;
0040080e int32_t tmp = 0;
0040080e
00400825 // has between 8 and 10 chars, including
00400825 if (strlen(userInput) 7 && strlen(userInput) 0x3e7)
004008bd return 1;
004008bd
004008a3 printf("Nope 999:
break
print(f'Congrads, use password {tmppass}')
You must be logged in to submit a writeup
Solution by elprofesor: Using ghidra. You have a pdf file with info about how i found the logic behind and some info about the keygen. Also I attached a keygen.py script. Cheers!
Solution by b1h0: Here is my solution to crackme with dynamic analysis in Ghidra, and the source code with the keygen to generate the possible passwords.
Solution by Shad0wCloud: Here's my solution.
.
.
.
Basicly, u need to debug this code and watch what happens with variables.
The tricky one is that in first "if" we compare with hex 0xA (10 in dec), but then, in second "if" we sum up "v3" with decimal. So, that's all. Very nice for beginner.
Solution by KeiTachikawa: Loved it, check the decompilation and compare it with assembly. It uses structs so its nice to have some understanding of structs in assembly