Java 使用SNMP4J设置对等地址

Java 使用SNMP4J设置对等地址,java,ip,spoofing,snmp4j,snmp-trap,Java,Ip,Spoofing,Snmp4j,Snmp Trap,我正在尝试使用SNMP4J模拟几个虚拟SNMP设备。因此,在发送陷阱时,我试图修改原始设备的IP地址,但我不确定如何修改。我知道有一个setPeerAddress方法,但它似乎不起作用。事实上,我甚至不确定SNMP4J是否可能或支持它 或者,是否可以使用Java虚拟地伪造IP地址 提前感谢您的帮助。我几乎100%确信Java不会允许您伪造IP数据包的发件人地址 根据操作系统的许可,可以通过调用JNI方法来实现这一点。例如,在Windows上运行时,我在JPcap库中看到了它 不是在托管的流行jp

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

或者,是否可以使用Java虚拟地伪造IP地址


提前感谢您的帮助。

我几乎100%确信Java不会允许您伪造IP数据包的发件人地址

根据操作系统的许可,可以通过调用JNI方法来实现这一点。例如,在Windows上运行时,我在JPcap库中看到了它

不是在托管的流行jpcap,而是以前在托管的winpcap周围的不相关、同名的包装器 . 我只是注意到它似乎已经从网络上消失了


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

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

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

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