Code:
#include <stdio.h>
#define SERIAL_SIZE 0x20
#define ENCRYPTED_SERIAL_SIZE (SERIAL_SIZE / 2)
int main() {
char serial[SERIAL_SIZE];
char encryptedSerial[ENCRYPTED_SERIAL_SIZE] = {0xE9, 0x7F, 0x65, 0x04, 0x42, 0x44, 0x0B, 0x14, 0x4E, 0x39, 0xC4, 0xD2, 0x30, 0x1C, 0xDF, 0x1D};
unsigned int i;
for (i = 0; i < ENCRYPTED_SERIAL_SIZE; i++) {
char currByte = encryptedSerial[i];
char tmp;
tmp = ((currByte & 0xF0) >> 4) + 55;
tmp -= (tmp < 0x40 ? 7 : 0);
serial[2 * i] = tmp;
tmp = (currByte & 0x0F) + 55;
tmp -= (tmp < 0x40 ? 7 : 0);
serial[2 * i + 1] = tmp;
}
// for (i = 0; i < SERIAL_SIZE; i++) {
// printf("%x ", serial[i]);
// }
// printf("\n");
for (i = 0; i < SERIAL_SIZE; i++) {
printf("%c", serial[i]);
}
printf("\n");
return 0;
}
Интересно, а есть у кого-то замечания к коду keygen'a? =)