【问题标题】:Crafting S1AP packet using scapy使用 scapy 制作 S1AP 数据包
【发布时间】:2021-01-16 05:19:44
【问题描述】:

提前感谢您的帮助。我是 scapy 的新手(仅第 2 天)。我需要创建数据包并发送到网络接口,预期的协议栈是:ETH/IP/SCTP/S1AP/NAS。据我了解,直到 SCTP,这对于 scapy 来说是一项微不足道的任务,但是我有一个问题。我正在做以下事情:

eth_ip=Ether()/IP(src="192.168.1.1",dst="192.168.2.2")
sctp=SCTP(sport=1,dport=2,tag=0x0,chksum=1)
sctp_data=SCTPChunkData(len=4, tsn=1, stream_id=1, stream_seq=1, delay_sack=0, unordered=0, beginning=1, ending=1, proto_id=18, data="\x01" )
pkt1=eth_ip/sctp/sctp_data
wrpcap("sctp.pcap", pkt1)

所以,我制作了 1 个数据包并将其存储到 PCAP,当我在 Wireshark 中打开时,它说数据包格式错误。我希望看到 Eth/ip/sctp/s1ap,当然 s1ap 消息不正确,但问题是我看到了 3 次格式错误的 SCTP 层并且没有 S1AP。为什么?有人有有效的 SCTP 数据块示例吗?

【问题讨论】:

  • 听起来像一个错误。即使您提供一些层垃圾数据,Scapy 也不应该编写格式错误的 pcap。我会将其作为一个问题发布在 scapy 的仓库中(如果这是可重现的)。
  • 如果你给一个层垃圾数据,Wireshark 很可能会将垃圾数据报告为“格式错误”。捕获文件本身 没有格式错误,因为它不是捕获文件格式(pcap、pcapng 等)的有效示例。如果 Scapy 脚本正在写入一个无效的 S1AP/NAS 数据包,因为某些手工制作的(即不是由 Scapy 制作的,由用户制作的)S1AP/NAS 数据无效,那不是 Scapy 的问题。
  • 其实我认为问题只出在 SCTPChunckData,有没有人有一个 scapy 代码来制作一个带有 Data Chunck 的 SCTP 数据包?
  • 我找到了答案,SCTPChunkData 错误地设置了字段 len=4,但实际上应该是 16。已解决。

标签: python scapy sctp


【解决方案1】:

from scapy.layers.inet import Ether, IP
from scapy.layers.sctp import SCTP, SCTPChunkData


eth_ip = Ether() / IP(src="192.168.1.1",dst="192.168.2.2")
sctp = SCTP(sport=1,dport=2,tag=0x0)
sctp_data_payload = "    "
sctp_data_hdr = SCTPChunkData( data=sctp_data_payload )


pkt1 = eth_ip/sctp/sctp_data_hdr
pkt1.show2()

scapy.wrpcap("sctp.pcap", pkt1)

2 个提示:

  • 一般来说,最好让 Scapy 放置链接层的协议。 (除非您非常了解协议)
  • pkt1.show2(),将使 scpy 构建数据包,解码然后打印。可以看到解码出来的就是你所期望的

【讨论】:

    猜你喜欢
    • 2014-08-18
    • 1970-01-01
    • 1970-01-01
    • 2021-03-19
    • 1970-01-01
    • 2017-02-07
    • 2019-07-26
    • 2021-10-08
    • 1970-01-01
    相关资源
    最近更新 更多