我将v3陷阱发送到我的net容器中。当我将securityLevel设置为1时,我得到:
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是否正确。我试着把我的代码和互联网上的代码混在一起,但是没有用。这是我的密码:
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表中得到的信息:
SNMP-USER-BASED-SM-MIB::usmUserAuthProtocol.".....~"!x..._...."."myuser" = OID: SNMP-USER-BASED-SM-MIB::usmHMACMD5AuthProtocol所以这个用户有MD5 authProtocol。和
SNMP-USER-BASED-SM-MIB::usmUserPrivProtocol.".....~"!x..._...."."myuser" = OID: SNMP-USER-BASED-SM-MIB::usmDESPrivProtocol此用户具有DES协议。有人能帮忙吗?提前谢谢。
发布于 2022-02-23 05:02:06
在adduser中,尝试设置为PrivDES.ID而不是PrivAES128.ID,
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));https://stackoverflow.com/questions/65567575
复制相似问题