Buoni strumenti per comprendere / decodificare un protocollo di rete di livello superiore

StackOverflow https://stackoverflow.com/questions/1437856

  •  08-07-2019
  •  | 
  •  

Domanda

C'è un problema interessante a portata di mano. Ho un MMOG di ruolo in esecuzione attraverso un'applicazione client (non un browser) che invia le azioni del mio giocatore a un server che mantiene sincronizzati tutti i giocatori rinviando i pacchetti.

Ora, il gioco utilizza un protocollo di livello superiore su TCP / IP per inviare i dati. Tuttavia, WireShark non sa quale protocollo viene utilizzato e mostra tutto ciò che va oltre l'intestazione TCP come dump.

Inoltre, questo dump non ha stringhe di testo semplice. Sebbene il gioco abbia una funzione di chat, la stringa di chat inviata non è vista in questo dump come testo semplice da nessuna parte.

Il mio compito è di decodificare un po 'il protocollo per trovare alcune cose di base sui dati contenuti nei pacchetti.

Qualcuno sa perché la stringa di chat non è visibile come testo normale e se è probabile che venga utilizzato un protocollo standard di alto livello?

Inoltre, ci sono strumenti che possono aiutare a ottenere i dati dal dump?

È stato utile?

Soluzione

Se è crittografato hai hai una possibilità (in effetti, hai una probabilità del 100% se la gestisci correttamente): la chiave deve risiedere da qualche parte sul tuo computer. Basta aprire il tuo debugger preferito, guardare un po '(err, cento byte circa, spero) dei dati che arrivano da un socket, impostare un punto di controllo su quei dati e guardare le tracce dello stack di cose a cui accedono esso. Se sei davvero fortunato, potresti persino vederlo decifrare sul posto. Altrimenti, probabilmente scoprirai che stanno usando un algoritmo di crittografia standard (sarebbero sciocchi non dal punto di vista della sicurezza teorica) o guardando le tracce dello stack (se sei fortunato) o da usando uno dei profiler IV / S-box là fuori (evitare quelli accademici, la maggior parte di loro non funziona senza molti problemi). Molti algoritmi di crittografia utilizzano blocchi di "dati standard" che possono essere rilevati (queste sono le caselle IV / S), questi sono ciò che cerchi in assenza di altre informazioni. Qualunque cosa trovi, cercala su Google e prova a sovrascrivere la loro libreria di crittografia per scaricare i dati che vengono crittografati / decrittografati. Da queste discariche, dovrebbe essere relativamente facile vedere cosa sta succedendo.

REare una sessione crittografata può essere molto divertente, ma richiede abilità con il tuo debugger e molta lettura. Può essere frustrante, ma non ti dispiacerà se passi il tempo per imparare a farlo :)

Altri suggerimenti

Migliore ipotesi: crittografia o compressione.

Perfino telnet supporta la compressione via cavo, anche se l'intero protocollo è interamente basato su testo (beh, quasi).

Potresti provare a eseguire il flusso di dati attraverso alcune comuni utilità di compressione, ma dubito che farebbe molto per te, poiché con ogni probabilità non trasmettono le intestazioni di compressione, ci sono semplicemente alcuni valori predefiniti applicati.

Se si tratta infatti di crittografia, allora sei praticamente fregato (senza molto, molto più sforzo che non ho nemmeno intenzione di iniziare a entrare).

Molto probabilmente è compresso o crittografato.

Se è crittografato non avrai alcuna possibilità.

Se è compresso, dovrai in qualche modo capire quali parti dei dati sono compresse, dove iniziano le parti compresse e qual è l'algoritmo di compressione. Se sei fortunato, ci saranno intestazioni standard che puoi identificare, sebbene siano probabilmente rimosse per risparmiare spazio.

Niente di tutto questo è semplice. Il reverse engineering è difficile. Non ci sono strumenti standard per aiutarti, dovrai solo investigare e provare le cose fino a quando non lo capirai. Il mio consiglio sarebbe di chiedere agli sviluppatori una specifica del protocollo e vedere se sono disposti a supportare ciò che si sta tentando di fare.

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