Сообщение-ловушка SNMP V3 не работает в Lextm.SharpSnmpLib с C#C#

Место общения программистов C#
Anonymous
Сообщение-ловушка SNMP V3 не работает в Lextm.SharpSnmpLib с C#

Сообщение Anonymous »

Я пытаюсь аутентифицировать библиотеку Lextm.SharpSnmpLib с помощью C#. Я использую MIB Enterprise Browser (пробная версия) для отправки сообщения-ловушки SNMP V3. Но как ни странно это не работает. Lextm.SharpSnmpLib отлично работает с сообщениями SNMP V1, V2 и Trap Inform с использованием браузера MIB.
Ссылка на браузер: https://www.ireasoning.com/download.shtml
Подробности настройки
  • Консольное приложение .net core 8.0
  • Используется непосредственная ссылка на библиотеку SnmpEngineHelper.Core
  • Ниже приведен код

Код: Выделить всё

  public static async Task Main(string[] args)
{
var manualEvent = new ManualResetEventSlim();
// TODO: this is a hack.  review it later.
var engineId = ByteTool.Convert("80001F8880E9630000D61FF449");
var users = new UserRegistry();
users.Add(new OctetString("neither"), DefaultPrivacyProvider.DefaultPair);
users.Add(new OctetString("authen"),
new DefaultPrivacyProvider(new MD5AuthenticationProvider(new OctetString("authentication")))
{
EngineIds = new[] { new OctetString(engineId) }
});
if (DESPrivacyProvider.IsSupported)
{
users.Add(new OctetString("privacy"), new DESPrivacyProvider(new OctetString("privacyphrase"),
new MD5AuthenticationProvider(new OctetString("authentication"))));
}

var count = 0;

var trapv1 = new TrapV1MessageHandler();
trapv1.MessageReceived += WatcherTrapV1Received;
var trapv1Mapping = new HandlerMapping("v1", "TRAPV1", trapv1);

var trapv2 = new TrapV2MessageHandler();
trapv2.MessageReceived += WatcherTrapV2Received;
var trapv2Mapping = new HandlerMapping("v2,v3", "TRAPV2", trapv2);

var inform = new InformRequestMessageHandler();
var informMapping = new HandlerMapping("v2,v3", "INFORM", inform);

var store = new ObjectStore();
var v1 = new Version1MembershipProvider(new OctetString("public"), new OctetString("public"));
var v2 = new Version2MembershipProvider(new OctetString("public"), new OctetString("public"));
var v3 = new Version3MembershipProvider();
var membership = new ComposedMembershipProvider(new IMembershipProvider[] { v1, v2, v3 });
var handlerFactory = new MessageHandlerFactory(new[] { trapv1Mapping, trapv2Mapping, informMapping });

var pipelineFactory = new SnmpApplicationFactory( store, membership, handlerFactory);
var group = new EngineGroup(engineId);
var engine = new SnmpEngine(pipelineFactory, new Listener { Users = users }, group);
var daemonEndPoint = new IPEndPoint(IPAddress.Loopback, 40001);
engine.Listener.AddBinding(daemonEndPoint);
engine.Start();

try
{
var privacy =
new DefaultPrivacyProvider(new MD5AuthenticationProvider(new OctetString("authentication")));
var trap = new TrapV2Message(
VersionCode.V3,
1004947569,
234419641,
new OctetString("authen"),
new ObjectIdentifier("1.3.6"),
0,
new List(),
privacy,
0x10000,
new OctetString(ByteTool.Convert("80001F8880E9630000D61FF450")),
0,
0);
await trap.SendAsync(daemonEndPoint);
manualEvent.Wait();

Console.WriteLine(count == 0);
Console.WriteLine(new Counter32(1) == group.UnknownEngineId.Data);
}
finally
{
if (SnmpMessageExtension.IsRunningOnWindows)
{
engine.Stop();
}
}

}

private static void WatcherTrapV2Received(object sender, TrapV2MessageReceivedEventArgs e)
{
Console.WriteLine($"--------WatcherTrapV2Received {e.TrapV2Message.Version}------------------");
string dateTime = DateTime.Now.ToString("g");
Console.WriteLine($"{dateTime}: TRAP Sender: {e.Sender} / version {e.TrapV2Message.Version}: {e.TrapV2Message}");
//Debug.WriteLine($"MessageID: {e.TrapV2Message.Header.MessageId}");
foreach (var variable in e.TrapV2Message.Variables())
{
Console.WriteLine($"{dateTime}: Trap VarData: {variable}");
}
Console.WriteLine($"--------WatcherTrapV2Received {e.TrapV2Message.Version} End------------------");
}

private static void WatcherTrapV1Received(object sender, TrapV1MessageReceivedEventArgs e)
{
Console.WriteLine($"--------WatcherTrapV1Received {e.TrapV1Message.Version}------------------");
Console.WriteLine("TRAP version {0};  {1}", e.TrapV1Message.Version, e.TrapV1Message);
foreach (var variable in e.TrapV1Message.Variables())
{
Console.WriteLine(variable);
}
Console.WriteLine($"--------WatcherTrapV1Received {e.TrapV1Message.Version} End------------------");
}
Ожидание: я ожидаю перехватить запрос ловушки SNMP V3 с помощью NoAuthNoPriv, AuthNoPriv, AuthPriv.

Подробнее здесь: https://stackoverflow.com/questions/782 ... th-c-sharp

Вернуться в «C#»