我有一个在 WSL2 中运行的 snmptrapd 服务器(在 docker 下),我正在尝试通过 Scapy(从 Windows 主机)将 UDP 包发送到该服务器。
这就是我使用 Docker 在 WSL 中运行 snmptrapd-server 的方式:
sudo docker run -it --rm -p 162:162/udp --name snmptrapd sig9/snmptrapd
这就是我使用 Scapy 发出 UDP 请求的方式:
answered, _ = sr(
inet.IP(dst="172.31.175.161") /
inet.UDP(sport=sport, dport=162) /
Raw(
b'\x30\x43\x02\x01\x01\x04\x06\x70\x75\x62\x6c\x69\x63\xa6\x36\x02'
b'\x04\x10\xfc\xb4\xbe\x02\x01\x00\x02\x01\x00\x30\x28\x30\x0d\x06'
b'\x08\x2b\x06\x01\x02\x01\x01\x03\x00\x43\x01\x00\x30\x17\x06\x0a'
b'\x2b\x06\x01\x06\x03\x01\x01\x04\x01\x00\x06\x09\x2b\x06\x01\x06'
b'\x03\x01\x01\x05\x01'
),
timeout=5,
verbose=2
)
这里
172.31.175.161
是我的“WSL机器”的IP。 sport
是任何未使用的端口(在这种情况下为27450
)。
我可以看到我的 UDP 请求已传送到 snmptrapd-server(服务器记录我的请求):
2023-05-18 mshome.net [UDP: [172.31.160.1]:27450->[172.17.0.3]:162]:
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (0) 0:00:00.00 SNMPv2-MIB::snmpTrapOID.0 = OID: SNMPv2-MIB::coldStart
但由于未知原因,我在 Scapy 中看不到 UDP 回复:
Begin emission:
Finished sending 1 packets.
....
Received 4 packets, got 0 answers, remaining 1 packets
(<Results: TCP:0 UDP:0 ICMP:0 Other:0>, <Unanswered: TCP:0 UDP:1 ICMP:0 Other:0>)