-
Notifications
You must be signed in to change notification settings - Fork 0
/
2.3-Win-62122b9d33c5d46c8bcbff02.c
58 lines (49 loc) · 1.29 KB
/
2.3-Win-62122b9d33c5d46c8bcbff02.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// https://crackmes.one/crackme/62122b9d33c5d46c8bcbff02
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
/*
*
* Reversed
*
*/
char* hash_nick (const char* nick) {
int hashlen = strlen("tryHarderToMakeAGoodKeyGen"); // 26
int strl = strlen(nick);
char* newstr = malloc(strl + 1);
if (newstr == NULL) {
fprintf(stderr, "%s \n", "Erreur d'allocation dynamique");
exit(1);
}
for (int i = 0; i < strl; i++)
newstr[i] = nick[(nick[i] ^ hashlen) % strl];
newstr[strl] = '\0';
return newstr;
}
// Function used to check if the password is "good" for the hashed nickname,
// in that case it just checks if those two are equal to each other.
// So the final password is just the result of hash_nick()
int is_pass_good_for_hashed_nick (const char* pass, const char* hashed_nick) {
int pass_len = strlen(pass);
int hashed_nick_len = strlen(hashed_nick);
if (pass_len != hashed_nick_len)
return 0;
for (int i = 0; i < pass_len; i++)
if (pass[i] != hashed_nick[i])
return 0;
return 1;
}
/*
*
* KeyGen
*
*/
int main (void) {
char nick[100];
printf("Enter username: ");
scanf("%s", nick);
char* pass = hash_nick(nick);
printf("The password is: %s", pass);
free(pass);
return 0;
}