Установка однорангового адреса с помощью SNMP4J

Я пытаюсь смоделировать несколько виртуальных устройств SNMP, используя SNMP4J. Таким образом, при отправке ловушек я пытаюсь изменить IP-адрес исходного устройства, но не знаю, как это сделать. Я знаю, что есть метод setPeerAddress(), но, похоже, он не работает. На самом деле, я даже не уверен, что это вообще возможно или поддерживается SNMP4J.

В качестве альтернативы, возможно ли подделать IP-адрес виртуально с помощью Java?

Спасибо за вашу помощь заранее.


person user975068    schedule 10.11.2012    source источник


Ответы (2)


Я почти на 100% уверен, что Java не позволит вам подделать адрес отправителя IP-пакета.

В зависимости от того, что позволяет операционная система, это можно сделать с помощью вызовов методов JNI. Я видел, как это делается, например, в библиотеке JPcap при работе в Windows.

(Не популярный jpcap, размещенный по адресу http://jpcap.sourceforge.net/, а несвязанный, с таким же названием , оболочка для winpcap, которая ранее размещалась по адресу http://netresearch.ics.uci.edu/kfujii/Jpcap/doc/index.html . Я только что заметил, что он исчез из Интернета.)

Изменить: что касается API SNMP4j, я могу найти только метод setPeerAddress() в классах CommandResponderEvent и ResponseEvent. Оба они, похоже, представляют входящие данные (ответы на отправленные вами запросы), поэтому вам не будет полезно пытаться изменить адрес отправителя таким образом.

person Jolta    schedule 15.01.2013

Вместо спуфинга добавьте IP-адрес varbind в ловушку PDU перед его пересылкой/отправкой.

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

pdu.add(new VariableBinding(SnmpConstants.snmpTrapAddress,
                    new IpAddress(ip_addr)));
person kaleemulla sharief    schedule 23.12.2018