在监视分析SNMP数据包时,发现OID数据的编码有些奇怪,查阅相关资料未果,请高手指教!如OID=1.3.6.1.4.1.231.……时,数据包中为2B 06 01 04 01 81 67 ……,已经知道2B=(OID的第一个值×40)+OID第二个值(即1×40+3 = 2B,查资料得来),但是231是怎么变成81 67的呢?经过反复观察,还得出一个规律如下:
OID值 数据包值 差值
710 = 85 46 82 80
202 = 81 4A 80 80
236 = 81 6C 80 80
231 = 81 67 80 80
295 = 82 27 81 00
318 = 82 3E 81 00
请教到底这么编码的依据是什么?有什么固定的算法吗?谢谢!
OID值 数据包值 差值
710 = 85 46 82 80
202 = 81 4A 80 80
236 = 81 6C 80 80
231 = 81 67 80 80
295 = 82 27 81 00
318 = 82 3E 81 00
请教到底这么编码的依据是什么?有什么固定的算法吗?谢谢!
比如231,其表示位1000 0001,0110 0111,出去最高位为000 0001(0x01),110 0111(0x67)
第一个字节最高位为1,则表示包含后面一个字节,第二个字节最高位位0,则表示以它为结束
即0x01×0x80 + 0x67 = 231
29895这个数字对应的编码为81 e9 47出去最高为即0000001(0x01),1101001(0x69),1000111(0x47),((0x01×0x80+0x69)*0x80)+0x47=29895