0
我需要從直徑數據包中提取所有AVPs
詳細信息。目前我使用dpkt lib
作爲Python
,但我發現它不支持提取所有AVP。無法使用dpkt提取大部分直徑AVP(python)
在頭水平,只有以下是suppported
class Diameter(dpkt.Packet):
__hdr__ = (
('v', 'B', 1),
('len', '3s', 0),
('flags', 'B', 0),
('cmd', '3s', 0),
('app_id', 'I', 0),
('hop_id', 'I', 0),
('end_id', 'I', 0)
)
在AVP水平,支持的的AVP的其餘部分被存儲爲二進制數據(如果我沒看錯)
class AVP(dpkt.Packet):
__hdr__ = (
('code', 'I', 0),
('flags', 'B', 0),
('len', '3s', 0),
)
import dpkt
f = open('snoop.pcap','r')
pcap = dpkt.pcap.Reader(f)
for ts, buf in pcap:
eth = dpkt.ethernet.Ethernet(buf)
ip = eth.data
tcp = ip.data
dia = dpkt.diameter.Diameter(tcp.data)
avp = dpkt.diameter.AVP(tcp.data)
if tcp.dport == 3868 and len(tcp.data) > 0:
print (str(dia.cmd) + ' ' + str(dia.hop_id) + ' ' + str(dia.end_id) + ' ' + str(avp.code))
f.close()
還有沒有其他的lib比dpkt更好或者使用這個lib提取AVP的方法?
版本:dpkt 1.8