Python解析pcap文件示例
引言
近期做一些基于TCP協(xié)議的項(xiàng)目,跟其他接口方調(diào)試時(shí)經(jīng)常出現(xiàn)不一致的問(wèn)題,而程序日志又不能完成保證公正,就只能通過(guò)tcpdump抓包的方式來(lái)排查問(wèn)題了。
由于是自定義的協(xié)議,用wireshark只能解析成16進(jìn)制的報(bào)文,排查起來(lái)并不方便,而實(shí)現(xiàn)相關(guān)的插件又要用到C++或者LUA語(yǔ)言,這兩者我都極少接觸,因此,只能臨時(shí)用Python寫程序來(lái)解析了~
首先,需要安裝對(duì)應(yīng)的依賴:
pip install dpkt
我們用tcpdump或者wireshark抓到對(duì)應(yīng)的內(nèi)容后,保存為 tcp-log.pcap 文件,然后就可以解析了(以下代碼基于Python3):
import dpkt import socket file = 'tcp-log.pcap' with open(file, 'rb') as fr: ????pcap = dpkt.pcap.Reader(fr) ????for timestamp, buffer in pcap: ????????ethernet = dpkt.ethernet.Ethernet(buffer) ????????# 我們僅需要TCP的包 ????????if not isinstance(ethernet.data, dpkt.ip.IP): ????????????continue ????????ip = ethernet.data ????????if not isinstance(ip.data, dpkt.tcp.TCP): ????????????continue ????????tcp = ip.data ????????# 過(guò)濾掉內(nèi)容為空的包 ????????if len(tcp.data) == 0: ????????????continue ????????# 發(fā)送方的IP ????????src = socket.inet_ntoa(ip.src) ????????# 接收方的IP ????????dst = socket.inet_ntoa(ip.dst) ????????# 報(bào)文內(nèi)容(byte數(shù)組) ????????byteArray = tcp.data ????????# TODO 根據(jù)自定義的協(xié)議內(nèi)容,解析bytes數(shù)組
以上就是Python解析pcap文件方法示例的詳細(xì)內(nèi)容,更多關(guān)于Python解析pcap文件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python dataprep庫(kù)簡(jiǎn)化加速數(shù)據(jù)科學(xué)操作
這篇文章主要為大家介紹了python dataprep庫(kù)簡(jiǎn)化加速數(shù)據(jù)科學(xué)操作,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
python繪制散點(diǎn)圖并標(biāo)記序號(hào)的方法
今天小編就為大家分享一篇python繪制散點(diǎn)圖并標(biāo)記序號(hào)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
Python 中的 with open文件操作的最佳實(shí)踐
在 Python 中,with open() 提供了一個(gè)簡(jiǎn)潔而安全的方式來(lái)處理文件操作,它不僅能確保文件在操作完成后自動(dòng)關(guān)閉,還能處理文件操作中的異常,避免資源泄漏,本文給大家介紹Python 中的 with open文件操作的最佳實(shí)踐,感興趣的朋友一起看看吧2025-04-04
Python (Win)readline和tab補(bǔ)全的安裝方法
今天小編就為大家分享一篇Python (Win)readline和tab補(bǔ)全的安裝方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08
通過(guò) Python 和 OpenCV 實(shí)現(xiàn)目標(biāo)數(shù)量監(jiān)控
這篇文章主要介紹了如何通過(guò) Python 和 OpenCV 實(shí)現(xiàn)目標(biāo)數(shù)量監(jiān)控,本文通過(guò)實(shí)例代碼圖文的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01
Python將多個(gè)excel文件合并為一個(gè)文件
這篇文章主要為大家詳細(xì)介紹了Python將多個(gè)excel文件合并為一個(gè)文件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01

