teol

Untitled

Jun 12th, 2011
283
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.41 KB | None | 0 0
  1. char* __stdcall chksum_md5(char* stringforhash )
  2. {
  3.     //msdn
  4.     int di;
  5.     HCRYPTPROV Provider = 0;
  6.     ::CryptAcquireContext(&Provider,NULL,MS_DEF_PROV,PROV_RSA_FULL,CRYPT_VERIFYCONTEXT);
  7.  
  8.     HCRYPTHASH Hash = 0;
  9.     ::CryptCreateHash(Provider,CALG_MD5,0,0,&Hash);
  10.     ::CryptHashData(Hash,(unsigned char*)stringforhash,strlen(stringforhash), 0);
  11.  
  12.     unsigned char digest2[16];
  13.     unsigned long size = sizeof(digest2);
  14.     ::CryptGetHashParam(Hash, HP_HASHVAL, digest2, &size, 0);
  15.     ::CryptDestroyHash(Hash);
  16.     ::CryptReleaseContext(Provider, 0);
  17.  
  18.     char* hex_output = new char[33];    
  19.  
  20.     for( di = 0;  di < 16;  di++ )
  21.         ::sprintf(hex_output + di * 2,"%02x", digest2[di]);
  22.  
  23.     return hex_output;
  24. }
  25.  
  26. unsigned long __stdcall chksum_crc32(char* stringforhash)
  27. {
  28.     //mattdog
  29.     unsigned long* crctable     = new unsigned long[256];    
  30.     unsigned long dwCrc32       = 0xFFFFFFFF;
  31.     unsigned long  dwPolynomial = 0x3369952F;
  32.     __asm xor dwPolynomial, 0xDED1160F;
  33.  
  34.     unsigned long x = 0;
  35.     for( int i = 0;  i < 256; i++)
  36.     {
  37.         x = i;
  38.         for( int j = 8;  j > 0;  j--)
  39.         {
  40.             if(x & 1)    x = (x >> 1) ^ dwPolynomial;
  41.             else        x >>= 1;
  42.         }
  43.         crctable[i] = x;
  44.     }
  45.  
  46.     while( *stringforhash )
  47.     {
  48.         dwCrc32 = ((dwCrc32) >> 8) ^ crctable[*stringforhash ^ ((dwCrc32) & 0xFF)];
  49.         stringforhash++;
  50.     }
  51.     delete crctable;
  52.  
  53.     return ~dwCrc32;
  54. }
  55.  
  56. unsigned long __stdcall current_hwid(void)
  57. {
  58.     //czkb :O
  59.     char* make_final_md5 = new char[1024];
  60.     char* main_variable  = new char[0x400];
  61.     GetEnvironmentVariableA("USERNAME",main_variable,0x400);
  62.     sprintf(make_final_md5,"%s",chksum_md5(main_variable));
  63.     GetEnvironmentVariableA("USERDOMAIN",main_variable,0x400);
  64.     strcat(make_final_md5,chksum_md5(main_variable));
  65.     GetEnvironmentVariableA("COMPUTERNAME",main_variable,0x400);
  66.     strcat(make_final_md5,chksum_md5(main_variable));
  67.     GetEnvironmentVariableA("LOGONSERVER",main_variable,0x400);    
  68.     strcat(make_final_md5,chksum_md5(main_variable));
  69.     GetEnvironmentVariableA("HOMEPATH",main_variable,0x400);
  70.     strcat(make_final_md5,chksum_md5(main_variable));
  71.     GetEnvironmentVariableA("APPDATA",main_variable,0x400);
  72.     strcat(make_final_md5,chksum_md5(main_variable));
  73.     GetEnvironmentVariableA("CommonProgramFiles",main_variable,0x400);
  74.     strcat(make_final_md5,chksum_md5(main_variable));
  75.     GetEnvironmentVariableA("ProgramFiles",main_variable,0x400);
  76.     strcat(make_final_md5,chksum_md5(main_variable));
  77.     GetEnvironmentVariableA("ALLUSERSPROFILE",main_variable,0x400);
  78.     strcat(make_final_md5,chksum_md5(main_variable));
  79.     GetEnvironmentVariableA("SYSTEMROOT",main_variable,0x400);
  80.     strcat(make_final_md5,chksum_md5(main_variable));
  81.     GetEnvironmentVariableA("TEMP",main_variable,0x400);
  82.     strcat(make_final_md5,chksum_md5(main_variable));
  83.     GetEnvironmentVariableA("TMP",main_variable,0x400);
  84.     strcat(make_final_md5,chksum_md5(main_variable));
  85.     GetEnvironmentVariableA("ComSpec",main_variable,0x400);
  86.     strcat(make_final_md5,chksum_md5(main_variable));
  87.     GetEnvironmentVariableA("FP_NO_HOST_CHECK",main_variable,0x400);
  88.     strcat(make_final_md5,chksum_md5(main_variable));
  89.     GetEnvironmentVariableA("NUMBER_OF_PROCESSORS",main_variable,0x400);
  90.     strcat(make_final_md5,chksum_md5(main_variable));
  91.     GetEnvironmentVariableA("OS",main_variable,0x400);
  92.     strcat(make_final_md5,chksum_md5(main_variable));
  93.     GetEnvironmentVariableA("PATHEXT",main_variable,0x400);
  94.     strcat(make_final_md5,chksum_md5(main_variable));
  95.     GetEnvironmentVariableA("PROCESSOR_ARCHITECTURE",main_variable,0x400);
  96.     strcat(make_final_md5,chksum_md5(main_variable));
  97.     GetEnvironmentVariableA("PROCESSOR_IDENTIFIER",main_variable,0x400);
  98.     strcat(make_final_md5,chksum_md5(main_variable));
  99.     GetEnvironmentVariableA("PROCESSOR_LEVEL",main_variable,0x400);
  100.     strcat(make_final_md5,chksum_md5(main_variable));
  101.     GetEnvironmentVariableA("PROCESSOR_REVISION",main_variable,0x400);
  102.     strcat(make_final_md5,chksum_md5(main_variable));
  103.     main_variable[0] = 0;
  104.  
  105.     DWORD hardwareid = 0xFFFFFFFF;
  106.     ::sprintf(main_variable,"%s",chksum_md5(make_final_md5));
  107.     hardwareid = chksum_crc32(main_variable);
  108.  
  109.     delete make_final_md5;
  110.     delete main_variable;
  111.     make_final_md5 = NULL;
  112.     main_variable  = NULL;
  113.     return hardwareid;
  114. }
Advertisement
Add Comment
Please, Sign In to add comment