我正在尝试使用SNMP4J来模拟几个虚拟的SNMP设备。因此,在发送陷阱时,我会尝试修改源设备的IP地址,但我不确定如何修改。我知道有一个setPeerAddress()方法,但它似乎不起作用。事实上,我甚至不确定这是否可能,或者SNMP4J是否支持它。
或者,是否可以使用Java虚拟地欺骗和IP地址?
提前感谢您的帮助。
发布于 2013-01-16 00:13:03
我几乎100%肯定Java不会允许您欺骗IP数据包的发送者地址。
根据操作系统允许的情况,可以使用对JNI方法的调用来实现这一点。例如,当在Windows上运行时,我已经在JPcap库中看到过这样的操作。
(不是托管在http://jpcap.sourceforge.net/上的流行的jpcap,而是之前托管在http://netresearch.ics.uci.edu/kfujii/Jpcap/doc/index.html上的winpcap的无关的同名包装器。我只是注意到它似乎已经从网络上消失了。)
编辑:关于SNMP4j的接口,我只能在CommandResponderEvent和ResponseEvent类中找到setPeerAddress()方法。这两种方法似乎都表示传入数据(对您发送的请求的响应),因此尝试以这种方式更改发送者地址对您没有什么用处。
发布于 2018-12-23 23:06:03
在转发/发送陷阱PDU之前,将IP地址varbind添加到陷阱PDU,而不是欺骗。
String ip_addr = cmdRespEvent.getPeerAddress().toString().split("/")[0];
pdu.add(new VariableBinding(SnmpConstants.snmpTrapAddress,
new IpAddress(ip_addr)));
https://stackoverflow.com/questions/13323158
复制相似问题