Windows ProductId Recovery Drucken
Geschrieben von: jjk   

Dumm wenn man seinen Windows Lizenzschlüssel verlegt hat und nur noch an die verschlüsselten Informationen aus der Registry oder dem Windows Systeminformationspanel (Windowstaste + Pause) kommt. Damit könnte man die Installtion nicht wieder neu machen da man ja einen Produkt−Key braucht.

Da ich das Problem aktuell habe mit Windows 7, und es im Netz keine Java Implementierung gab, hier mal meine:


 char[] 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' };
char[] decodedKey = new char[25];

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter 30 character productId hex: ");
String binaryCodeStr = br.readLine();
if (binaryCodeStr.length() != 30)
throw new IllegalArgumentException("length not equals 30 characters!");

char[] binaryKeyChar = new char[30];
for (int i = 0; i < binaryCodeStr.length(); i++) {
binaryKeyChar[i] = binaryCodeStr.charAt(i);
}
byte[] binaryKey = Hex.decodeHex(binaryKeyChar);

int i, j, k;
for (i = decodedKey.length - 1; i >= 0; i--) {
k = 0;
for (j = binaryKey.length - 1; j >= 0; --j) {
k = (k << 8) + (binaryKey[j] & 0xff);
binaryKey[j] = (byte) (Math.floor(k / 24d));
k = k % 24;
}
decodedKey[i] = digits[k];
}
StringBuffer result = new StringBuffer();
for (int l = 0; l < decodedKey.length; l++) {
result.append(decodedKey[l]);
if ((l % 5 == 4) && (l != decodedKey.length - 1))
result.append('-');
}
System.out.println(result.toString());

Ich denke jeder der etwas Java kann wird daraus ein lauffähiges Programm erstellen können. Diese Codezeilen dienen ausschliesslich der legalen Nutzung schon vorhandener Lizenzen!