我正在尝试使用Scapy来划分SCTP数据包,但我只能将数据包分成不同的层。 如何将SCTP划分为不同的块? 例如,在Scapy中使用show(),我知道SCTP中有2个块,但我不知道如何获得这两个块。 two chunks in SCTP packet
有没有办法在同一层中划分块?或者我可以将show()中的信息存储到数组中吗? 感谢^^
答案 0 :(得分:1)
您应该能够以遍历图层的方式遍历块。
使用如下方法:
def expand(pkt):
payload = []
for p in pkt.payload:
payload+=expand(p)
return [pkt.name, payload]
print(expand(pkt))
print(pkt.payload.payload.payload.name)
我知道,对于SCTP包:
['Ethernet', ['IP', ['SCTP', ['SCTPChunkSACK', []]]]]
SCTPChunkSACK
修改强> 内容:
>>> print(pkt[SCTP][1])
b'\x03\x00\x00\x10\x7f\x8cD\x18\x00\x01\xa0\x00\x00\x00\x00\x00'
>>> print(pkt[SCTP][1].show())
###[ SCTPChunkSACK ]###
type = sack
flags = 0x0
len = 16
cumul_tsn_ack= 0x7f8c4418
a_rwnd = 106496
n_gap_ack = 0
n_dup_tsn = 0
gap_ack_list= []
dup_tsn_list= []
所以你已经在pkt [SCTP] [1:]处拥有你的(嵌套)块列表。