/************************************************************************* CHKREG.C - Validates a key created by REGIT.C Donated to the Public Domain by Craig Morrison 12 May 1994, use, abuse, fold, spindle or mutilate anyway you see fit. *************************************************************************/ #include #include #include #include /* These should be the same as those used in REGIT.C */ #define XOR_PRIME 0xFFFFFFFF #define XOR_CRYPT 0x13579ACE #define XOR_POST_CRYPT 0x2468BDF0 /************************************************************************* CHKREG accepts two arguments on its command line; The key value in hexidecimal generated by REGIT and a string. You should end up with XOR_PRIME after the XOR manipulations, if not, then the given key was invalid. *************************************************************************/ int main(int argc, char *argv[]) { long keyval; long key; char *p; char buf[128]; if (argc>2) { strcpy(buf, argv[1]); strupr(buf); sscanf(buf, "%8X", &keyval); keyval ^= XOR_POST_CRYPT; strcpy(buf, argv[2]); p = strrev(buf); while(*p) { if (*p=='_') *p = ' '; key = (long) toupper(*p); key ^= XOR_CRYPT; keyval ^= key; p++; } printf("Key value = %08X hex.\n", keyval); } return 0; }