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文件的资料请关注我们其它相关文章!

(0)

相关推荐

  • 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-pypcap抓取带VLAN标签的数据包方法

    1.背景介绍 在采用通常的socket抓包方式下,操作系统会自动将收到包的VLAN信息剥离,导致上层应用收到的包不会含有VLAN标签信息.而libpcap虽然是基于socket实现抓包,但在收到数据包后,会进一步恢复出剥离的VLAN信息,能够满足需要抓取带VLAN标签信息的数据包的需求场景. python-pypcap包是对libpcap库的python语言封装,本文主要介绍如果利用python-pypcap在网络接口抓取带VLAN标签的数据包. 2.环境准备 libpcap-0.9.4 pyt

  • 使用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库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 读取修改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文件示例

    引言 近期做一些基于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

随机推荐