Python解析pcap文件示例
作者:花匠小林 发布时间:2023-05-16 00:08:45
标签:Python,pcap,文件解析
引言
近期做一些基于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
0
投稿
猜你喜欢
- 在Python中,装饰器一般用来修饰函数,实现公共功能,达到代码复用的目的。在函数定义前加上@xxxx,然后函数就注入了某些行为,很神奇!然
- 有没有曾经为IE浏览器中长按钮莫名其妙的padding感到困扰?在分析解决方法之前,我们首先来看一下问题所在。在IE中,如果按钮文本比较长,
- 有一个古老的争论,是关于在哪里存储应用程序业务逻辑的:是在应用程序本身的业务逻辑层中还是在数据库层中。应用程序逻辑层的绝对支持者提出,数据库
- function chinese2unicode(Str) &nbs
- 机器A: select instance_name from v$instance; select name from v$database
- 很多人认为python中的字典是无序的,因为它是按照hash来存储的,但是python中有个模块collections(英文,收集、集合),
- 杭州最美的季节里,淘宝无障碍访问改善小组有幸邀请到盲人在线站长——争渡读屏团队成员——杨永全同学和我们一起面对面交流网站无障碍访问方面的问题
- Python2.7Mac OS抓取的是电影天堂里面最新电影的页面。链接地址: http://www.dytt8.net/html/gndy/
- 简介Tornado龙卷风是一个开源的网络服务器框架,它是基于社交聚合网站FriendFeed的实时信息服务开发而来的。2007年由4名Goo
- import retext='V101_renow.Android.2.2.Normal.1.Alpha.apk?IMSI=4600
- SQL Server数据库查询速度慢的原因有很多,常见的有以下几种:1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)
- 生活形态(Life-Style)的概念源自社会学与心理学,六十年代即有学者正式引用到市场营销领域,并运用其心理影射与多维度等特质,着力解释人
- 1.变量命名1)命名的规范性变量名可以包括字母、数字、下划线,但是数字不能做为开头。系统关键字不能做变量名使用除了下划线之个,其它符号不能做
- HTML表单是网站交互性的经典方式。 本章将介绍如何用Django对用户提交的表单数据进行处理。一、HTTP 请求HTTP协议以"
- buffer:下载数据缓冲区,以字节为单位,缺省依赖操作系统 consistent:下载期间所涉及的数据保持read only,缺省为n d
- 这篇文章主要介绍了Python字符串格式化输出代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋
- 你可能正建立自己在网上的家-WEB页,又或者它已经被你安置在网络某一角里。无论出于什么目的,你都希望有
- Access数据库被损坏主要分为以下几种情况:1、严重损坏;2、轻度损坏;3、有些表被损坏或有些表的部分记录被损坏。下面就分情况介绍解决办法
- 本文借鉴于张广河教授主编的《数据结构》,对其中的代码进行了完善。从某源点到其余各顶点的最短路径Dijkstra算法可用于求解图中某源点到其余
- 1、from子句组装来自不同数据源的数据; 2、where子句基于指定的条件对记录行进行筛选; 3、group&nb