Ciao a tutti,
ogni tanto un messaggino su questo forum lo lascio anch'io..
Mi sono fatto un'idea sul modo in cui Camouflage possa utilizzare rsaenh.dll per generare la key, che è sempre la stessa..
rsaenh.dll è un'implementazione software made in msft di RSA , il più famoso e utilizzato crittosistema a chiave pubblica (vedi PGP).
Gli autori di Camouflage, secondo me, potrebbero aver utilizzato una parte del suo algoritmo in modo improprio, per ottenere uno stream pseudo-casuale da utilizzare poi come key con un semplice XOR, come visto.
Infatti lo stream (ottenibile cifrando con Camouflage un file costituito da soli zeri lungo a piacere) non è per nulla comprimibile da Ziv-Lempel (zip, rar, gz, ace, ecc..). Da questo si deduce che lo stream:
- non è costituito da un modulo fisso ripetuto n volte
- non contiene parti ripetute, tipiche di una struttura ordinata.
RSA definisce una funzione chiamata 'Mask Generation Function' che, partendo da un seme di lunghezza l, è in grado di generare uno stream pseudo-casuale lungo al più una potenza di l. Per la cronaca, anche partendo da un seme nullo, la MGF può generare fino a 2^32 bytes.
Ad un seme corrisponde sempre lo stesso output.
Se ho ragione tutto sta nel trovare il seme utilizzato (che può essere un numero, o una stringa di lunghezza qualsiasi. Purtroppo l'implementazione standard della MGF utilizza MD5 per generare l'hash, e non è possibile ricavare la stringa originaria guardando il suo hash MD5.
Cosa resta? R3vers3 3ng1n3g1ng?
Ma ne vale poi la pena?