使用SNMP4J设置对等地址

时间:2012-11-10 15:03:32

标签: java ip spoofing snmp4j snmp-trap

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

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

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

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

根据操作系统允许的内容,可以使用对JNI方法的调用来执行此操作。我在Windows上运行时已经看到它在JPcap库中完成了。

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

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

答案 1 :(得分:0)

在转发/发送前,将IP地址varbind添加到陷阱PDU,而不是进行欺骗。

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

pdu.add(new VariableBinding(SnmpConstants.snmpTrapAddress,
                    new IpAddress(ip_addr)));