基于Python3+Scapy的数据包流量特征批量分析工具

项目源码

https://github.com/sunbcy/PcapAnalyzer

适用范围以及使用说明

目前该项目由作者独立维护,可以离线批量识别项目根目录下的所有数据包格式文件识别并分析数据包中的HTTP、HTTPS、DNS等协议加密、解密的特征部分主要是域名和请求的信息,不包含回包信息),当然想要识别的话,也可以把我上面的工具clone到本地自己做相应定制的。最后会输出一个TXT文档,包含了解密数据包中HTTP请求的部分以及加密数据包中域名的集合,具体内容都可以修改源代码定制。
本项目的特点:源码结构简单易懂,根据自己需要定制输出,对小白友好,适合网络协议分析学习。

背景

在工作中,一些岗位往往需要分析大量数据包,根据需要提取特征码用以分析。对于一些新手和小白来说,时常感到力不从心,作者在这方面曾经也是小白,感触颇深。当然在离线数据包分析这方面,有Wireshark这个强大的工具。但是实际工作中,作者发现当分析的数据包达到一定数量的时候,人力显的略微有那么点微不足道。这个时候脑子里响起“人生苦短,我用Python”的口号。

环境准备及运行说明

  • ≥Python3.6(本工具下载到本地最好保证Python3.6以上,由于使用了大量的f-string)
  • scapy模块–用于读取数据包
  • scapy_ssl_tls模块–用于分析SSL/TLS部分的协议
  • 运行脚本时确保PC内存尽量大一点(16G比较合适,8G可能有点吃力,数据包越大,分析时间越久,占用内存越多,内存少可能会出现卡顿现象。

常见协议分析识别

根据网络层的proto字段可识别出TCP、UDP等常用协议以及FTP、SSH、IPv4、IPv6、Telnet、SMTP、DHCP、TFTP、POP3、IMAP4等协议。

TCP协议识别

跟Wireshark下的数据流简单对比下,GET和POST的流,显示完美。

  1. 提取HTTP协议信息
    GET
    输出文档中的HTTP/GET示例
    Wireshark中的HTTP/GET对比

    POST
    输出文档中的HTTP/POST示例
    Wireshark中的HTTP/POST对比
    以下几种字段都可以做到相应的匹配。
    PUT
    HEAD
    OPTIONS
    此处HTTP协议类型的数据流还可以进一步细分,本项目当前只支持识别以上字段开头的数据流,其他的字段留给大家自己去定制。

  2. 提取HTTPS协议信息
    主要提取了443端口的Client Hello数据流中的域名信息。
    输出文档中的HTTPS示例

UDP协议识别

  1. 提取DNS协议信息
    主要提取了数据流中的DNS域名请求信息。
    [70]是指数据流编号,后面跟着此数据流的五元组,下面第一行是请求的该DNS域名,第二行是该域名对应的hex字符串,由空格对应上面域名的小数点分隔符,每开头的两个字符代表该段的长度,如:0c表示第一段有12个字符输出文档中的DNS示例

输出TXT文档信息

输出的文档是一个TXT的文档,汇总了上面识别的各个数据流的结果以及下面的域名信息,这些都是作者在反复看Wireshark分析数据包之后很难一下子就汇总的信息。本项目也算是给网络数据包分析带来一个新姿势,可以说开发这个分析工具还是给作者带来了一些方便的,也希望这个项目能方便到大家

SSL NAME

在这里插入图片描述

DNS NAME

在这里插入图片描述

后续

这个项目会继续完善下去,现在存在的问题还是有一些,后面准备用到Django和Flask对本项目进行重构,然后加上数据可视化分析,或许会更直观,也能惠及到更多的网络分析人员!

基于PythonScapy是一个功能强大的网络数据包操作库,它可以用来创建、发送、捕获和分析网络数据包。通过使用Scapy,我们可以很方便地设计一个协议编辑器。 协议编辑器是一种用于创建、编辑和分析特定协议的工具。它通常用于开发和测试网络协议,以确保其可靠性和安全性。 基于Scapy的协议编辑器可以实现以下功能: 1. 协议定义:使用Scapy的Packet类,可以轻松定义特定协议的数据包结构。我们可以按照协议规范定义数据包的各个字段、类型和长度等。 2. 数据包编辑:通过使用Scapy的功能,可以对数据包的各个字段进行编辑。我们可以修改数据包的源地址、目的地址、协议版本等。 3. 数据包生成:利用Scapy的Packet类,可以方便地生成符合自定义协议的数据包。只需编写相应的代码,设置字段值,并使用Scapy提供的函数将数据包发送到网络上。 4. 数据包捕获:利用Scapy的sniff函数,可以捕获并分析网络中的数据包。我们可以根据自己的需求设置过滤条件,只捕获符合协议规范的数据包。 5. 数据包分析:通过Scapy强大的分析功能,可以对捕获到的数据包进行深入分析。我们可以查看数据包的各个字段、数据长度、校验和等信息,以及协议中定义的特定值。 总之,基于PythonScapy可以作为一个强大的工具,帮助我们设计、创建和测试各种网络协议。通过使用Scapy,我们可以方便地定义协议的数据包结构,编辑和生成符合协议的数据包,以及对网络数据包进行捕获和分析
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sunbcy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值