2010-02-13 7 views
5

ora sto sviluppando un progetto utilizzando winpcap..come so che i pacchetti che vengono sniffati sono solitamente pacchetti frammentati.come riassemblare il segmento tcp?

come rimontare questo segements TCP? .. tutte le idee, suggerimenti o tutorial disponibili? ..

questo suppongo di essere l'unico modo per visualizzare l'intestazione HTTP ...

grazie! ..

risposta

4

TCP è un protocollo flusso di byte. la sequenza di byte inviati dall'applicazione http è incapsulata nei segmenti di dati TCP e il flusso di byte viene ricreato prima che i dati vengano consegnati all'applicazione sull'altro lato. poiché si accede ai dataset tcp tramite winpcap, è necessario passare alla parte dati del segmento. l'intestazione di tcp ha una lunghezza fissa di 20 byte + una parte facoltativa che è necessario determinare utilizzando l'API winpcap.

la lunghezza della parte dati nel segmento tcp viene determinata sottraendo la lunghezza dell'intestazione tcp (ottenuta da un campo nel segmento tcp) e la lunghezza dell'intestazione ip (da un campo nel datagramma ip che incapsula il segmento tcp) dalla lunghezza totale (ottenuta da un altro campo nel datagramma IP).

così ora avete la lunghezza totale del segmento e la lunghezza della parte di dati all'interno del segmento. quindi conosci l'offset in cui iniziano i dati della richiesta http.

l'offset è

total length-length of data part 
or 
length of ip-header + length of tcp header 

Non ho usato winpcap. quindi dovrai scoprire come ottenere questi campi usando l'api.

anche i datagrammi IP possono essere ulteriormente frammentati ma mi aspetto che vengano forniti solo datagrammi riassemblati usando questa api. Sei bravo ad andare!

6

Non esiste un frammento TCP. Il protocollo IP ha frammenti. TCP è un protocollo di flusso. È possibile assemblare il flusso nell'ordine previsto seguendo i numeri di sequenza di entrambi i lati. Ogni pacchetto TCP va al livello IP e può essere frammentato lì. È possibile assemblare ogni pacchetto raccogliendo tutti i frammenti e seguendo l'offset del frammento dall'intestazione.
Tutte le informazioni necessarie sono nelle intestazioni. Gli articoli di Wikipedia sono molto utili per spiegare ciò che ogni campo è

http://en.wikipedia.org/wiki/TCP_header#Packet_structure
http://en.wikipedia.org/wiki/IPv4#Header

1

A seconda del traffico di cui si sta tentando di riassemblare passivamente, è possibile imbattersi in alcune tecniche di offuscamento TCP progettate per confondere le persone che cercano di fare esattamente ciò che si sta tentando di fare. Controlla this paper su diversi comportamenti di rimontaggio del sistema operativo.

2

PcapPlusPlus offre questa funzionalità immediata per tutti i principali SO (incluso Windows). Si prega di consultare l'esempio TcpReassembly per vedere un codice funzionante e la documentazione dell'API per capire come utilizzare la funzionalità di riassemblaggio TCP

Problemi correlati