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数组
以上就是Python解析pcap文件方法示例的详细内容,更多关于Python解析pcap文件的资料请关注我们其它相关文章!
相关推荐
-
利用Python库Scapy解析pcap文件的方法
每次写博客都是源于纳闷,python解析pcap这么常用的例子网上竟然没有,全是一堆命令行执行的python,能用吗?玩呢? pip安装scapy,然后解析pcap: import scapy from scapy.all import * from scapy.utils import PcapReader packets=rdpcap("./test.pcap") for data in packets: if 'UDP' in data: s = repr(data) print
-
使用PYTHON解析Wireshark的PCAP文件方法
PYTHON首先要安装scapy模块 PY3的安装scapy-python3,使用PIP安装就好了,注意,PY3无法使用pyinstaller打包文件,PY2正常 PY2的安装scapy,比较麻烦 from scapy.all import * pcaps = rdpcap("file.pcap") pcaps便是解析后的类似结构体的东西了 <pre name="code" class="python">packet=pcaps[0]
-
利用python-pypcap抓取带VLAN标签的数据包方法
1.背景介绍 在采用通常的socket抓包方式下,操作系统会自动将收到包的VLAN信息剥离,导致上层应用收到的包不会含有VLAN标签信息.而libpcap虽然是基于socket实现抓包,但在收到数据包后,会进一步恢复出剥离的VLAN信息,能够满足需要抓取带VLAN标签信息的数据包的需求场景. python-pypcap包是对libpcap库的python语言封装,本文主要介绍如果利用python-pypcap在网络接口抓取带VLAN标签的数据包. 2.环境准备 libpcap-0.9.4 pyt
-
python 读取修改pcap包的例子
思路 利用scapy库,在这个库的基础下能够做很多的事情,python读取pcap包网上一找一大把 将读取出来的pcap包改一个名字,然后写回,这不就OK了吗 写回的函数是:scapy.wrpcap('filename',list) 第一个参数是filename,第二个参数是一个list,保存报文的list 样例代码 #coding=utf8 import scapy.all as scapy from scapy.layers import http import random #p就是一堆数
-
python 抓包保存为pcap文件并解析的实例
首先是抓包,使用scapy模块, sniff()函数 在其中参数为本地文件路径时,操作为打开本地文件 若参数为BPF过滤规则和回调函数,则进行Sniff,回调函数用于对Sniff到的数据包进行处理 import os from scapy.all import * pkts=[] count=0 pcapnum=0 filename='' def test_dump_file(dump_file): print "Testing the dump file..." if os.path
-
Python解析pcap文件示例
引言 近期做一些基于TCP协议的项目,跟其他接口方调试时经常出现不一致的问题,而程序日志又不能完成保证公正,就只能通过tcpdump抓包的方式来排查问题了.由于是自定义的协议,用wireshark只能解析成16进制的报文,排查起来并不方便,而实现相关的插件又要用到C++或者LUA语言,这两者我都极少接触,因此,只能临时用Python写程序来解析了~ 首先,需要安装对应的依赖: pip install dpkt 我们用tcpdump或者wireshark抓到对应的内容后,保存为 tcp-log.p
-
Python 解析xml文件的示例
1.获取xml树 import xml.etree.ElementTree as ET def getTree(xmlName): xmlName = xmlName.strip() try: tree = ET.parse(xmlName) except: tree = None print 'Analysis xml file fail,file name: {}'.format(xmlName) return tree 2.获取根节点 def getRoot(tree): if tree
-
Python解析json文件相关知识学习
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等).这些特性使JSON成为理想的数据交换语言.易于人阅读和编写,同时也易于机器解析和生成. 今天用pytho
-
python解析xml文件操作实例
本文实例讲述了python解析xml文件操作的实现方法.分享给大家供大家参考.具体方法如下: xml文件内容如下: <?xml version="1.0" ?> <!--Simple xml document__chapter 8--> <book> <title> sample xml thing </title> <author> <name> <first> ma </first
-
python解析xml文件实例分析
本文实例讲述了python解析xml文件的方法.分享给大家供大家参考.具体如下: python解析xml非常方便.在dive into python中也有讲解. 如果xml的结构如下: <?xml version="1.0" encoding="utf-8"?> <books> <book> <author>zoer</author> <title>think in java</title
-
Python解析Excle文件中的数据方法
在公司里面,人力资源部每到发工资的时候就会头疼,如果公司内部有100多号员工,那么发完工资后需要给员工发送工资条的话,那么就需要截图如下图, 但是在公司的薪水保密协议不允许公开所有人的薪水,因此我们需要一个一个的发,现在我们给张三发一下薪资条 如果我们给1000人发的话,我们每个人都截图两次,面上的标题和线面的数据两栏,那么这个工程是比较大的.这个工作是循环的,死板的,那么我们就需要使用程序来解决这个问题. #coding=utf-8 import xlrd data = xlrd.open_w
-
python解析xml文件方式(解析、更新、写入)
Overview 这篇博客内容将包括对XML文件的解析.追加新元素后写入到XML,以及更新原XML文件中某结点的值.使用的是python的xml.dom.minidom包,详情可见其官方文档:xml.dom.minidom官方文档.全文都将围绕以下的customer.xml进行操作: <?xml version="1.0" encoding="utf-8" ?> <!-- This is list of customers --> <c
-
python解析.pyd文件的详细代码
有的时候,为了对python文件进行加密,会把python模块编译成.pyd文件,供其他人调用.拿到一个.pyd文件,在没有文档说明的情况下,可以试试查看模块内的一些函数和类的用法. 首先 import XXX(pyd的文件名) 然后直接 print(dir(XXX)) print(help(xxx)) 其中dir( ) 列出了属性和方法 而hlep()直接列出了其中的函数以及参数,并且是源码的函数名和类型,非常直观. 例如我这里的一个例子,输出如下: ['RC', '__doc__', '__
-
Python解析CDD文件的代码详解
目录 前言 基本介绍 前言 在实际诊断测试开发中,我们写测试脚本会用到CDD文件中的诊断,常规做法可能是用到哪个就定义哪个,这样做的弊端是有可能造成重复定义,或者整个工程中有不同的变量名,较为好的方式是头文件中统一定义,如果人去单独定义的话,CDD中诊断有比较多,浪费时间,所以基于这个需求,我想到了可以用Python 脚本解析CDD文件,统一定义,一键生成,十分快捷.测试软硬件环境:Win10 X64Python 3.8PyQt5 5.16.5 基本介绍 1. 如下图是工具的界面,输入是cdd
随机推荐
- MooTools 1.2中的Drag.Move来实现拖放
- Angular.js与Bootstrap相结合实现表格分页代码
- 移动端脚本框架Hammer.js
- 硬盘分区用XP和2003自带工具
- 提权思路之MSSQL差异备份取系统权限
- Swift中循环语句中的转移语句 break 和 continue
- Javascript document.referrer判断访客来源网址
- 效控制C#中label输出文字的长度,自动换行
- Android字符串和十六进制相互转化出现的中文乱码问题
- JS基于正则截取替换特定字符之间字符串操作示例
- 关于g++和gcc的相同点和区别详解
- MyBatis接口的简单实现原理分析
- 基于jQuery的Tab选项框效果代码(插件)
- JS判断字符串变量是否含有某个字串的实现方法
- JS中attr和prop属性的区别以及优先选择示例介绍
- 微信小程序 image组件binderror使用例子与js中的onerror区别
- Android使用Messenger实现service与activity交互
- Centos7远程桌面 vnc/vnc-server的设置详解
- 解析C++的线性表链式存储设计与相关的API实现
- Java上传文件进度条的实现方法(附demo源码下载)