2009-11-25 11 views
8

Solo curioso: quali sono alcune tecniche automatiche o anche semi-automatiche per il reverse-engineering dei protocolli di comunicazione?Reverse-engineering dei protocolli di comunicazione

Sono particolarmente interessato al caso quando si annusa il traffico e si cerca di capire il protocollo.

Sono riuscito a trovare uno number of papers on scholar, ma nella mia esperienza questo è un processo completamente manuale la maggior parte delle volte.

Se qualcuno ha esperienza nel settore e ha voglia di condividerlo sarebbe molto apprezzato.

+0

Si sta tentando di reingegnerizzare il codice su una macchina a stati, o indovinare qual è il protocollo osservando solo il traffico di messaggi? –

+0

Quest'ultimo - sto chiedendo come ottenere una specifica del protocollo solo osservando il traffico. – JohnIdol

+0

Senza altre informazioni? Questo è estremamente difficile. Prima si assume un modello di base del protocollo, ad esempio "automi a stati finiti puri"; se ti capita di sbagliare (diciamo che ha un contatore nascosto o un timer), allora non puoi ottenere la risposta giusta, non importa quello che fai. Se hai ragione, devi ancora determinare la struttura del campo del messaggio, quali elementi attivano le transizioni del protocollo e le effettive condizioni di transizione. Le persone scrivono tesi di dottorato cercando di indurre gli FSA a "usare modelli di caso". Se non sei disposto a portare più conoscenze, avrai un momento davvero difficile. –

risposta

3
  • Ottenere un po 'di controllo su un collegamento di comunicazione e annusare i dati. Quindi esercita la gamma di operazioni dell'applicazione associata per sentire come si relaziona il protocollo in modo da poter raccogliere osservazioni generali.

  • Google per il protocollo. Forse è stato pubblicato. Forse qualcuno l'ha già capito, o qualcuno ha fatto trapelare dei dettagli senza riguardo.

  • Scrivere un programma di test che sostituisce un'estremità del protocollo: provare a suscitare risposte dall'altra parte per tentativi ed errori.

  • Spesso un protocollo è un discendente di - o almeno collegato in molti modi - a un altro. Vedendo le specifiche e avendo familiarità con molti protocolli, si possono spesso fare delle buone ipotesi sulle sue caratteristiche e abilità.