当前位置: 代码网 > it编程>前端脚本>Python > 使用Python分析wireshark文件

使用Python分析wireshark文件

2024年12月01日 Python 我要评论
1 pyshark库支持wireshark的解析等。安装pysharkpip install pyshark2 dpkt库这也是一个用于分析pcap文件的库,是所有分析pcap库中最快的一个。官方参考

1 pyshark库

支持wireshark的解析等。

安装pyshark

pip install pyshark

2 dpkt库

这也是一个用于分析pcap文件的库,是所有分析pcap库中最快的一个。

官方参考文档:

https://dpkt.readthedocs.io/en/latest/print_packets.html

https://dpkt.readthedocs.io/en/latest/examples.html#examples-in-dpkt-examples

安装

pip install dpkt

3 应用实例

dpkt读pcap文件

f = open('new1.pcap','rb')
pcap = dpkt.pcap.reader(f)
# ts是timestemp时间戳,buf(二进制数据)是主体的数据包信息。
for ts,buf in pcap:
    pass

获取每个数据包的ip地址

#由buf这个二进制数据转化为ethernet类的对象
eth = dpkt.ethernet.ethernet(buf)
 
ip_src = eth.data.src #这里是获取这个数据包的源ip
#要注意的是,这里的源ip是以二进制的方式返回的,如果我们要获取点分十进制的ip地址
#可以这样做
def inet_to_str(inet):
    try:
        return socket.inet_ntop(socket.af_inet,inet)
    except:
        return false#这里因为具体需要把ipv6给丢弃了
        #如果希望ipv6也能获取可以这样
        #return socket.inet_ntop(socket.af_inet6,inet)
ip_src = inet_to_str(eth.data.src)
ip_dst = inet_to_str(eth.data.dst)#目的ip\

获取报文中的ip

#coding=utf-8
import dpkt
import socket
import time
 
def inet_to_str(inet):
    try:
        return socket.inet_ntop(socket.af_inet,inet)
    except:
        return false
 
def getip():
    f = open('new1.pcap','rb')#要以rb方式打开,用r方式打开会报错
    pcap = dpkt.pcap.reader(f)
    for ts,buf in pcap:
        print(ts)打印时间戳
        eth=dpkt.ethernet.ethernet(buf)
 
        #这里也是对没有ip段的包过滤掉
        if eth.type != dpkt.ethernet.eth_type_ip:
            continue
 
        ip = eth.data
        ip_src = inet_to_str(ip.src)
        ip_dst = inet_to_str(ip.dst)
        print(ip_src+'-->'+ip_dst)
 
if __name__=='__main__':
getip()

修改报文中的源ip和目的

import dpkt
import os
import socket

test = open("new.pcap","wb")
writer = dpkt.pcap.writer(test)
f=open("old.pcap",'rb')
packets = dpkt.pcap.reader(f)
for ts,buf in packets:
    eth = dpkt.ethernet.ethernet(buf)

    # 这里是将点分十进制转化成二进制
    eth.data.src = socket.inet_pton(socket.af_inet, "192.168.1.1")
    eth.data.dst = socket.inet_pton(socket.af_inet, "192.168.1.2")
    writer.writepkt(eth,ts=ts)#不加ts参数,数据包时间戳会默认为当前时间
    test.flush()
test.close()

到此这篇关于使用python分析wireshark文件的文章就介绍到这了,更多相关python分析wireshark文件内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

  • Python OpenCV实现图像形状检测

    Python OpenCV实现图像形状检测

    图像形状检测是计算机视觉领域中的一项关键技术,广泛应用于工业自动化、机器人视觉、医学图像处理等多个领域。本文将详细介绍如何使用python和opencv库实现图... [阅读全文]
  • Python实现批量图片去重

    Python实现批量图片去重

    1、库的介绍在日常办公的时候,我们经常需要对图片进行去重后保存,如果我们一张张进行寻找,将会非常的耗时,这时候我们可以利用python对图片进行去重处理,保留唯... [阅读全文]
  • python实现二维列表的列表生成式

    python实现二维列表的列表生成式

    二维列表的列表生成式允许你生成一个列表,其中每个元素本身也是一个列表。这在处理矩阵或表格数据时非常有用。以下是如何使用列表生成式来创建二维列表的示例:基本语法[... [阅读全文]
  • 基于Python实现IP代理池

    基于Python实现IP代理池

    一、引言在网络爬虫或数据采集领域,ip代理池是一种常用的工具,用于隐藏真实ip地址、绕过ip限制或增加请求的匿名性。本文将详细介绍如何使用python实现一个简... [阅读全文]
  • 使用Python实现获取Apollo配置

    使用Python实现获取Apollo配置

    1. 简介apollo(阿波罗)是一款可靠的分布式配置管理中心,能够集中化管理应用不同环境、不同集群的配置。本教程将介绍如何在python项目中轻松获取和使用a... [阅读全文]
  • 使用python字典统计CSV数据的步骤和示例代码

    使用python字典统计CSV数据的步骤和示例代码

    1.用python字典统计csv数据的步骤和代码示例为了使用python字典来统计csv数据,我们可以使用内置的csv模块来读取csv文件,并使用字典来存储统计... [阅读全文]

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com