
Windows XP Keygen
Um gerador de chaves VLK para Windows XP / Windows Server 2003. Esta ferramenta permite gerar chaves válidas do Windows XP com base na Raw Product Key, que pode ser aleatória.
A Raw Product Key (RPK) é fornecida na forma de 9 dígitos XXX-YYYYYY e só é necessária para gerar uma chave do Windows XP.

Vá até a aba Releases e baixe a versão mais recente de lá.
Este projeto não está morto — farei o meu melhor para torná-lo realidade.
De modo geral, a única coisa que nos separa de gerar chaves válidas do Windows XP para TODA EDIÇÃO e TODA COMPILAÇÃO é a falta das respectivas chaves privadas geradas a partir de suas contrapartes públicas dentro de pidgen.dll. Não há código amplamente disponível online para a função de logaritmo discreto de curva elíptica; há apenas informação vaga sobre como fazer isso.
Com o passar do tempo, o problema foi parcialmente resolvido.
O recurso BINK não foi codificado de nenhuma forma e os dados foram simplesmente gravados sequencialmente no recurso. sk00ter também explicou completamente o formato BINK nos fóruns da MDL. Utilizando o conhecimento comunitário anterior sobre o assunto, escrevi um Leitor de BINK em Python 3. O arquivo é público neste repositório; clique aqui para ver o código-fonte.
A solução do logaritmo discreto é a área de pesquisa mais inexplorada em 28 de maio de 2023. No entanto, meu amigo nephacks encontrou aquela ferramenta elusiva para resolver esse difícil problema nos cantos mais obscuros da internet. Chama-se ECDLP (Elliptic Curve Discrete Logarithm Problem) Solver, do Sr. HAANDI. Como foi extremamente frustrante encontrá-lo online, eu o reenviei no meu site. Você pode baixar a ferramenta aqui.
O arquivo ReadMe que acompanha a versão 0.2a do solucionador é suficientemente bom por si só, então qualquer pessoa com um mínimo de inteligência conseguirá configurar essa ferramenta. No entanto, ela não é open-source, então integrá-la ao meu keygen é comprovadamente impossível.
No cenário ideal, o keygen pediria um recurso BINK extraído de pidgen.dll, que então desmembraria nos seguintes segmentos:
pubX; pubY)genX; genY)a; b)pSabendo desses segmentos, o keygen descobriria por força bruta a ordem do gerador genOrder usando o algoritmo de Schoof, seguido pela chave privada privateKey, aproveitando o genOrder calculado para usar o algoritmo mais otimizado de Rho de Pollard. Não há dúvida de que podemos quebrar qualquer chave privada em cerca de 20 minutos usando o poder computacional moderno, desde que tenhamos o algoritmo funcional.
Quando o keygen terminar de quebrar por força bruta a chave privada correta, a tarefa se resume a realmente gerar uma chave, o que este keygen faz. Para dar uma melhor perspectiva, posso fornecer o fluxo do keygen ideal. O que está riscado é o que o meu keygen implementa:
genOrder, privateKey)Precisamos usar uma Raw Product Key aleatória como base para gerar um ID do Produto no formato AAAAA-BBB-CCCCCCS-DDEEE.
| Dígitos | Significado |
|---|---|
| AAAAA | Constante da família do SO |
| BBB | ID do canal |
| CCCCCC | Número de sequência |
| S | Dígito verificador |
| DD | Índice da chave pública |
| EEE | Número aleatório de 3 dígitos |
A constante da família do SO AAAAA é diferente para cada série do Windows XP. Por exemplo, é 76487 para o SP3.
As seções BBB e CCCCCC essencialmente codificam a Raw Product Key. Por exemplo, se a primeira seção for igual a XXX e a segunda seção for igual a YYYYYY, a Raw Product Key será codificada como XXX-YYYYYY.
O dígito verificador S é escolhido de modo que a soma de todos os dígitos C com ele incluso seja um número divisível por 7.
O índice da chave pública DD nos informa qual chave pública foi usada para verificar com sucesso a autenticidade da nossa Chave do Produto.
Por exemplo, é 22 para chaves Professional e 23 para chaves VLK.
Um número aleatório EEE é usado para gerar um ID de instalação diferente a cada vez.
A própria Chave do Produto (não confundir com a RPK) tem o formato FFFFF-GGGGG-HHHHH-JJJJJ-KKKKK, codificada em Base-24 com o alfabeto BCDFGHJKMPQRTVWXY2346789 para excluir quaisquer caracteres que possam ser facilmente confundidos, como I e 1 ou O e 0.
De acordo com a fórmula de capacidade do alfabeto, a chave pode conter no máximo 114 bits de informação. $$N = \log_2(24^{25}) \approx 114$$
Com base nesse cálculo, desmembramos a Chave do Produto de 114 bits em 4 segmentos ordenados:
| Segmento | Capacidade | Dados |
|---|---|---|
| Upgrade | 1 bit | Flag de versão do Upgrade |
| Serial | 30 bits | Raw Product Key (RPK) |
| Hash | 28 bits | Hash da RPK |
| Assinatura | 55 bits | Assinatura de curva elíptica para o hash da RPK |
Por uma questão de simplicidade, combinaremos os segmentos Upgrade e Serial em um único segmento chamado Data. Com essa lógica, poderemos extrair a RPK deslocando Data para a direita e empacotá-la novamente deslocando bits para a esquerda, porque a maioria das chaves de produto a priori válidas que verifiquei tinha o bit de Upgrade definido como 1.
A Microsoft reformulou o formato da Chave do Produto com o Windows Server 2003 para incluir uma chave de autenticação de servidor backend, que era uma abordagem realmente segura para validação de licenças, pois ninguém poderia adivinhar qual algoritmo de validação eles haviam empregado em seu servidor privado. Além de adicionar o mecanismo de validação online, eles também aumentaram a aritmética geral de 384 para 512 bits e o escalar da assinatura para 62 bits de informação.
| Segmento | Capacidade | Dados |
|---|---|---|
| Upgrade | 1 bit | Flag de versão do Upgrade |
| ID do Canal | 10 bits | A parte BBB da RPK |
| Hash | 31 bits | Hash da RPK |
| Assinatura | 62 bits | Assinatura de curva elíptica para o hash da RPK |
| Chave de Autenticação | 10 bits | Valor de autenticação backend |
No entanto, se gerássemos uma chave sem pensar na ativação online, ainda poderíamos gerar chaves válidas que nos permitiriam passar pela instalação do sistema operacional. E é exatamente isso que o código faz — gera uma chave de autenticação aleatória de 10 bits. Hoje em dia isso não importa em nada, pois os servidores de ativação estão fora do ar e o Server 2003 é considerado abandonware, assim como este projeto inteiro não deveria ser considerado pirataria.