Leonardo Serni wrote:
> On Sun, 30 Jun 2013 14:57:22 +0200, NicoKid <
nic...@false.com> wrote:
>
>>Leonardo Serni wrote:
> Eh, no. In pratica, la funzione e' divisa in due parti e deve valere:
>
> f(x, g(x)) = 0
>
> Il software di gestione della chiave genera x a caso (diciamo che genera x
> con probabilita' proporzionale a 1/x), e invia x alla chiave, che effettua
> il calcolo g(x).
>
> A questo punto il software applica la propria f() al valore y ritornato, e
> verifica che f(x, y) sia zero.
>
> I vari "crack" per questo genere di cose consistono o nell'eliminare tutto
> il test (sperando che non esista una funzione h(x, y), che viene usata per
> fare qualche altro calcolo, tipo salvare i dati su disco), o - meglio - in
> una modifica del generatore di x in modo che ritorni sempre il medesimo, o
> uno di molto pochi, valori. E a questo punto la chiamata alla chiave viene
> sostituita da un lookup per i valori di x.
Craccare il codice è quello che NON vorrei fare (a parte che al 99% non ne
sono capace).
> In alternativa, avendo a disposizione l'algoritmo g() (che pero', spesso e
> volentieri, si basa ANCHE su un "vettore di stato" in modo da avere chiavi
> con informazioni diverse), si puo' simulare in software la chiave.
Questo è quello che mi piacerebbe fare.
> A questo punto, uno sostituisce le chiamate alla parallela con chiamate ad
> una apposita subroutine ed e' a posto.
Beh, una patch per dosbox che fa questo esiste già e l'ho già testata
(evviva la pappa pronta!).
> Per battere il trucchetto della frequenza variabile, ci sono programmi che
> si interfacciano alla chiave e inviano TUTTI i valori (8K, 16K, 32K... non
> serve altro che un po' di spazio disco: le chiavi nuove richiederebbero un
> certo numero di terabyte, ma quelle vecchie...). Nel caso tuo, ti serve un
> cosino chiamato HLdump (o hl-dump).
Si, hl-dump l'ho appunto usato per ottenere:
MODAD: 0x0A57
Seed 1: 0xB598
Seed 2: 0x233D
Seed 3: 0x1345
Solo che a questo punto qual'è l'algoritmo g()? Dovrebbe avere a che fare
con la roba sputata da hl-dump che tra l'altro mi ha prodotto anche un file
.reg con dentro anche un array di hex 512x32. Ma da quel che ho capito
questo array serve solo per velocizzare la ricerca dei seeds (molto IMHO).
In pratica dovrei "SOLO" capire come ottenere g() partendo dai seeds, cosa
che evidentemente sanno gia' fare quelli di
http://www.dongleservice.com
Grazie, Nicola.