我正在尝试创建自定义SNMP陷阱。
发送(IP(dst =" 10.152.1.81",src =" 10.152.1.100")/ UDP(sport = 55555, dport = 3338)/ SNMP(版本= 1,社区='测试', PDU = SNMPtrapv2(ID = 14452, varbindlist = [SNMPvarbind(OID =' 1.3.6.1.2.1.1.3.0',值= 6100)])))
在Wireshark中:
... 值(Integer32):6100 ...
在十六进制中看起来:
02 02 17 d4
在哪里' 02 02'是值类型(Integer32)。 但我需要将值类型更改为
价值(时间戳):6100
十六进制:
43 04 17 d4
是的,我可以使用hex更改它:
e=IP(dst="10.152.1.81", src="10.152.1.100")/UDP(sport=55555, dport=3338)/SNMP(version=1 , community= 'test' , PDU=SNMPtrapv2(id=14452, varbindlist=[SNMPvarbind(oid='1.3.6.1.2.1.1.3.0',value=6100)]))
>>> str(e)
"E\x00\x00E\x00\x01\x00\x00@\x11b\xc3\n\x98\x01d\n\x98\x01Q\xd9\x03\r\n\x001T\xf10'\x02\x01\x01\x04\x04test\xa7\x1c\x02\x028t\x02\x01\x00\x02\x01\x000\x100\x0e\x06\x08+\x06\x01\x02\x01\x01\x03\x00\x02\x02\x17\xd4"
>>> c = "E\x00\x00E\x00\x01\x00\x00@\x11b\xc3\n\x98\x01d\n\x98\x01Q\xd9\x03\r\n\x001T\xf10'\x02\x01\x01\x04\x04test\xa7\x1c\x02\x028t\x02\x01\x00\x02\x01\x000\x100\x0e\x06\x08+\x06\x01\x02\x01\x01\x03\x00\x43\x04\x17\xd4"
>>> send IP(c)
但是当我使用' large'陷阱。
是否有另一种方法可以更改此类型,或者我可以在Scapy中找到SNMPvarbind的所有可能字段(可能是value_timeticks,value_oid等)?
抱歉我的谷歌英语。 感谢。
答案 0 :(得分:0)
我认为您可以使用课程ASN1_TIME_TICKS
它应该是这样的:
varbindlist=[SNMPvarbind(oid=ASN1_OID("1.3.6.1.2.1.1.3.0"),value=ASN1_TIME_TICKS(6100))]
<德尔> http://fossies.org/dox/scapy-2.2.0/classscapy_1_1asn1_1_1asn1_1_1ASN1__TIME__TICKS.html 德尔>