我是 scapy 的新手,正在寻找确认以下命令是挖掘(解析)UDP/NetflowV9 数据包的有效方法。
我问的原因是该方法对我来说似乎有效并且适用于我尝试过的许多数据包。但是,我遇到的至少一个数据包失败了。失败的解码/解析针对具有 4 个 Flowset 的 UDP/Netflow 数据包,如下所示:
- Flowset 1:具有 2 个流记录的数据流集
- 流程集 2:选项模板流程集
- Flowset 3:具有 1 个流记录的数据流集
- Flowset 4:数据模板流程集
方法
pkt = rdpcap(pcap)
pkt[0][UDP].payload
NetflowHeader(pkt[0][UDP].payload)
NetflowHeader(pkt[0][UDP].payload).payload
NetflowHeaderV9(NetflowHeader(pkt[0][UDP].payload).payload)
NetflowHeaderV9(NetflowHeader(pkt[0][UDP].payload).payload).payload
NetflowDataflowsetV9(NetflowHeaderV9(NetflowHeader(pkt[0][UDP].payload).payload).payload)
NetflowDataflowsetV9(NetflowHeaderV9(NetflowHeader(pkt[0][UDP].payload).payload).payload).payload
NetflowOptionsFlowsetV9(NetflowDataflowsetV9(NetflowHeaderV9(NetflowHeader(pkt[0][UDP].payload).payload).payload).payload)
上面的命令似乎可以显示有关前 2 个流集的详细信息,但最后一个命令的输出对于流集 3 有错误的数据(与 Wireshark 显示的不匹配)。特别是,首先,对于流集 3 flowsetID 和长度错误。我什至还没有尝试查看 flowset 4,因为 flowset 3 的数据是错误的。
所以,我只是在寻找确认我的方法是正确的。如果我的方法是正确的,那么我将尝试找到一种方法来匿名化 pcap 文件(单帧)并在单独的 stackoverflow 帖子中询问。我不想在流记录中透露 IP 地址。