2021年1月17日星期日

snmp4j发送v3trap

最近在做snmp的trapV3模拟发送,网上看到的大多数博客没有太详细的介绍,自己瞎摸索了一下

 

NoAuthNoPriv方式就像名称一样,无验证也无加密
   public void sendSnmpV3WithNoAuthNoPriv(Snmp snmp, Address targetAddr) {
SNMP4JSettings.setExtensibilityEnabled(true); SecurityProtocols.getInstance().addDefaultProtocols(); UserTarget userTarget = new UserTarget(); DefaultUdpTransportMapping udpTransportMap = null; try { udpTransportMap = new DefaultUdpTransportMapping(); }catch (Exception e) { e.printStackTrace(); } //engingId可用于进一步做trap的细分和验证,接收时可以不验证 byte[] enginId = MPv3.createLocalEngineID(); USM v3Usm = new USM(SecurityProtocols.getInstance(), new OctetString(enginId), 500); SecurityModels securityModels = SecurityModels.getInstance(); securityModels.addSecurityModel(v3Usm); userTarget.setRetries(2); userTarget.setTimeout(3000); userTarget.setVersion(SnmpConstants.version3); userTarget.setSecurityLevel(SecurityLevel.NOAUTH_NOPRIV); userTarget.setAddress(targetAddr); //NOAUTH_NOPRIV和v1,v2c类似,可以直接接收,不验证SecurityName //userTarget.setSecurityName(new OctetString("snmpV3TestUser")); ScopedPDU v3pdu = new ScopedPDU(); v3pdu.add(new VariableBinding(SnmpConstants.sysDescr,new OctetString("what's wrong中文测试!"))); snmp.setLocalEngine(enginId, 500, 1); try { ResponseEvent response = snmp.send(v3pdu, userTarget); if (response.getRequest() == null) { // request timed out System.out.println("no response"); } else { System.out.println("Received response from: " + response.getSource()); // dump response PDU System.out.println(response.getRequest().toString()); //显示发送的信息状态。 } }catch (Exception e) { e.printStackTrace(); }

 
AUTH_NOPRIV会验证SecurityName,authenticationPass,对于privacyPassp的正确性不会验证
public void sendSnmpV3WithAuthAndPriv(Snmp snmp, Address targetAddr) {  OctetString securityName = new OctetString("securityName");  OctetString passWord = new OctetString("snmpV3TestPassword");  OctetString privStr = new OctetString("snmpV3TestPriv");  SNMP4JSettings.setExtensibilityEnabled(true);  byte[] enginId = "TEO_ID".getBytes();  USM v3Usm = new USM(SecurityProtocols.getInstance(), new OctetString(enginId), 500);  SecurityProtocols.getInstance().addDefaultProtocols();  UserTarget userTarget = new UserTarget();  userTarget.setVersion(SnmpConstants.version3);  userTarget.setSecurityLevel(SecurityLevel.AUTH_NOPRIV);  userTarget.setAddress(targetAddr);  userTarget.setSecurityName(securityName);  userTarget.setRetries(2);  userTarget.setTimeout(3000);  SecurityModels securityModels = SecurityModels.getInstance();  securityModels.addSecurityModel(v3Usm);
     //此处五个参数分别为securityName,authentication密码加密,
//authenticationPassphrase,privacyPass加密方式,privacyPassphrase
  snmp.getUSM().addUser(securityName, new UsmUser(securityName, AuthMD5.ID, passWord, PrivDES.ID, privStr)); 
ScopedPDU v3pdu = new ScopedPDU(); v3pdu.setType(PDU.NOTIFICATION);
v3pdu.add(new VariableBinding(SnmpConstants.sysDescr,new OctetString("what's wrong中文测试!")));
snmp.setLocalEngine(enginId, 500, 1);
try { ResponseEvent response = snmp.send(v3pdu, userTarget);
if (response.getRequest() == null) { // request timed out System.out.println("no response"); }
else { System.out.println("Received response from: " + response.getSource()); // dump response PDU
System.out.println(response.getRequest().toString()); //显示发送的信息状态。
}
}catch (Exception e)
{ e.printStackTrace(); } }


AUTH_PRIV则是会验证SecurityName,authenticationPass,privacyPass
public void sendSnmpV3WithAuthAndNoPriv(Snmp snmp, Address targetAddr) {  OctetString securityName = new OctetString("111222333");  OctetString passWord = new OctetString("111222555");  OctetString privStr = new OctetString("23152156");  SNMP4JSettings.setExtensibilityEnabled(true);  byte[] enginId = "TEO_ID".getBytes();  USM v3Usm = new USM(SecurityProtocols.getInstance(), new OctetString(enginId), 500);  SecurityProtocols.getInstance().addDefaultProtocols();  UserTarget userTarget = new UserTarget();  userTarget.setVersion(SnmpConstants.version3);  userTarget.setSecurityLevel(SecurityLevel.AUTH_NOPRIV);  userTarget.setAddress(targetAddr);  userTarget.setSecurityName(securityName);  userTarget.setRetries(2);  userTarget.setTimeout(3000);  SecurityModels securityModels = SecurityModels.getInstance();  securityModels.addSecurityModel(v3Usm);  snmp.getUSM().addUser(securityName, new UsmUser(securityName, AuthSHA.ID, passWord, PrivDES.ID,privStr));  ScopedPDU v3pdu = new ScopedPDU();  v3pdu.setType(PDU.NOTIFICATION);  v3pdu.add(new VariableBinding(SnmpConstants.sysDescr,new OctetString("what's wrong中文测试!")));  snmp.setLocalEngine(enginId, 500, 1);  try {   ResponseEvent response = snmp.send(v3pdu, userTarget);   if (response.getRequest() == null) {    // request timed out    System.out.println("no response");   } else {    System.out.println("Received response from: "      + response.getSource());    // dump response PDU    System.out.println(response.getRequest().toString());    //显示发送的信息状态。   }  }catch (Exception e) {   e.printStackTrace();  } }

 









原文转载:http://www.shaoqun.com/a/510064.html

跨境电商:https://www.ikjzd.com/

dmm杂志:https://www.ikjzd.com/w/2026

mymall:https://www.ikjzd.com/w/1050


最近在做snmp的trapV3模拟发送,网上看到的大多数博客没有太详细的介绍,自己瞎摸索了一下NoAuthNoPriv方式就像名称一样,无验证也无加密publicvoidsendSnmpV3WithNoAuthNoPriv(Snmpsnmp,AddresstargetAddr){SNMP4JSettings.setExtensibilityEnabled(true);SecurityProtoco
vava:vava
www.made-in-china.com:www.made-in-china.com
佣金从15%下降到8%,亚马逊延长杂货促销计划至2019年12月?:佣金从15%下降到8%,亚马逊延长杂货促销计划至2019年12月?
如何到达伦敦卢顿机场?:如何到达伦敦卢顿机场?
厦门玛琪雅朵花海怎么走?:厦门玛琪雅朵花海怎么走?

没有评论:

发表评论