【发布时间】:2020-06-04 05:29:42
【问题描述】:
我是 scapy 的新手,正在寻找确认以下命令是挖掘(解析)UDP/NetflowV9 数据包的有效方法。
我问的原因是该方法对我来说似乎有效并且适用于我尝试过的许多数据包。但是,我遇到的至少一个数据包失败了。失败的解码/解析是针对具有如下 4 个 Flowset 的 UDP/Netflow 数据包:
- 流集 1:具有 2 个流记录的数据流集
- 流程集 2:选项模板流程集
- 流集 3:具有 1 个流记录的数据流集
- 流程集 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 显示的不匹配)。特别是,首先,对于flowset 3 flowsetID 和长度错误。我什至还没有尝试查看 flowset 4,因为 flowset 3 的数据是错误的。
所以,我只是想确认我的方法是正确的。如果我的方法是正确的,那么我将尝试找到一种方法来匿名化 pcap 文件(单帧)并在单独的 stackoverflow 帖子中询问。我不想在流记录中透露 IP 地址。
【问题讨论】:
-
是的,但可能我没有掌握一些东西。解析/剖析部分仅显示两个要点。我尝试使用其中一个要点“netflowv9_defragment”中的命令/方法,它确实从帧中解码了 Eth/IP/UDP,但所有 Netflow 内容都显示为如下十六进制值:
<Raw load='\x00\t\x00\x05\x08在那之后,我开始尝试各种其他 Netflow 命令,并且似乎让它工作,据我目前所知,这个单帧。 -
您需要给我们一些代码才能使用:/您正在执行的确切调用是什么?您尝试了什么...您是否将 Netflow 标头绑定到您正在使用的 UDP 端口,还是默认端口? (在您的第一个示例中似乎并非如此)
-
当然,我会努力的。我需要匿名化 pcap,检查我看到的行为是否仍然存在,然后将其上传到某个地方。
-
@Cukic0d,非常感谢您的帮助。在匿名化我的 netflow pcap 后,我决定将 dport 也更改为 2055。之后,我能够使用 netflowv9_defragment(pkt)[0] 来解析数据包。同样,另外,在做了bind_layers(UDP, NetflowHeader, dport=9990)之后,netflow_v9_defragement也解析了原来的pcap。