【问题标题】:How to convert a byte literal SNMP response to the expected MAC value如何将字节文字 SNMP 响应转换为预期的 MAC 值
【发布时间】:2017-06-22 00:59:59
【问题描述】:

我正在尝试使用 python 3.x 和 puresnmp 模块获取 cisco 交换机的 arp 表。

执行 SNMP walk 时返回给我的值之一的示例。

value_returned = b'\x00!V\x12\x9a\xc1h'

我尝试使用以下方法对其进行解码:

mac = b'\x00!V\x12\x9a\xc1h'
a = mac.decode('UTF-8')

但我收到以下错误:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x9a in position 4: invalid start byte

如何将返回的值转换为字符串。我会转换为字符串还是十六进制?

【问题讨论】:

  • 嗯?如何获取字节文字作为 SNMP 响应?
  • @EJP 我不知道这只是返回给我的东西。我假设我正在使用的 snmp 模块是造成这种情况的原因。你为什么问我这个问题?
  • SNMP 使用 ASN.1 (en.wikipedia.org/wiki/Abstract_Syntax_Notation_One) 传输数据。返回的数据是某种 ASN.1 数据吗?我尝试通过一些 ASN.1 解码器运行它,但它不起作用。是什么给了你这些数据?

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


【解决方案1】:

主要问题是弄清楚如何转换返回的值。我尝试了几种不同的方法,但似乎没有任何效果。

我终于试过了

b'L\xccjN\x00\xee'.hex()

返回正确的值

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-26
    • 2019-10-01
    相关资源
    最近更新 更多