2012-02-03 7 views
18

Questo è il mio primo tentativo di reverse engineering e, davvero, non so come farlo. Ho un tipo di mente procedurale e nessuna base di conoscenza sui metodi di crittografia popolari.Reverse Engineer a File Format

Ma, mi sembra, se ho i dati minimi nel formato corretto, e so che c'è un'occorrenza nei dati di una certa parola, o parole, e dove quella parola inizia e finisce nel dati - che potrei in qualche modo scoprire il metodo di decrittografia dell'intero file.

----- ENCRYPTED ------------------------------------------- 
HEX  44 5E 12 47 55 5E 53 17 4C 5C 49 4F 4F 
ACII D^? G U^S ? L \ I O O 
DEC  68 94 63 71 85 94 83 63 76 92 73 79 79 
BIN  01000100 01011110 00111111 01000111 01010101 01011110 01010011 00111111 01001100 01011100 01001001 01001111 01001111 
----- DECRYPTED ------------------------------------------- 
HEX  74 6F 20 74 61 6B 65 20 74 65 73 74 73 
ASCII t o  t a k e  t e s t s 
DEC  116 111 32 116 97 107 101 32 116 101 115 116 115 
BIN  01110100 01101111 00100000 01110100 01100001 01101011 01100101 00100000 01110100 01100101 01110011 01110100 01110011 

Questo è solo un esempio di dati. So dove inizia e termina l'informazione sul titolo perché ho esaminato due file con titoli diversi - quindi so che questi si traducono in parole corrette - ma da dove vado per identificare il processo di crittografia?

* So che le persone chiederanno il perché: questo è da un formato di file VCE (esame) e voglio tradurre questo in XML o JSON. Questo mi renderebbe facile scrivere un programma che mette a confronto domande e risposte da più file di esami, aggiungere, rimuovere duplicati e crearne di nuovi. *

+0

Credo che quello che leggete è la parte * criptati * dall'alto? Ma da dove hai preso quella parte * DECRIFICATA *, quando in realtà non è decifrata? Grazie –

+2

@NiklasR Sono stato in grado di confrontare più file che conoscevo erano identici al 100%, tranne che per un singolo valore che ho creato. Perciò so che il testo sopra sarebbe "prendere dei test" dopo la decifratura. – Markus

+0

Come hai fatto a fare questo? Stavo cercando di fare qualcosa di simile. – WernerCD

risposta

5

Provare a XORare insieme le due stringhe. Quello che ottieni è

HEX  30 31 32 33 34 35 36 37 38 39 3A 3B 3C 
ASCII 0 1 2 3 4 5 6 7 8 9 : ; < 

Vedere un modello ancora?

+0

hehe non importa :) +1 –

+0

Sì, le operazioni bit, l'ho avuto nel retro della mente ma non l'ho guardato. Come lo sai così veloce? Ci sto guardando da un po '! – Markus

+1

@Markus: è stata la prima cosa che ho provato. (La seconda cosa sarebbe stata addizione e sottrazione modulo 256.) Inoltre, il confronto tra il tipo di dati crittografati e decrittografati suggerisce qualcosa del genere, poiché i codici ASCII vicini (come i due spazi nel testo decrittografato) si associano chiaramente a quelli vicini (valori non identici). –

1

Provare sempre XOR (operazione bit-bit) prima quando si ha un file esadecimale e si pensa che sia crittografato.
Ci sono molte ragioni per questo.

  • Una volta che si applica la crittografia XOR è possibile de-cripta applicando nuovamente il XOR
  • Così è modo molto semplice per crittografare qualcosa.
    Si può passare attraverso la seguente pagina wiki per maggiori dettagli:
    XOR_wiki
    anche se si ha accesso al Arte di programmazione (e anche il tempo di fare riferimento a quanto segue: D) passare attraverso la sezione operazioni a bit.
    È molto ben spiegato. Vale la pena leggere compagno :)
+0

Dai un'occhiata alla seguente domanda. Risponde alla tua domanda. [Perché Xor è utilizzato in crittografia] (http://stackoverflow.com/questions/1379952/why-is-xor-used-on-cryptography) –

2

Il valore di campo XOR domanda inizia con 19 e quindi è ogni secondo carattere.

cifrato:

6D 1A 74 1C 3D 1E 6B 20 40 22 48 24 40 26 07 28 5D 2A 4E 2C 5E 2E 5B 30 42 32

XOR:

19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32

decifrato:

t?o? ?t?a?k?e? ?t?e?s?t?s?

+1

Forse è codificato come UTF-16 e non solo ASCII con "ogni altro carattere"? – danfuzz