diogenes_varela escreveu:Amigo Maligno (que nome, heim?)
Não é o meu nome. É só um apelido.
Sabe me dizer se há uma seqüência lógica na numeração, pois o mesmo muda a cada formatação.
O algoritmo de "scrambling" utilizado pela Microsoft (logo abaixo) não utiliza qualquer tipo de seqüenciamento que não a data e hora. A lógica do "scrambler" é apenas e tão somente misturar esses dados, obtidos no momento da formatação.
Código: Selecionar todos
Get date (INT 21h, AH=2Bh)
Get time (INT 21h, AH=2Ch)
Serial_ID+0 = DX reg date + DX reg time
Serial_ID+2 = CX reg date + CX reg time
Serial_Num_Low = Serial_ID+2
Serial_Num_High = Serial_ID+0
Isso seria útil no caso do cliente formatar a máquina e o programa só liberar a reinstalação para o serial previsto.
Com base neste algoritmo do cálculo, impossível. Mas há outras formas, bem melhores, de revalidar um licenciamento.
Qto. a forma mais simples de obter o serial, na minha opinião é redirecionar o comando VOL do DOS para um arquivo de texto e depois extraí-lo, usando o comando MEMOREAD() do clipper.
Uma gambiarra pelo comando VOL não pode ser mais simples que
GetVolSerN([<drive>]).
Conforme eu comentei, há um objeto na minha página que contém duas funções. A de leitura do serial, que funciona em qualquer Windows e em DOS puro, e a de escrita (
SetVolSErN([<drive>],<serial>)), que só não funciona em kernel NT, claro.
[]'s
Maligno
http://www.buzinello.com/prg