您好,我在这里的第一个问题,需要一些指导。
我正在开发一个数据包嗅探器,主要用于解码 SNMP PDU,但是我不完全确定该去哪里。
简单地说,我的数据包嗅探器可以从数据包中提取信息,但是我对数据有效负载字段感兴趣。它是用 C++ 编写的,我使用的是winsock。
我应该怎么做?SNMP 字段是否在基本编码规则中编码,还是我必须深入研究 ASN.1?
我只是希望将数据有效负载字段中的那些 SNMP 字段解码为人类可读的形式。它们将被转储到文本文件中。所以我也会考虑解码 OID。我在使用 Wireshark 并使用 GETIF 查询我的 SNMP 节点时验证所有内容。
任何指导表示赞赏。
编辑:
感谢 user1793963 很好的解释。对所有将其标记为过于宽泛的人感到抱歉。
为了详细说明我最初的问题,任何人都可以解释 PDU 本身的初始部分。
示例:我的程序输出这些十六进制值 30 82 00 A3 02 01 00,即 SEQUENCE (30)、LENGTH (82) 和其他两个值。这是来自 GetRequest PDU。
GetResponse PDU 显示这些值 30 81 B7 02 01 00, SEQUENCE, 81 in LENGTH 和另一个值。
有人可以解释以粗体标记的值。如果它使用简单的 TLV 结构,代表什么值?我所知道的是序列的开始 (30) 和 PDU 总长度 (即 82 和 81),我知道 02 01 00 在 LENGTH 和 VERSION 0 中是 INTEGER 1 但是我不明白 00 A3 (GetRequest) 和 B7 (获取响应)。这些值代表什么?非常感谢。
我也在使用 Wireshark 来检查值,但是它们没有说明 PDU 序列的开始