1

我正在尝试使用 SNMP4J 模拟几个虚拟 SNMP 设备。因此,在发送陷阱时,我试图修改始发设备的 IP 地址,但我不确定如何。我知道有一个 setPeerAddress() 方法,但它似乎不起作用。事实上,我什至不确定 SNMP4J 是否可能或支持它。

或者,是否可以使用 Java 虚拟地欺骗和 IP 地址?

感谢您提前提供的所有帮助。

4

2 回答 2

0

我几乎 100% 确定 Java 不会允许您欺骗 IP 数据包的发件人地址。

根据操作系统允许的情况,可以使用对 JNI 方法的调用来执行此操作。例如,在 Windows 上运行时,我已经在 J​​Pcap 库中看到过它。

(不是托管在http://jpcap.sourceforge.net/上的流行 jpcap ,而是以前托管在 http://netresearch.ics.uci.edu/kfujii/Jpcap/doc的 winpcap 的不相关的同名包装器/index.html。我刚刚注意到它似乎已经从网络上消失了。)

编辑:关于 SNMP4j 的 API,我只能在 CommandResponderEvent 和 ResponseEvent 类中找到 setPeerAddress() 方法。这两个似乎都代表传入数据(对您发送的请求的响应),因此尝试以这种方式更改发件人地址对您没有用处。

于 2013-01-15T16:13:02.630 回答
0

代替欺骗,在转发/发送之前将 IP 地址 varbind 添加到陷阱 PDU。

String ip_addr = cmdRespEvent.getPeerAddress().toString().split("/")[0];

pdu.add(new VariableBinding(SnmpConstants.snmpTrapAddress,
                    new IpAddress(ip_addr)));
于 2018-12-23T15:06:03.350 回答