我正在使用libpcap來檢查http信息。 libpcap無法重新組裝tcp段。 有很多角落案件要手動處理。我還閱讀wireshark源代碼。這個太大了。 有沒有任何開源代碼可以重新組裝tcp和酶c中的http數據?如何重新組裝tcp並在c代碼中解碼http信息?
回答
我檢查了uip。它不支持http協議。我想解碼http信息。 – user1282390 2012-03-21 03:45:00
它是如何使用libnids的? Libnids提供IP碎片整理,TCP流組裝功能。 – user1282390 2012-03-21 06:15:41
早先已經黑客代碼漂網,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
很多tcp在Web上重新評估代碼。但是,從tcp流解碼http信息在哪裏? – user1282390 2012-03-21 04:13:54
http信息是什麼意思?標題等?正如http://tools.ietf.org/html/rfc2616 – Morpfh 2012-03-21 04:33:33
抱歉我的困惑。英語不是我的母語。我只想在c代碼中獲得一些tcp和http信息。例如ad src IP/port dst IP /端口。 http xforward-flag ... – user1282390 2012-03-21 07:48:30
最簡單的方法,這是下載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字節的量,並且將其打印逐字符。
- 1. 如何在LUA解剖器中重新組裝TCP數據包?
- 2. 如何重新組裝tcp段?
- 3. 如何重新分解這段代碼?
- 4. 重新組裝的TCP段
- 5. 如何在C++代碼中包裝C二維數組(Foo **)?
- 6. 組裝C僞代碼
- 7. 如何將此代碼分解以避免C#代碼重複?
- 8. 在Python代碼和C++代碼之間共享信息(IPC)
- 9. 如何在phpstorm中重新格式化代碼時停止包裝代碼?
- 10. 發生AJAX HTTP錯誤.HTTP結果代碼:200Debugging信息如下
- 11. 如何(不)重新運行C++代碼?
- 12. Python請求HTTP頁面並使用源代碼信息
- 13. 如何在php中解密C#代碼
- 14. 如何在DPDK代碼中解釋此C代碼
- 15. Jquery代碼從數組中找到重複的信息
- 16. 如何在Python中重新組裝TCP數據包?
- 17. 獲取WMI信息的C代碼
- 18. 如何處理從C#代碼中的http響應重定向?
- 19. 在Matlab中包裝C++代碼以訪問Matlab中的程序狀態信息
- 20. 如何在C++代碼中顯示託管C#代碼的異常消息
- 21. 如何在C程序中重複一組代碼?
- 22. 如何在C#代碼中使用w32tm重新同步時間?
- 23. 如何在C#代碼中重新啓用EntranceThemeTransition?
- 24. 如何重新啓動(重新啓動)與C#代碼的VPS?
- 25. 通過C#解析/重構C#代碼
- 26. 如何解釋c#中的僞代碼?
- 27. 如何寫解密代碼在C#
- 28. 如何理解短信發送代碼?
- 29. 網絡通信TCP [代碼設計]
- 30. 這段代碼如何整齊地列出信息並列?
編寫一個健壯的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