Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有身份验证/隐私的SnmpV3陷阱接收器-从代理动态获取engineID_Java_Snmp - Fatal编程技术网

Java 具有身份验证/隐私的SnmpV3陷阱接收器-从代理动态获取engineID

Java 具有身份验证/隐私的SnmpV3陷阱接收器-从代理动态获取engineID,java,snmp,Java,Snmp,我正在尝试使用WebNms AdventNet API开发一个SNMPv3陷阱接收器。 如果我使用身份验证和隐私选项(MD5+DES),我需要知道发送陷阱的代理的engineID 以解密陷阱内容。如何动态获取此engineID(在应用程序中不进行硬编码)? 但是为了让它工作,我需要提供代理在发送陷阱时使用的端口(代理是一个使用随机源端口的真实网络元素) 下面的代码正在工作,但我硬编码了engineID。 是否有其他方法可以在不硬编码engineID的情况下解密陷阱 public class D

我正在尝试使用WebNms AdventNet API开发一个
SNMPv3
陷阱接收器。 如果我使用身份验证和隐私选项(
MD5+DES
),我需要知道发送陷阱的代理的
engineID
以解密陷阱内容。如何动态获取此
engineID
(在应用程序中不进行硬编码)?

但是为了让它工作,我需要提供代理在发送陷阱时使用的端口(代理是一个使用随机源端口的真实网络元素)

下面的代码正在工作,但我硬编码了
engineID
。 是否有其他方法可以在不硬编码
engineID
的情况下解密陷阱

public class DragosApp2 implements SnmpClient{
    public static void main(String[] args) throws SnmpException {
        SnmpAPI api = new SnmpAPI();
        SnmpEngineEntry snmpEntry = new SnmpEngineEntry("10.10.66.79");
        SnmpEngineTable engineTable = api.getSnmpEngine();
        engineTable.addEntry(snmpEntry);
        SnmpSession session = new SnmpSession(api);
        session.addSnmpClient(new DragosApp2());
        UDPProtocolOptions ses_opt = new UDPProtocolOptions();
        ses_opt.setLocalPort(162);
        session.setProtocolOptions(ses_opt);
        session.open();
        byte[] engineID = gethexValue("0x80001f888026f9036957333c81");  // HOW can I replace this part??

        USMUserEntry user = new USMUserEntry(new String("dragos3").getBytes(), engineID);
        user.setAuthProtocol(USMUserEntry.MD5_AUTH);
        user.setPrivProtocol(USMUserEntry.CBC_DES);

        byte[] authKey = USMUtils.password_to_key(USMUserEntry.MD5_AUTH, 
                                                new String("12345678").getBytes(),
                                                new String("12345678").getBytes().length,
                                                engineID);

        byte[] privKey = USMUtils.password_to_key(USMUserEntry.MD5_AUTH,
                            new String("12345678").getBytes(),
                            new String("12345678").getBytes().length,
                            engineID,
                            USMUserEntry.CBC_DES);

        user.setAuthPassword(new String("12345678").getBytes());
        user.setPrivPassword(new String("12345678").getBytes());
        user.setAuthKey(authKey);
        user.setPrivKey(privKey);
        user.setSecurityLevel((byte)3);
        user.setEngineEntry(snmpEntry);
        USMUserTable uut = (USMUserTable)api.getSecurityProvider().getTable(3);
        uut.addEntry(user);
    }   
}