2017-06-22 54 views
0

我試圖通過使用python 3.x和puresnmp模塊來獲取cisco交換機的arp表。如何將字節文字的SNMP響應轉換爲預期的MAC值

當我進行SNMP漫遊時,返回給我的一個值的示例。

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 

如何轉換時返回到值串。我會轉換爲字符串還是轉換爲十六進制?

+0

嗯?你如何獲得一個字節文字作爲SNMP響應? – EJP

+0

@EJP我不知道這只是回報給我。我假設我使用的snmp模塊是其原因。你爲什麼問我這個問題? – evolvd

+0

SNMP使用ASN.1(https://en.wikipedia.org/wiki/Abstract_Syntax_Notation_One)傳輸數據。返回的數據是某種ASN.1數據?我嘗試通過一些ASN.1解碼器運行它,但它不起作用。什麼是給你這些數據? – crchurchey

回答

0

主要問題是搞清楚如何轉換返回的值。我嘗試了幾種不同的方法,但似乎沒有任何工作。

我終於嘗試

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

並返回正確的值