Domanda

Sto cercando di elaborare il formato di un file di password che viene utilizzato da una DLL LOGIN di cui non è possibile trovare l'origine. Lo strumento di amministrazione è stato scritto in AFX, quindi spero che forse dia un indizio sull'algoritmo utilizzato per codificare le password.

Usando lo strumento di amministrazione, abbiamo due password codificate. Il primo è & Quot; dinosaur123456789 & Quot; e l'esagono della crittografia è qui:

I valori esadecimali risultanti per la password del dinosauro sono

00h: 4A 6E 3C 34 29 32 2E 59 51 6B 2B 4E 4F 20 47 75; Jn & Lt; 4) 2.YQk + NO Gu 10h: 6A 33 09; j3. 20h: 64 69 6E 6F 73 61 75 72 31 32 33 34 35 36 37 38; dinosaur12345678 30h: 39 30; 90

Un'altra password " gertcha " è codificato come e8h: 4D 35 4C 46 53 5C 7E; GROUT M5LFS \ ~

Ho provato a cercare un XOR comune, ma non sono riuscito a trovare nulla. Le password hanno la stessa lunghezza nel file delle password, quindi presumo che si tratti di una codifica reversibile (era di un'altra epoca!). Mi chiedo se le classi AFX avrebbero potuto avere un mezzo che sarebbe stato usato per questo genere di cose?

Se qualcuno riesce a capire la codifica, sarebbe fantastico!

Grazie, Matteo

[edit:] Va bene, per prima cosa vado avanti e ho intenzione di lasciare il passato alle spalle nella nuova soluzione. Sarebbe stato bello usare ancora i vecchi dati. In effetti, se qualcuno vuole risolverlo come un enigma, mi piacerebbe comunque poterlo usare.

Per coloro che vogliono provare, ho fatto due password.

Tutte le 'a' - una password con 19 a: 47 7D 47 38 58 57 7C 73 59 2D 50; G} G8XW | SY-P 79 68 29 3E 44 52 31 6B 09; YH) gt &;. DR1k

Tutto 'b' - una password con 16 b. 48 7D 2C 71 78 67 4B 46 49 48 5F; H}, qxgKFIH_ 69 7D 39 79 5E 09; i} 9y ^.

Questo mi ha convinto che non esiste una soluzione semplice e che ci sono feedback.

È stato utile?

Soluzione

Beh, ho fatto una rapida crittoanalisi su di esso, e finora, posso dirti che ogni password sembra iniziare con il suo valore ASCII + 26. Il prossimo ottetto sembra essere la differenza tra il primo carattere della password e il secondo, aggiunto al suo valore ASCII. La lettera 3d, non l'ho ancora capito. Penso che sia sicuro dire che hai a che fare con una sorta di codice di feedback, motivo per cui XOR non presenta nulla. Penso che il valore di ciascun ottetto dipenderà dal precedente.

Posso continuare, ma questa roba richiede molto tempo. Spero che questo possa darti un inizio, o forse darti un paio di idee.

Altri suggerimenti

Ma poiché l'output è uguale in lunghezza con l'input, questo sembra un certo codice di chiave fissa. Potrebbe essere un banale xor.

Suggerisco di provare le seguenti password:

 * AAAAAAAA
 * aaaaaaaa
 * BBBBBBBB
 * ABABABAB
 * BABABABA
 * AAAABBBB
 * BBBBAAAA
 * AAAAAAAAAAAAAAAA
 * AAAAAAAABBBBBBBB
 * BBBBBBBBAAAAAAAA

Questo potrebbe forse permetterci di rompere il codice senza decodificare la DLL.

La DLL può codificare le password di un singolo carattere? O anche una password di zero caratteri?

Avrai voglia di iniziare con i casi di test più banali.

Potresti vedere questo problema da un'angolazione errata. Penserei che il miglior motivo per capire come vengono creati gli hash delle password sia di decodificare la dll di accesso.

Consiglierei IDA Pro per questa attività. Vale la pena il prezzo per l'aiuto dato che ti sta invertendo il codice eseguibile in assemblatore leggibile. Ci sono altri disassemblatori che sono gratuiti se non vuoi pagare ma non ho mai trovato nulla di così potente come IDA Pro. Un disassemblatore / debugger statico gratuito che consiglierei sarebbe PEBrowse da SmidgeonSoft poiché è buono per colpire rapidamente intorno a un sistema in esecuzione live e ha un buon supporto PDB per il caricamento di simboli di debug.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top