#include <windows.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
UCHAR digits[] = {'B','C','D','F','G','H','J','K','M','P','Q','R','T','V','W','X','Y','2','3','4','6','7','8','9'};
PUCHAR strresult = new UCHAR[26];
PUCHAR buf = new UCHAR[200];
char bKey[100]; //Konvertierter Key mit bindestrichen
char chKey[30]; //Konvertierter Key ohne bindestriche
char hostName[] = "\\\\";
char host[19]="";
HKEY rootKey = NULL;
DWORD datasize = 200;
DWORD dwRet = 0;
printf("Bitte Zielrechner eingeben: ");
gets(host);
strcat(hostName,host);
dwRet = RegConnectRegistry(hostName,HKEY_LOCAL_MACHINE,&rootKey);
dwRet = RegOpenKeyEx(rootKey,"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion",0,KEY_READ,&rootKey);
dwRet = RegQueryValueEx(rootKey,"DigitalProductId",NULL,NULL,(LPBYTE)buf,&datasize);
if (dwRet != ERROR_SUCCESS) //ob nicht alles ok
{
printf("Es ist ein Fehler aufgetreten\n");
system("pause");
return -1;
}
RegCloseKey(rootKey);
int k,j;
for (int i=24;i>=0;i--)
{
int x=0;
for (int j=14;j>=0;j--)
{
x = (x<<8) + (buf+0x34)[j];
(buf+0x34)[j] = x / 24;
x = x % 24;
}
strresult[i]=digits[x];
}
for(j=0;j<30;j++) //Konverierung von unsigned char* strresult nach char chKey
chKey[j]=strresult[j];
for(j=0,k=0;j<30;j++,k++) //einfügen von bindestrichen
{
bKey[k]=chKey[j];
if(j==4||j==9||j==14||j==19)
{
bKey[k+1]=45;
k=k+1;
}
}
printf("Der WindowsKey auf dem Zielrechner ist: ");
printf(bKey);
printf("\n");
system("pause");
return 0;
}