public void TestTrapV3AuthPriv() { if (!DESPrivacyProvider.IsSupported) { return; } // The message body generated by snmp#net is problematic. byte[] bytes = File.ReadAllBytes(Path.Combine("Resources", "trapv3authpriv")); UserRegistry registry = new UserRegistry(); registry.Add(new OctetString("lextm"), new DESPrivacyProvider(new OctetString("privacyphrase"), new MD5AuthenticationProvider(new OctetString("authentication")))); IList <ISnmpMessage> messages = MessageFactory.ParseMessages(bytes, registry); Assert.Equal(1, messages.Count); ISnmpMessage message = messages[0]; Assert.Equal("80001F8880E9630000D61FF449", message.Parameters.EngineId.ToHexString()); Assert.Equal(0, message.Parameters.EngineBoots.ToInt32()); Assert.Equal(0, message.Parameters.EngineTime.ToInt32()); Assert.Equal("lextm", message.Parameters.UserName.ToString()); Assert.Equal("89D351891A55829243617F2C", message.Parameters.AuthenticationParameters.ToHexString()); Assert.Equal("0000000069D39B2A", message.Parameters.PrivacyParameters.ToHexString()); Assert.Equal("", message.Scope.ContextEngineId.ToHexString()); // SNMP#NET returns string.Empty here. Assert.Equal("", message.Scope.ContextName.ToHexString()); Assert.Equal(0, message.Scope.Pdu.Variables.Count); Assert.Equal(1004947569, message.MessageId()); Assert.Equal(234419641, message.RequestId()); }
public void TestTrapV3AuthBytes() { byte[] bytes = File.ReadAllBytes(Path.Combine("Resources", "v3authNoPriv_BER_Issue")); UserRegistry registry = new UserRegistry(); SHA1AuthenticationProvider authen = new SHA1AuthenticationProvider(new OctetString("testpass")); registry.Add(new OctetString("test"), new DefaultPrivacyProvider(authen)); IList <ISnmpMessage> messages = MessageFactory.ParseMessages(bytes, registry); Assert.Equal(1, messages.Count); ISnmpMessage message = messages[0]; Assert.Equal("80001299030005B706CF69", message.Parameters.EngineId.ToHexString()); Assert.Equal(41, message.Parameters.EngineBoots.ToInt32()); Assert.Equal(877, message.Parameters.EngineTime.ToInt32()); Assert.Equal("test", message.Parameters.UserName.ToString()); Assert.Equal("C107F9DAA3FC552960E38936", message.Parameters.AuthenticationParameters.ToHexString()); Assert.Equal("", message.Parameters.PrivacyParameters.ToHexString()); Assert.Equal("80001299030005B706CF69", message.Scope.ContextEngineId.ToHexString()); // SNMP#NET returns string.Empty here. Assert.Equal("", message.Scope.ContextName.ToHexString()); Assert.Equal(681323585, message.MessageId()); Assert.Equal(681323584, message.RequestId()); Assert.Equal(bytes, message.ToBytes()); }
/// <summary> /// Gets the message ID. /// </summary> /// <value>The message ID.</value> /// <param name="message">The <see cref="ISnmpMessage"/>.</param> /// <remarks>For v3, message ID is different from request ID. For v1 and v2c, they are the same.</remarks> public static int MessageId(this ISnmpMessage message) { if (message == null) { throw new ArgumentNullException(nameof(message)); } return(message.Header == Header.Empty ? message.RequestId() : message.Header.MessageId); }
public void TestToBytes3() { if (!DESPrivacyProvider.IsSupported) { return; } var privacy = new DESPrivacyProvider(new OctetString("privacyphrase"), new MD5AuthenticationProvider(new OctetString("authentication"))); var trap = new TrapV2Message( VersionCode.V3, new Header( new Integer32(1004947569), new Integer32(0x10000), privacy.ToSecurityLevel()), new SecurityParameters( new OctetString(ByteTool.Convert("80001F8880E9630000D61FF449")), Integer32.Zero, Integer32.Zero, new OctetString("lextm"), new OctetString(ByteTool.Convert("61A9A486AF4A861BD5C0BB1F")), new OctetString(ByteTool.Convert("0000000069D39B2A"))), new Scope(OctetString.Empty, OctetString.Empty, new TrapV2Pdu( 234419641, new ObjectIdentifier("1.3.6"), 0, new List <Variable>())), privacy, null); byte[] bytes = trap.ToBytes(); UserRegistry registry = new UserRegistry(); registry.Add(new OctetString("lextm"), privacy); IList <ISnmpMessage> messages = MessageFactory.ParseMessages(bytes, registry); Assert.Equal(1, messages.Count); ISnmpMessage message = messages[0]; Assert.Equal("80001F8880E9630000D61FF449", message.Parameters.EngineId.ToHexString()); Assert.Equal(0, message.Parameters.EngineBoots.ToInt32()); Assert.Equal(0, message.Parameters.EngineTime.ToInt32()); Assert.Equal("lextm", message.Parameters.UserName.ToString()); Assert.Equal("61A9A486AF4A861BD5C0BB1F", message.Parameters.AuthenticationParameters.ToHexString()); Assert.Equal("0000000069D39B2A", message.Parameters.PrivacyParameters.ToHexString()); Assert.Equal("", message.Scope.ContextEngineId.ToHexString()); // SNMP#NET returns string.Empty here. Assert.Equal("", message.Scope.ContextName.ToHexString()); Assert.Equal(0, message.Scope.Pdu.Variables.Count); Assert.Equal(1004947569, message.MessageId()); Assert.Equal(234419641, message.RequestId()); }
public void TestTrapV3Auth() { byte[] bytes = File.ReadAllBytes(Path.Combine("Resources", "trapv3auth")); UserRegistry registry = new UserRegistry(); registry.Add(new OctetString("lextm"), new DefaultPrivacyProvider(new MD5AuthenticationProvider(new OctetString("authentication")))); IList <ISnmpMessage> messages = MessageFactory.ParseMessages(bytes, registry); Assert.Equal(1, messages.Count); ISnmpMessage message = messages[0]; Assert.Equal("80001F8880E9630000D61FF449", message.Parameters.EngineId.ToHexString()); Assert.Equal(0, message.Parameters.EngineBoots.ToInt32()); Assert.Equal(0, message.Parameters.EngineTime.ToInt32()); Assert.Equal("lextm", message.Parameters.UserName.ToString()); Assert.Equal("84433969457707152C289A3E", message.Parameters.AuthenticationParameters.ToHexString()); Assert.Equal("", message.Parameters.PrivacyParameters.ToHexString()); Assert.Equal("", message.Scope.ContextEngineId.ToHexString()); // SNMP#NET returns string.Empty here. Assert.Equal("", message.Scope.ContextName.ToHexString()); Assert.Equal(318463383, message.MessageId()); Assert.Equal(1276263065, message.RequestId()); }
public void TestTrapV3() { byte[] bytes = File.ReadAllBytes(Path.Combine("Resources", "trapv3")); UserRegistry registry = new UserRegistry(); registry.Add(new OctetString("lextm"), DefaultPrivacyProvider.DefaultPair); IList <ISnmpMessage> messages = MessageFactory.ParseMessages(bytes, registry); Assert.Equal(1, messages.Count); ISnmpMessage message = messages[0]; Assert.Equal("80001F8880E9630000D61FF449", message.Parameters.EngineId.ToHexString()); Assert.Equal(0, message.Parameters.EngineBoots.ToInt32()); Assert.Equal(0, message.Parameters.EngineTime.ToInt32()); Assert.Equal("lextm", message.Parameters.UserName.ToString()); Assert.Equal("", message.Parameters.AuthenticationParameters.ToHexString()); Assert.Equal("", message.Parameters.PrivacyParameters.ToHexString()); Assert.Equal("", message.Scope.ContextEngineId.ToHexString()); // SNMP#NET returns string.Empty here. Assert.Equal("", message.Scope.ContextName.ToHexString()); Assert.Equal(528732060, message.MessageId()); Assert.Equal(1905687779, message.RequestId()); Assert.Equal("1.3.6", ((TrapV2Message)message).Enterprise.ToString()); }
public void TestResponseVersion3_2() { var engine = CreateEngine(); engine.Listener.ClearBindings(); var serverEndPoint = new IPEndPoint(IPAddress.Loopback, Port.NextId); engine.Listener.AddBinding(serverEndPoint); engine.Start(); try { IAuthenticationProvider auth = new MD5AuthenticationProvider(new OctetString("authenticationauthentication")); IPrivacyProvider priv = new DefaultPrivacyProvider(auth); var timeout = 3000; Discovery discovery = Messenger.GetNextDiscovery(SnmpType.GetRequestPdu); ReportMessage report = discovery.GetResponse(timeout, serverEndPoint); var expected = Messenger.NextRequestId; GetRequestMessage request = new GetRequestMessage(VersionCode.V3, Messenger.NextMessageId, expected, new OctetString("authen"), OctetString.Empty, new List <Variable> { new Variable(new ObjectIdentifier("1.3.6.1.2.1.1.1.0")) }, priv, Messenger.MaxMessageSize, report); ISnmpMessage reply = request.GetResponse(timeout, serverEndPoint); ISnmpPdu snmpPdu = reply.Pdu(); Assert.Equal(SnmpType.ResponsePdu, snmpPdu.TypeCode); Assert.Equal(expected, reply.RequestId()); Assert.Equal(ErrorCode.NoError, snmpPdu.ErrorStatus.ToErrorCode()); } finally { if (SnmpMessageExtension.IsRunningOnWindows) { engine.Stop(); } } }
/// <summary> /// Returns a <see cref="System.String"/> that represents this instance. /// </summary> /// <returns> /// A <see cref="System.String"/> that represents this instance. /// </returns> public override string ToString() { return(string.Format(CultureInfo.InvariantCulture, "discovery class: message id: {0}; request id: {1}", _discovery.MessageId(), _discovery.RequestId())); }