Skip to content

Commit 791f9c2

Browse files
authored
Add files via upload
1 parent 90384f2 commit 791f9c2

File tree

1 file changed

+99
-10
lines changed

1 file changed

+99
-10
lines changed

eCDPSerialGenerator/eCDPSerialGenerator.c

+99-10
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include <Windows.h>
55
BYTE key[0xA8] = { 0x01,0x0A,0x16,0x04,0x07,0x18,0x0C,0x10,0x05,0x17,0x09,0x03,0x12,0x08,0x15,0x13,0x0B,0x02,0x0F,0x0D,0x11,0x0E,0x06,0x14,0x07,0x0C,0x0E,0x11,0x09,0x16,0x10,0x06,0x14,0x0D,0x01,0x02,0x12,0x08,0x13,0x0B,0x0F,0x0A,0x18,0x15,0x04,0x05,0x03,0x17,0x0F,0x04,0x09,0x03,0x06,0x07,0x11,0x12,0x15,0x16,0x02,0x08,0x05,0x17,0x0C,0x0D,0x01,0x18,0x0B,0x14,0x0E,0x10,0x13,0x0A,0x02,0x0A,0x0E,0x12,0x0B,0x03,0x0C,0x06,0x13,0x07,0x11,0x09,0x15,0x18,0x10,0x17,0x14,0x0F,0x04,0x01,0x05,0x08,0x16,0x0D,0x0B,0x02,0x09,0x16,0x14,0x01,0x12,0x11,0x15,0x06,0x0F,0x17,0x07,0x10,0x0C,0x0E,0x08,0x18,0x13,0x03,0x0A,0x0D,0x04,0x05,0x09,0x0F,0x05,0x0D,0x16,0x15,0x12,0x11,0x03,0x0A,0x04,0x10,0x0E,0x14,0x02,0x01,0x13,0x0C,0x06,0x0B,0x17,0x18,0x07,0x08,0x12,0x02,0x0C,0x09,0x0D,0x0E,0x04,0x07,0x16,0x14,0x17,0x01,0x11,0x03,0x10,0x15,0x08,0x0A,0x05,0x13,0x0B,0x18,0x0F,0x06 };
66
char* hex_values = "0123456789ABCDEF";
7+
char* password_chars = "123456789ABCDEFGHJKLMNPQRSTUVWXYZ";
78
unsigned short output_vals[6];
89

910
void substitute(char* input, char* output, int multiply_by)
@@ -22,12 +23,13 @@ void substitute(char* input, char* output, int multiply_by)
2223

2324
int the_crazy_math_part(unsigned int val1, unsigned int val2)
2425
{
25-
int c = 1;
26+
int c = 0;
2627

2728
long long r1 = 0xFFFFFFF9;
2829
long long r0 = val1;
2930
long long r3 = val2;
3031

32+
3133
// yes this is just the asm implemented in C, dont @ me
3234

3335
for (int i = 0; i < 4; i++)
@@ -54,33 +56,36 @@ int the_crazy_math_part(unsigned int val1, unsigned int val2)
5456
return r3;
5557
}
5658

57-
byte* ascii_to_byte(byte* enc, byte* input)
59+
60+
char* ascii_to_byte(char* enc, char* input)
61+
5862
{
5963
int i;
6064
int ii;
61-
byte* iii;
62-
byte c;
65+
char* iii;
66+
char c;
6367

6468
c = *enc;
6569
i = 0;
6670
while (1) {
67-
if (c == 0) {
68-
return (byte*)0x0;
71+
if (c == '\0') {
72+
return (char*)0x0;
6973
}
7074
ii = 0;
7175
iii = enc + i;
72-
while ((c = input[ii], c != 0 && (*iii == c))) {
76+
while (c = input[ii], c != '\0' && (*iii == c)) {
7377
iii = iii + 1;
7478
ii = ii + 1;
7579
}
76-
if (c == 0) break;
80+
if (c == '\0') break;
7781
i = i + 1;
7882
c = enc[i];
7983
}
8084
return enc + i;
8185
}
8286

83-
int idontunderstandthispartyet(char* system_in, unsigned int maccasId)
87+
88+
int find_multiplier(char* system_in, unsigned int maccasId)
8489
{
8590
int system_in_len;
8691
byte* next_var;
@@ -140,13 +145,56 @@ int idontunderstandthispartyet(char* system_in, unsigned int maccasId)
140145
return 0;
141146
}
142147

148+
unsigned int hex_to_bytes(char* input, int iterator, int multiplier)
149+
{
150+
byte* iteration;
151+
byte* final_char;
152+
int result;
153+
int i;
154+
char* current_char;
155+
char* enc = hex_values;
156+
result = 0;
157+
i = 0;
158+
current_char = input + iterator;
159+
int ii = 0xc;
160+
do {
161+
char curChar[2];
162+
memset(curChar, 0x00, 2);
163+
curChar[0] = current_char[0];
164+
165+
iteration = ascii_to_byte(enc, curChar);
166+
final_char = iteration + -(int)enc;
167+
if (iteration == (char*)0x0) {
168+
final_char = (char*)0x0;
169+
}
170+
i = i + 1;
171+
result = result + ((int)final_char << (ii & 0xff));
172+
ii = ii - 4 & 0xffff;
173+
current_char = current_char + 1;
174+
} while (i < 4);
175+
return result & 0xffff;
176+
}
177+
178+
void generate_password(unsigned short* input, char* output)
179+
{
180+
int i;
181+
i = 0;
182+
do {
183+
output[i] = password_chars[input[i] - 1];
184+
i = i + 1;
185+
} while (i < 6);
186+
output[i] = '\0';
187+
return;
188+
}
189+
143190
int main()
144191
{
145192
char maccas_id[7];
146193
char mannager_id[7];
147194
char mac_address[18];
148195
char formatted[64];
149196
char encoded[64];
197+
char temp_key[100];
150198
char final_key[100];
151199
char total_output [64];
152200
printf("eCDP Serial Number Generator (By SilicaAndPina)\n");
@@ -162,8 +210,49 @@ int main()
162210
snprintf(formatted, 64, "%s%s%s", mac_address, maccas_id, mannager_id);
163211
printf("Formatted Data: %s\n", formatted);
164212

165-
int multiplier = idontunderstandthispartyet(formatted, (unsigned int)maccas_id);
213+
int multiplier = find_multiplier(formatted, (unsigned int)maccas_id);
166214
printf("Multiplier: %x\n", multiplier);
167215
substitute(formatted, encoded, multiplier);
168216
printf("Encoded Data: %s\n", encoded);
217+
218+
unsigned short password_values[6];
219+
memset(password_values, 0x00, 6 * 2);
220+
int iterator = 0;
221+
int i = 0;
222+
int ii = 0;
223+
do {
224+
int chr = hex_to_bytes(encoded, iterator, multiplier);
225+
i = ii + 1;
226+
password_values[ii] = (unsigned short)chr;
227+
iterator = iterator + 4;
228+
ii = i;
229+
} while (i < 6);
230+
231+
printf("Password Values 1: ");
232+
for (int i = 0; i < 6; i++)
233+
{
234+
printf("%x ", password_values[i]);
235+
}
236+
printf("\n");
237+
int magic_number = 0x3E0F83E1;
238+
239+
ii = 0;
240+
do {
241+
short chr = password_values[ii];
242+
iterator = ii + 1;
243+
password_values[ii] = chr + (short)(int)((long long)magic_number * (long long)(int)(unsigned int)chr >> 0x23) * -0x21 + 1;
244+
ii = iterator;
245+
} while (iterator < 6);
246+
247+
printf("Password Values 2: ");
248+
for (int i = 0; i < 6; i++)
249+
{
250+
printf("%x ", password_values[i]);
251+
}
252+
printf("\n");
253+
generate_password(password_values, final_key);
254+
printf("Ronald McDonald Says your password is %s\n", final_key);
255+
256+
printf("\n\nThou hast been reversed!");
257+
while (1) {};
169258
}

0 commit comments

Comments
 (0)