使用 Wireshark 在 SNMP 数据字段中搜索 IP 地址

网络工程 线鲨 snmp
2021-07-16 10:23:03

TLDR:如何在data =>variable-bindings现场找到通过 SNMP 通信的 IP 地址

我正在使用wireshark查看我的pcap并使用snmp过滤器。但我想通过搜索在data =>variable-bindings现场通过 SNMP 通信的 IP 地址来更进一步

这是来自 Wireshark 的 SNMP 记录示例:

数据
    得到回应
        变量绑定:20 项
            1.3.6.1.2.1.4.20.1.2.10.50.9.178:1
            1.3.6.1.2.1.4.20.1.2.10.10.40.7:40
            1.3.6.1.2.1.4.20.1.3.10.50.39.17:255.255.255.0
            ...

我想找到 OID 1.3.6.1.2.1.4.20.1.* 下的每个地址,或者搜索变量绑定值中的特定 IP。

我已经尝试过这些过滤器:

snmp.variable_bindings == 10.50.9.178
snmp.data == 10.50.9.178  // Won't work because it search for integer values

注意: 我不想搜索源和目标 IP


OID: - 1.3.6.1.2.1.4.20.1 - ipAddrEntry

OID 描述:http : //www.alvestrand.no/objectid/1.3.6.1.2.1.4.20.1.html

1个回答

老实说,这个解决方案并不理想,因为您使用的工具并不理想。我知道这只是您正在探索和试图理解的东西,我只是建议不要在将来将其用作首选方法。将 CLI 与 tcpdump 或 tshark 一起使用将为您提供更强大的过滤能力,因为它允许您使用诸如 sed、awk、grep 等内容。

虽然我对 Netdisco 一无所知,但我怀疑它没有使用 Wireshark 用来过滤事物的确切方法,因此这可能不是最好的例子。

正确的解决方案,实现正是你想要的东西里面Wireshark是建立一个数据包剥离:

https://www.wireshark.org/docs/wsdg_html_chunked/ChapterDissection.html

但是,对于快速而肮脏的,这听起来像是您想要的:

如果您只查找 IP 地址,我使用实验室中的一个盒子进行了相同的捕获:

snmp.value.ipv4 (or snmp.value.ipv6)

这将显示响应中返回的具有 IPv4 地址值的任何数据包。但是,由于地址和子网掩码以相同的格式传回,您必须能够辨别哪些是真实地址,哪些是子网掩码。

此外,您可以将地址(和掩码)分解到它们自己的列中,然后按顺序对它们进行排序,从而将所有子网掩码留在列表的底部。

首先:右键单击要构建到列中的特定字段,在我们的示例中是 IpAddress 值:

列化

第二:排序。(对图像比例表示歉意)

已排序

我希望这有帮助。