2012-03-21 32 views
3

我正在使用libpcap來檢查http信息。 libpcap無法重新組裝tcp段。 有很多角落案件要手動處理。我還閱讀wireshark源代碼。這個太大了。 有沒有任何開源代碼可以重新組裝tcp和酶c中的http數據?如何重新組裝tcp並在c代碼中解碼http信息?

+1

編寫一個健壯的TCP重組器是一項不平凡的任務。一個非常成熟的隨[Bro網絡安全監視器](http://www.bro-ids.org)一起發佈。它附帶了各種應用層解析器,包括HTTP。重新編譯器是用C++編寫的,但可能是一個很好的靈感來源。應用層協議通過[BinPac](http://www.icir.org/vern/papers/binpac.IMC06.pdf)聲明式指定。 – mavam 2012-04-15 03:50:48

回答

0

最小TCP/IP堆棧我知道的,這是開源是uIP,但它是有點奇怪,因爲它被設計用於非常小的系統(微控制器)

另一個小程序源碼TCP/IP協議棧,這是一個更傳統的是lwIP

+0

我檢查了uip。它不支持http協議。我想解碼http信息。 – user1282390 2012-03-21 03:45:00

+0

它是如何使用libnids的? Libnids提供IP碎片整理,TCP流組裝功能。 – user1282390 2012-03-21 06:15:41

1

早先已經黑客代碼漂網,tcpflow,pcap等。

tcpflow可以從tcpdump重新組裝轉儲。一個「典型」工作鏈可能是:

$ tcpdump -nnieth0 -w dump.raw 
# dump dum dump 
$ mkdir tmp && cd tmp 
tmp/$ tcpflow -r ../dump.raw 
# This joins the transfers into separate files 
# Now one can investigate each transfere from those separate files 
# Next join them to one: 
tmp/$ cat * > ../dump.flow 
tmp/$ cd .. 
# Extract some data 
$ foremost -i dump.flow 

相信你可以在源代碼中找到一些有用的行。

否則:
一個HTTP解析庫:做HTTP Parser

+0

很多tcp在Web上重新評估代碼。但是,從tcp流解碼http信息在哪裏? – user1282390 2012-03-21 04:13:54

+0

http信息是什麼意思?標題等?正如http://tools.ietf.org/html/rfc2616 – Morpfh 2012-03-21 04:33:33

+0

抱歉我的困惑。英語不是我的母語。我只想在c代碼中獲得一些tcp和http信息。例如ad src IP/port dst IP /端口。 http xforward-flag ... – user1282390 2012-03-21 07:48:30

1

最簡單的方法,這是下載Wireshark的軟件打開PCAP文件或實時捕捉它。之後,右鍵單擊任何數據包並轉到「follow tcp stream」...您將在打開的窗口中看到您的http數據。

如果你想從scratch.-
建立一個程序TCP事務A PCAP文件結構是這樣的:
[pcap_file_header]
       每個數據包
                [pcap_packet] - 這包含包LEN信息
                [IP_HEADER] ----通常大小爲20以上
                [tcp_header]的 - 通常是大小爲20以上
               的[數據包] --- len存儲在pcap數據包標頭中

現在閱讀信息,首先讓您的pcap文件在str EAM指針。
讀取包的文件頭(谷歌的各種結構類型的)
開始一個循環
       針對每個分組從文件或流          
               讀pcap_phdr      添加ip_hdr長度和tcp hdr長度的偏移
               例如指針=指針+ 20(對於腹膜內)20(對於TCP)
指針應指向數據 所以只給讀pcap_phdr.caplen字節的量,並且將其打印逐字符。

相關問題