【问题标题】:Decrypt SNMPv3 in Python在 Python 中解密 SNMPv3
【发布时间】:2022-01-20 01:34:55
【问题描述】:

我有一个 SNMPv3 snmpwalk 的原始数据包捕获

###[ Raw ]### 
  load      = '0>\x02\x01\x030\x11\x02\x04,\xa6\xceD\x02\x03\x00\xff\xe3\x04\x01\x04\x02\x01\x03\x04\x100\x0e\x04\x00\x02\x01\x00\x02\x01\x00\x04\x00\x04\x00\x04\x000\x14\x04\x00\x04\x00\xa0\x0e\x02\x04}q\x1d6\x02\x01\x00\x02\x01\x000\x00'

我知道引擎 ID、用户名、密码、身份验证协议和隐私协议。如何将此原始负载解密为人类可读的格式?

到目前为止我已经尝试过:

使用 binascii 我设法得到了字节数组的十六进制字符串:

303e02010330110204589b95da020300ffe30401040201030410300e0400020100020100040004000400301404000400a00e02040b5d6c83020100002010030

但是,我不确定我需要按什么顺序对其进行解散或解密?

【问题讨论】:

  • 如果您的目标是与 SNMP 设备通信并获取数据,您应该使用像 pysnmp 这样的库来执行整个 SNMP 操作。但是,如果您的目标是分析 SNMP 对话并进行故障排除,那么下面的答案将向您展示正确的工具。
  • @LexLi - 不幸的是,我既不需要发出 SNMP 请求,也不需要使用第三方工具。我的用例是响应 SNMP 请求以模拟用于测试的真实设备,因此我不能使用 Wireshark。如果需要,我可以提供更多信息,但我需要知道的是,如果我拥有所有元素,我从哪里开始,我只是使用带有密码的 AES 解密,还是引擎 ID 以某种方式像盐一样影响它?跨度>

标签: python python-3.x network-programming snmp pysnmp


【解决方案1】:

如果您知道身份验证和隐私密钥,则输入它们 进入 Wireshark SNMP 协议首选项,它将解密和 为你解码。我们一直都这样做。

【讨论】:

  • 谢谢,不幸的是我需要手动完成,因为我在测试期间使用 Scapy 以编程方式响应 SNMP 请求来模拟真实设备。
  • 您正在重新发明轮子并实施 SNMP 模拟器?谷歌它,有超过 10 个,免费和商业的,包括我们的。一分钱一分货。
  • 这些 SNMP 模拟器可以用我想要的任何数据响应 SNMP 请求吗?例如,正常运行时间的 SNMP 获取我可能想要返回 5 或 50000 之类的东西?
  • 我不能告诉你其他人的情况,但这是我们最基本的功能,可以在你想要的任何时间暂停时间,无论是 5 Timeticks,还是 5 年。在那里呆了 20 年。
  • 好的,这也集成在Python中了?
猜你喜欢
  • 1970-01-01
  • 2015-12-09
  • 2012-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-27
  • 1970-01-01
  • 2020-12-23
相关资源
最近更新 更多