scapy报文捕获与解析

scapy

scapy介绍

抓包

要抓RoCE报文,可能会遇到以下一些问题:

1.远程调试抓包,权限报错

 scapy.sniff抓包,远程调试可能会遇到权限报错问题,需要使用sudo命令执行,而此时你确实使用的是root登录,但依旧报错。那么,在中断窗口输入以下命令可解决。

sudo su

2、抓得到TCP/IP/UDP报文,抓不到RoCE报文

这个问题要拆解成两部分

1)一种情况是抓不到包,包括TCP/IP/UDP报文均抓不到

这个问题的解决办法是在scapy命令行界面 ifaces 列出网络接口名称,查找到本机网卡名后,通过指定iface网卡名后,得以解决。

scapy.sniff(prn=http_header, count=0, iface="enp129s0")

2)另一种情况是sniff只能使用enp命名规则的网卡进行抓包,实际上,这样是抓不到RoCE v2的包的。你可以用tcpdump工具试试,目前来说,不管是tcpdum还是scapy,想要抓到RoCE v2的包,只能用mlx这种命名网卡进行抓包。具体原因我还未细究,后续会补充

这个问题的解决办法是:使用如下代码配置使用pcap功能,切换 数据包捕获函数库 整合 on 或 off 随时使用。

conf.use_pcap = True
load_contrib('roce')

IP/TCP等报文

RoCE v2报文

        RoCE v2报文由Ether、IP、UDP、IB等报文头以及payload、ICRC、FCS组成。

        实际上,不同服务类型、不同操作,IB对应的报文头还有所不同,这个会在协议字段分别说明。但是上述报文头均为RoCE v2报文结构所需。

RoCE v2报文解析

        scapy目前已经支持部分RoCE报文解析:包括GRH、BTH与AETH等。

from scapy.contrib.roce import *

AETH

class scapy.contrib.roce.AETH(_pkt, /, *, syndrome=0, msn=0)

BTH

class scapy.contrib.roce.BTH(_pkt, /, *, opcode=0, solicited=0, migreq=0, padcount=0, version=0, pkey=65535, fecn=0, becn=0, resv6=0, dqpn=0, ackreq=0, resv7=0, psn=0, icrc=None)

CNPPadding

class scapy.contrib.roce.CNPPadding(_pkt, /, *, reserved1=0, reserved2=0)

GRH

class scapy.contrib.roce.GRH(_pkt, /, *, ipver=6, tclass=0, flowlabel=6, paylen=0, nexthdr=0, hoplmt=0, sgid=0, dgid=0)

RoCE v2扩展报文解析方法(其他报文可参考)

参考资料

scapy.contrib.roce — Scapy 2023.09.03 文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值