用scapy制作S1AP包

2024-09-28 21:33:38 发布

您现在位置:Python中文网/ 问答频道 /正文

提前感谢您的帮助。我是新来的(只有第二天)。我需要创建数据包并发送到网络接口,预期的协议栈是: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)

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


Tags: ipid协议datastream格式数据包网络接口
1条回答
网友
1楼 · 发布于 2024-09-28 21:33:38

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生成数据包,对其进行解码然后打印。你可以看到,解码的是你所期望的

相关问题 更多 >