日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Python解析pcap文件示例_python

作者:花匠小林 ? 更新時間: 2022-09-07 編程語言

引言

近期做一些基于TCP協議的項目,跟其他接口方調試時經常出現不一致的問題,而程序日志又不能完成保證公正,就只能通過tcpdump抓包的方式來排查問題了。
由于是自定義的協議,用wireshark只能解析成16進制的報文,排查起來并不方便,而實現相關的插件又要用到C++或者LUA語言,這兩者我都極少接觸,因此,只能臨時用Python寫程序來解析了~

首先,需要安裝對應的依賴:

pip install dpkt

我們用tcpdump或者wireshark抓到對應的內容后,保存為?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
????????# 過濾掉內容為空的包
????????if len(tcp.data) == 0:
????????????continue
????????# 發送方的IP
????????src = socket.inet_ntoa(ip.src)
????????# 接收方的IP
????????dst = socket.inet_ntoa(ip.dst)
????????# 報文內容(byte數組)
????????byteArray = tcp.data
????????# TODO 根據自定義的協議內容,解析bytes數組

原文鏈接:https://segmentfault.com/a/1190000039796364

欄目分類
最近更新