網站首頁 編程語言 正文
引言
近期做一些基于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
相關推薦
- 2022-07-22 React警告:Can‘t perform a React state update on an u
- 2022-05-09 分享Pytorch獲取中間層輸出的3種方法_python
- 2022-12-11 Dart多個future隊列完成加入順序關系及原子性論證_Dart
- 2022-10-07 C++函數指針與指針函數有哪些關系和區別_C 語言
- 2022-06-16 golang?gorm的預加載及軟刪硬刪的數據操作示例_Golang
- 2023-01-30 uniapp語音識別(訊飛語音)轉文字_其它相關
- 2022-05-15 C++的數據共享與保護你了解嗎_C 語言
- 2022-06-23 詳解windows?server?2012的DHCP保留地址導出導入、DHCP故障轉移配置、DNS條
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支