首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Auth和Priv不使用SNMP v3陷阱

Auth和Priv不使用SNMP v3陷阱
EN

Stack Overflow用户
提问于 2021-01-04 18:03:42
回答 1查看 310关注 0票数 1

我将v3陷阱发送到我的net容器中。当我将securityLevel设置为1时,我得到:

代码语言:javascript
复制
0.....0...1x....
..........-0+...
..p.....3.8.....
....myuser..s...f'
##..{-..0~.....p
.........Mon Jan
04 18:42:16 CET
20210...+.....me
ssage

安全级别1是noAuthNoPriv,所以它可以工作,没关系。当我将安全级别设置为2时,我使用我的用户名和authPassword进行日志记录,而且它也在工作!但是,当我在用户名中输入一个错误时,我发现它也在工作:(因此,我可以写用户:某个密码:某个密码,它仍然可以工作,而不是有效的凭据。说到安全等级3,无论我尝试什么,我都做不到。但是,与上面复制的结果一样,在日志的末尾而不是"message“有一行哈希代码。这是否意味着它认为凭据是错误的,以及为什么它被编码?我不能用任何方式破译它?因此,总之,对于authNoPriv,它每次都起作用,它不关心密码是否正确,而对于authPriv,它从不起作用,它不关心password是否正确。我试着把我的代码和互联网上的代码混在一起,但是没有用。这是我的密码:

代码语言:javascript
复制
 TransportMapping transport = new DefaultUdpTransportMapping();
        transport.listen();
        Snmp snmp = new Snmp(transport);

        USM usm = new USM(SecurityProtocols.getInstance().addDefaultProtocols(),
                new OctetString(MPv3.createLocalEngineID()), 0);
        SecurityProtocols.getInstance().addPrivacyProtocol(new PrivAES192());
        SecurityProtocols.getInstance().addPrivacyProtocol(new PrivAES256());
        SecurityProtocols.getInstance().addPrivacyProtocol(new Priv3DES());
        SecurityModels.getInstance().addSecurityModel(usm);


        String username = "myuser";


        snmp.getUSM().addUser( =
                new OctetString(username),
                new UsmUser(new OctetString(username), AuthMD5.ID, new OctetString(
                        "myAuthPasswd"), PrivAES128.ID, new OctetString("myPrivPasswd")));



        UserTarget target = new UserTarget();
        target.setAddress(new UdpAddress(ipAddress + "/" + port));
        target.setRetries(1);
        target.setTimeout(11500);
        target.setVersion(SnmpConstants.version3);
        target.setSecurityLevel(3);
        target.setSecurityName(new OctetString(username));

        PDU pdu = new ScopedPDU();
        pdu.setType(ScopedPDU.TRAP);
        pdu.add(new VariableBinding(SnmpConstants.snmpTrapOID,
                SnmpConstants.linkDown));
        pdu.add(new VariableBinding(new OID(trapOid), new OctetString("message")));

        snmp.send(pdu, target);
        System.out.println("Sending Trap to (IP:Port)=> " + ipAddress + ":"
                + port);

        snmp.close();
    }

另外,下面是从容器的user表中得到的信息:

代码语言:javascript
复制
SNMP-USER-BASED-SM-MIB::usmUserAuthProtocol.".....~"!x..._...."."myuser" = OID: SNMP-USER-BASED-SM-MIB::usmHMACMD5AuthProtocol

所以这个用户有MD5 authProtocol。和

代码语言:javascript
复制
SNMP-USER-BASED-SM-MIB::usmUserPrivProtocol.".....~"!x..._...."."myuser" = OID: SNMP-USER-BASED-SM-MIB::usmDESPrivProtocol

此用户具有DES协议。有人能帮忙吗?提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2022-02-23 05:02:06

在adduser中,尝试设置为PrivDES.ID而不是PrivAES128.ID,

代码语言:javascript
复制
    OID encid = PrivDES.ID;
    if(enc.equalsIgnoreCase("des"))
    {
        encid = PrivDES.ID;
    }
    else if(enc.equalsIgnoreCase("aes")){
        encid = PrivAES128.ID;
    }
    
    
    UsmUser user = new UsmUser(  new OctetString(username),  authid, new 
    OctetString(pass),  encid, new OctetString(pass));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65567575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档