【发布时间】: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。已解决。