问题描述
在此先感谢您的帮助。我是新来的(仅第二天)。我需要创建数据包并发送到网络接口,预期的协议栈为:ETH / IP / SCTP / S1AP / NAS。据我了解,直到SCTP,这对船民来说都是微不足道的任务,但是我有一个问题。我正在执行以下操作:
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消息是不正确的,但是问题是我看到畸形的SCTP层3次并且没有S1AP。为什么?有人有有效的SCTP数据块示例吗?
解决方法
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构建数据包,对其进行解码然后打印。您可以看到解码的正是您所期望的