关于python+scapy抓包与解析

 更新时间:2023年08月24日 10:36:50   作者:B0t0w1  
这篇文章主要介绍了关于python+scapy抓包与解析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

最近一直在使用做流量分析,今天把 scapy 部分做一个总结。

Python 的 scapy 库可以方便的抓包与解析包,无奈资料很少,官方例子有限,大神博客很少提及, 经过一番尝试后,总结以下几点用法以便大家以后使用。

python scapy抓包与解析

作为初学者,关心的首先是如何安装,本人电脑系统是 fedora, 建议使用 linux。

推荐下载 pip,直接:(当然得在 su 权限下)

pip install scapy

在 terminal 中输入 scapy, 如果有下面形式即安装好了:

抓包

from scapy.all import *
dpkt = sniff(iface = "wlp7s0", count = 100)

sniff() 是 scapy 内置函数,有很多参数, 如图:

这里就不一一解释, iface 参数是网卡信息, 也就是 eth0 之类的, 我这里是 wlp7s0, count 参数是抓取的连接数量, 这里是 100, 还有 filter 参数是过滤等。

pcap 格式保存

wrpcap("demo.pcap", dpkt)

pcap 格式较为通用, 可以将上述抓取的包保存为 pcap,dpkt 是上面抓取的流量变量。

数据包解析

可以看到有 94 个 tcp 包, 4个 udp 包, 还有两个其他类型的包。

类似于 python 中的 list 类型, 可以使用下标访问, 比如用 python 可写个 for 循环遍历每个连接。

长度可以使用 len 计算

注意这里 dpkt 不是 list 类型, 也不是 string 类型, 因此如果要进行字符串处理,要把它转换为 string 类型,

scapy强大地方在于可以通过字段来查看每一个字段信息,首先我们看一下它有那些字段:

可以使用 ls() 查看支持的协议类型,有很多,具体看几个:

甚至还有硬件信息:

还有很多, 可以自己去看一下, 不附图了。

知道它有那些字段后, 就可以调用了,随便举个例子, 比如第四个连接 dpkt[3]

它的结构非常清楚,首先是 Ether 层, 然后是 IP 层, 然后是 TCP 层,访问时就按张如图就可以访问各个字段信息。

要注意的是, 不是所有连接都是这几个层, Ether 是都有的, 但是 udp 连接肯定就没有 TCP 层, 而是改为 udp 层, ARP 包肯定就没有 IP 层, 更没有 TCP 层,如果再 arp 连接使用 dpkt[i][IP] 就会报错, 因为它没有 IP 这一层。

python 使用时可以时使用 ether 的 type 判断是不是 IP 包, 使用 ip 的 proto 判断时 tcp 还是 udp。

访问包中的报文可以使用 dpkt[i][Raw].load 字段, (假设第 i +1 个包有报文信息),同样,如果没有报文信息, 就没有 Raw 这一层,也就没有 load 这一字段。比如这里:

第六个连接并没有 Raw 数据,访问出错, 第七个有 Raw 数据,可以得到报文信息。

使用离线数据包

pcap = sniff(offline = "xx/xx.pcap")`

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 关于python简单的爬虫操作(requests和etree)

    关于python简单的爬虫操作(requests和etree)

    这篇文章主要介绍了关于python简单的爬虫操作(requests和etree),文中提供了实现代码,需要的朋友可以参考下
    2023-04-04
  • Python图像处理之目标物体轮廓提取的实现方法

    Python图像处理之目标物体轮廓提取的实现方法

    目标物体的轮廓实质是指一系列像素点构成,这些点构成了一个有序的点集,这篇文章主要给大家介绍了关于Python图像处理之目标物体轮廓提取的实现方法,需要的朋友可以参考下
    2021-08-08
  • Python实现视频字幕时间轴格式转换的示例

    Python实现视频字幕时间轴格式转换的示例

    本文主要介绍了Python实现视频字幕时间轴格式转换的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-11-11
  • 基于python编写的微博应用

    基于python编写的微博应用

    这篇文章主要介绍了基于python编写的微博应用,是针对微博开放平台SDK开发的具体应用,非常具有实用价值,需要的朋友可以参考下
    2014-10-10
  • 在python中,使用scatter绘制散点图的实例

    在python中,使用scatter绘制散点图的实例

    今天小编就为大家分享一篇在python中,使用scatter绘制散点图的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • 使用 Django Highcharts 实现数据可视化过程解析

    使用 Django Highcharts 实现数据可视化过程解析

    这篇文章主要介绍了使用 Django Highcharts 实现数据可视化过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Python利用Spire.XLS for Python将Excel转换为图片

    Python利用Spire.XLS for Python将Excel转换为图片

    在数据分析与报表自动化场景中,将 Excel 表格直接转换为图片,已成为提升报告可读性与共享效率的重要手段,本文将介绍如何使用 Spire.XLS for Python 将 Excel 工作表转换为图片,并支持 指定单元格区域转为图片,需要的朋友可以参考下
    2025-10-10
  • Python实现二分法算法实例

    Python实现二分法算法实例

    这篇文章主要介绍了Python实现二分法算法实例,本文先是介绍了算法规则,然后给出了实现例子,需要的朋友可以参考下
    2015-02-02
  • Pandas之ReIndex重新索引的实现

    Pandas之ReIndex重新索引的实现

    这篇文章主要介绍了Pandas之ReIndex重新索引的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • 使用python将mdb数据库文件导入postgresql数据库示例

    使用python将mdb数据库文件导入postgresql数据库示例

    mdb格式文件可以通过mdbtools工具将内中包含的每张表导出到csv格式文件。由于access数据库和postgresQL数据库格式上会存在不通性,所以使用python的文件处理,将所得csv文件修改成正确、能识别的格式
    2014-02-02

最新评论