首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >替罪羊嗅探和解码直径

替罪羊嗅探和解码直径
EN

Stack Overflow用户
提问于 2014-08-14 11:16:27
回答 3查看 3.4K关注 0票数 0

我试图做替罪羊/python嗅探器的直径消息和解析直径部分,以获得AVP从Raw.load。在一些失败之后,我回到了基本的python/scapy脚本,如下所示:

代码语言:javascript
复制
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,但非常难以读。如果我用

代码语言:javascript
复制
pkt.show()

我收到了整个包,以太网,IP,TCP和原始部分,但是Raw.load几乎是不可用的。

代码语言:javascript
复制
###[ 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预先

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-08-15 00:28:52

最好的方法是自己定义直径标头,遵循我刚才给您的链接,这是Scapy文档的主要部分,详细介绍了如何构建自己的协议类型(标头)的逐步指南。

一旦您正确地定义了直径()头,对直径包进行剖析将变得非常容易。

对于直径数据包报头,the协议的维基百科页面似乎是一个非常好的参考。

票数 0
EN

Stack Overflow用户

发布于 2015-10-09 13:54:17

作为当前Scapy请求https://bitbucket.org/secdev/scapy/pull-requests/的一部分,#109提供了对直径层(解析和生成)的支持。

下载最新的Scapy源代码和diameter.py文件,这些文件应该放在“贡献者”目录中(此文件不能完全使用当前的2.3.1Scapy版本)

票数 0
EN

Stack Overflow用户

发布于 2018-10-21 05:44:18

替罪羊很有用。

代码语言:javascript
复制
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]))查看结果。当然,为了检查数据包是否为直径数据包,您可能需要首先检查如下:

代码语言:javascript
复制
x = packet[0]
while x.payload:
    x = x.payload
    if x.name == 'Diameter' # it has diameter message.
        # dissect it like above.

以及如何集成和发送直径包,您可以检查:建筑直径信息

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25306718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档