
Keygen per Windows XP
Un generatore di chiavi VLK per Windows XP / Windows Server 2003. Questo strumento consente di generare chiavi Windows XP valide basate sulla Raw Product Key, che può essere casuale.
La Raw Product Key (RPK) viene fornita sotto forma di 9 cifre XXX-YYYYYY ed è necessaria solo per generare una chiave Windows XP.

Vai alla scheda Releases e scarica l'ultima versione da lì.
Questo progetto non è morto: farò del mio meglio per portarlo a compimento.
In generale, l'unica cosa che ci separa dalla generazione di chiavi Windows XP valide per OGNI EDIZIONE e OGNI BUILD è la mancanza delle rispettive chiavi private generate dalle loro controparti pubbliche all'interno di pidgen.dll. Non esiste codice ampiamente disponibile online per la funzione del logaritmo discreto su curve ellittiche, ci sono solo informazioni vaghe su come farlo.
Col passare del tempo, il problema è stato parzialmente risolto.
La risorsa BINK non era codificata in alcun modo e i dati venivano semplicemente scritti in sequenza nella risorsa. sk00ter ha anche spiegato completamente il formato BINK sui forum MDL. Utilizzando le conoscenze precedenti della comunità sull'argomento, ho scritto un BINK Reader in Python 3. Il file è pubblico in questo repository, clicca qui per visualizzare il codice sorgente.
La soluzione del logaritmo discreto è l'area di ricerca più inesplorata al 28 maggio 2023. Tuttavia, il mio amico nephacks ha trovato quell'elusivo strumento per risolvere quel difficile problema negli angoli più oscuri di Internet. Si chiama ECDLP (Elliptic Curve Discrete Logarithm Problem) Solver di Mr. HAANDI. Poiché trovarlo online è stato estremamente frustrante, l'ho ricaricato sul mio sito web. Puoi scaricare lo strumento qui.
Il file ReadMe incluso nella versione 0.2a del solver è già abbastanza chiaro di per sé, quindi chiunque abbia un minimo di cervello sarà in grado di configurare lo strumento. Tuttavia, non è open-source, quindi integrarlo nel mio keygen si è rivelato impossibile.
Nello scenario ideale, il keygen ti chiederebbe una risorsa BINK estratta da pidgen.dll, che poi decomporrebbe nei seguenti segmenti:
pubX; pubY)genX; genY)a; b)pConoscendo questi segmenti, il keygen potrebbe forzare l'ordine del generatore genOrder usando l'algoritmo di Schoof, seguito dalla chiave privata privateKey, sfruttando il genOrder calcolato per usare l'algoritmo più ottimale di Pollard's Rho. Non c'è dubbio che possiamo violare qualsiasi chiave privata in circa 20 minuti usando la potenza di calcolo moderna, a patto di avere l'algoritmo funzionante.
Una volta che il keygen ha terminato di forzare la chiave privata corretta, il compito si riduce a generare effettivamente una chiave, cosa che questo keygen fa. Per darti una prospettiva migliore, posso fornirti il flusso del keygen ideale. Ciò che è barrato è ciò che il mio keygen implementa:
genOrder, privateKey)Dobbiamo usare una Raw Product Key casuale come base per generare un Product ID nella forma AAAAA-BBB-CCCCCCS-DDEEE.
| Cifre | Significato |
|---|---|
| AAAAA | Costante famiglia di OS |
| BBB | ID canale |
| CCCCCC | Numero di sequenza |
| S | Cifra di controllo |
| DD | Indice della chiave pubblica |
| EEE | Numero casuale di 3 cifre |
La costante della famiglia di OS AAAAA è diversa per ogni serie di Windows XP. Ad esempio, è 76487 per SP3.
Le sezioni BBB e CCCCCC codificano essenzialmente la Raw Product Key. Ad esempio, se la prima sezione è uguale a XXX e la seconda sezione è uguale a YYYYYY, la Raw Product Key verrà codificata come XXX-YYYYYY.
La cifra di controllo S viene scelta in modo che la somma di tutte le cifre C con essa aggiunta dia un numero divisibile per 7.
L'indice della chiave pubblica DD ci fa sapere quale chiave pubblica è stata usata per verificare con successo l'autenticità della nostra Product Key.
Ad esempio, è 22 per le chiavi Professional e 23 per le chiavi VLK.
Un numero casuale EEE viene usato per generare ogni volta un Installation ID diverso.
La Product Key stessa (da non confondere con la RPK) è nella forma FFFFF-GGGGG-HHHHH-JJJJJ-KKKKK, codificata in Base-24 con
l'alfabeto BCDFGHJKMPQRTVWXY2346789 per escludere qualsiasi carattere che possa essere facilmente confuso, come I e 1 oppure O e 0.
Secondo la formula della capacità dell'alfabeto, la chiave può contenere al massimo 114 bit di informazioni. $$N = \log_2(24^{25}) \approx 114$$
In base a questo calcolo, decomponiamo la Product Key a 114 bit in 4 segmenti ordinati:
| Segmento | Capacità | Dati |
|---|---|---|
| Aggiornamento | 1 bit | Flag di versione di aggiornamento |
| Seriale | 30 bit | Raw Product Key (RPK) |
| Hash | 28 bit | Hash RPK |
| Firma | 55 bit | Firma su curva ellittica per l'hash RPK |
Per semplicità, combineremo i segmenti Upgrade e Seriale in un unico segmento chiamato Data. Con questa logica saremo in grado di estrarre la RPK
traslando Data a destra e di ricomporla traslando i bit a sinistra, perché la maggior parte delle Product Key a priori valide che ho controllato aveva il bit di Upgrade impostato a 1.
Microsoft ha rifatto il formato della Product Key con Windows Server 2003 per includere una chiave di autenticazione del server backend, un approccio in realtà sicuro alla validazione delle licenze, poiché nessuno avrebbe mai potuto indovinare quale algoritmo di validazione avessero impiegato sul loro server privato. Oltre ad aggiungere il meccanismo di validazione online, hanno anche aumentato l'aritmetica complessiva da 384 a 512 bit e lo scalare della firma a 62 bit di informazioni.
| Segmento | Capacità | Dati |
|---|---|---|
| Aggiornamento | 1 bit | Flag di versione di aggiornamento |
| ID canale | 10 bit | La parte BBB della RPK |
| Hash | 31 bit | Hash RPK |
| Firma | 62 bit | Firma su curva ellittica per l'hash RPK |
| Chiave di autenticazione | 10 bit | Valore di autenticazione backend |
Tuttavia, se generassimo una chiave senza pensare all'attivazione online, potremmo comunque generare chiavi valide che ci farebbero superare l'installazione del sistema operativo. Ed è esattamente ciò che fa il codice: genera una chiave di autenticazione casuale a 10 bit. Al giorno d'oggi non ha più alcuna importanza, dato che i server di attivazione sono offline e Server 2003 è considerato abandonware, così come questo intero progetto non dovrebbe essere considerato pirateria.