#include #include #include #include #include #include "..\..\inc\pidgen.h" #include "..\inc\DigPid.h" extern "C" extern WORD _C000H; extern "C" extern WORD _F000H; // LPBYTE lpbSystemBiosRom = (LPBYTE)MAKELONG(0, &_F000H); // LPBYTE lpbVideoBiosRom = (LPBYTE)MAKELONG(0, &_C000H); int PASCAL WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int cmdShow) { BOOL fOk; ////char *lpszProductKey; char achPid2[32]; BYTE abPid3[DIGITALPIDMAXLEN]; DWORD dwSeq = 0; BOOL fCCP = FALSE; BOOL fPSS = FALSE; int iValidCnt = 0; int iKeyCnt = 0; char szLineBuf[128]; char szMsgBuf[128]; FILE *pfIn = NULL; LPDIGITALPID pdp = (LPDIGITALPID) abPid3; #if 0 ///////////////////////////////// if (argc <= 1) { lpszProductKey = "PXGAD-G3CCE-G8DB8-PPXFT-DRPY3"; //// lpszProductKey = "GRHQ2-CDPWX-WWJBT-RXWFG-6CXCT"; } else { lpszProductKey = argv[1] } #endif //////////////////////////////// pfIn = fopen(lpszCmdLine,"r"); if (NULL == pfIn) { sprintf( szMsgBuf, "Error: unable to open file '%s'\n", (char *)lpszCmdLine); MessageBoxA( NULL, (char *)szMsgBuf, "Doh!", MB_OK); } else { while (NULL != fgets(szLineBuf, sizeof(szLineBuf), pfIn)) { szLineBuf[39] = '\0'; ++iKeyCnt; *(LPDWORD)abPid3 = sizeof(abPid3); fOk = PIDGen( &szLineBuf[10], // [IN] 25-character Secure CD-Key (gets U-Cased) "12345", // [IN] 5-character Release Product Code "123-12345", // [IN] Stock Keeping Unit (formatted like 123-12345) "MSFT", // [IN] 4-character OEM ID or NULL NULL, // [IN] 24-character ordered set to use for decode base conversion or NULL for default set (gets U-Cased) NULL, // [IN] pointer to optional public key or NULL 0, // [IN] byte length of optional public key 0, // [IN] key index of optional public key FALSE, // [IN] is this an OEM install? achPid2, // [OUT] PID 2.0, pass in ptr to 24 character array abPid3, // [OUT] pointer to binary PID3 buffer. First DWORD is the length. &dwSeq, // [OUT] optional ptr to sequence number (can be NULL) &fCCP, // [OUT] optional ptr to Compliance Checking flag (can be NULL) &fPSS); // [OUT] optional ptr to 'PSS Assigned' flag (can be NULL) if (fOk) { ++iValidCnt; } else { sprintf( szMsgBuf, "Warning: failure to validate %s\n", &szLineBuf[10]); MessageBoxA( NULL, szMsgBuf, "Doh!", MB_OK); } } sprintf( szMsgBuf, "Info: %d successful validations out of %d Product Keys\n", (int)iValidCnt, (int)iKeyCnt); MessageBoxA( NULL, (char *)szMsgBuf, (iValidCnt == iKeyCnt) ? "Woo Hoo!" : "Doh!", MB_OK); } #if 0 ///////////////////////////////// FILE *pf = fopen("test.dpi", "wb"); fwrite(pdp, sizeof(*pdp), 1, pf); fclose(pf); MessageBox( NULL, (char *)&abPid3[8], fOk ? "Woo Hoo!" : "Doh!", MB_OK); if (fOk) { MessageBox( NULL, (char *)pdp->aszHardwareIdStatic, "Woo Hoo!", MB_OK); char szMessage[128]; wsprintf( szMessage, "seq: %ld, %s%s - lictype: %ld", dwSeq, (fCCP) ? "CCP" : "FPP", (fPSS) ? ", PSS" : "", (LONG)pdp->dwlt); MessageBox( NULL, szMessage, (char *)&abPid3[8], MB_OK); } #endif //////////////////////////////// return 0; }