我试图做替罪羊/python嗅探器的直径消息和解析直径部分,以获得AVP从Raw.load。在一些失败之后,我回到了基本的python/scapy脚本,如下所示:
from scapy.all import *
def pkt_diam(pkt):
raw = pkt.getlayer(Raw).load
print raw
# pkt.show()
sniff(iface="eth0", filter="port 3868", store=0, prn=pkt_diam)通过打印raw.load,我只收到了一些AVP,但非常难以读。如果我用
pkt.show()我收到了整个包,以太网,IP,TCP和原始部分,但是Raw.load几乎是不可用的。
###[ Raw ]###
load = '\x01\x00\x00\xec@\x00\x01/\x01\x00\x00\x00\x07K\x12\xca\x07K\x12\xca\x00\x00\x01\x07@\x00\x00 00000001;000001;61de2650\x00\x00\x01\x04@\x00\x00 \x00\x00\x01\n@\x00\x00\x0c\x00\x00(\xaf\x00\x00\x01\x02@\x00\x00\x0c\x01\x00\x00\x00\x00\x00\x01\x15@\x00\x00\x0c\x00\x00\x00\x01\x00\x00\x01\x08@\x00\x00\x1dtest.a-server.org\x00\x00\x00\x00\x00\x01(@\x00\x00\x14a-server.org\x00\x00\x01)@\x00\x00 \x00\x00\x01\n@\x00\x00\x0c\x00\x00(\xaf\x00\x00\x01*@\x00\x00\x0c\x00\x00\x13\x89\x00\x00\x02t\x80\x00\x008\x00\x00(\xaf\x00\x00\x01\n@\x00\x00\x0c\x00\x00(\xaf\x00\x00\x02u\x80\x00\x00\x10\x00\x00(\xaf\x00\x00\x00\x01\x00\x00\x02v\x80\x00\x00\x10\x00\x00(\xaf\x00\x00\x00\x05'我需要一些帮助,以解析和解码直径Raw.load消息。Thx预先
发布于 2014-08-15 00:28:52
最好的方法是自己定义直径标头,遵循我刚才给您的链接,这是Scapy文档的主要部分,详细介绍了如何构建自己的协议类型(标头)的逐步指南。
一旦您正确地定义了直径()头,对直径包进行剖析将变得非常容易。
对于直径数据包报头,the协议的维基百科页面似乎是一个非常好的参考。
发布于 2015-10-09 13:54:17
作为当前Scapy请求https://bitbucket.org/secdev/scapy/pull-requests/的一部分,#109提供了对直径层(解析和生成)的支持。
下载最新的Scapy源代码和diameter.py文件,这些文件应该放在“贡献者”目录中(此文件不能完全使用当前的2.3.1Scapy版本)
发布于 2018-10-21 05:44:18
替罪羊很有用。
from scapy.all import *
packets = rdpcap('/path/to/rx.pcap')
def generatePacket():
'''
Generate a packet.
'''
IP()/TCP()/DiamG()
def dissectPacket():
'''
dissect a packet.
'''
packet[0][DiamG]以上说明了这一想法。您可以使用print(repr(packet[0][DiamG]))查看结果。当然,为了检查数据包是否为直径数据包,您可能需要首先检查如下:
x = packet[0]
while x.payload:
x = x.payload
if x.name == 'Diameter' # it has diameter message.
# dissect it like above.以及如何集成和发送直径包,您可以检查:建筑直径信息
https://stackoverflow.com/questions/25306718
复制相似问题