我需要AVPs
从直径数据包中提取所有细节。目前我正在使用dpkt lib
,Python
但我发现它不支持提取所有 AVP。
在标题级别,仅支持以下内容
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()
有没有比 dpkt 更好的库或使用此库提取 AVP 的任何其他方式?
版本:dpkt 1.8