python scapy 抓包_python+scapy 抓包与解析

本文介绍了如何使用Python的dpkt库解析网络数据包,包括TCP、UDP和其他类型的包。重点讲解了包结构、协议类型识别、字段访问方法,并以实例演示了如何通过dpkt查看和操作不同连接的各层信息,以及注意事项。
摘要由CSDN通过智能技术生成

查看详细信息:

L3Byb3h5L2h0dHAvaW1nLmJsb2cuY3Nkbi5uZXQvMjAxNjA1MDkwODM4MDQzMDU=.jpg

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

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

L3Byb3h5L2h0dHAvaW1nLmJsb2cuY3Nkbi5uZXQvMjAxNjA1MDkwODQwNTYxNzE=.jpg

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

L3Byb3h5L2h0dHAvaW1nLmJsb2cuY3Nkbi5uZXQvMjAxNjA1MDkwODQzNTU2OTE=.jpg

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

L3Byb3h5L2h0dHAvaW1nLmJsb2cuY3Nkbi5uZXQvMjAxNjA1MDkwODQ2MTgwNzQ=.jpg

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

L3Byb3h5L2h0dHAvaW1nLmJsb2cuY3Nkbi5uZXQvMjAxNjA1MDkwODQ4NDMyNjA=.jpg

L3Byb3h5L2h0dHAvaW1nLmJsb2cuY3Nkbi5uZXQvMjAxNjA1MDkwODQ4NTcxMzU=.jpg

甚至还有硬件信息:

L3Byb3h5L2h0dHAvaW1nLmJsb2cuY3Nkbi5uZXQvMjAxNjA1MDkwODQ5NTIxOTk=.jpg

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

知道它有那些字段后, 就可以调用了:

随便举个例子, 比如第四个连接 dpkt[3]

L3Byb3h5L2h0dHAvaW1nLmJsb2cuY3Nkbi5uZXQvMjAxNjA1MDkwODUzNDE3ODI=.jpg

它的结构非常清楚,首先是 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 这一字段。比如这里:

L3Byb3h5L2h0dHAvaW1nLmJsb2cuY3Nkbi5uZXQvMjAxNjA1MDkwOTAyNDIyMTU=.jpg

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

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值