我正在尝试删除 scapy 的子层,并且想知道如何选择子层?
就上下文而言,“多路径 TCP 选项”是我有兴趣删除的子层。如下所示,该层属于 scapy 中的 TCP 层。任何帮助都会很棒。
###[ TCP ]###
sport = http
dport = 35446
seq = 2431624968
ack = 3319728884
dataofs = 13L
reserved = 0L
flags = A
window = 233
chksum = 0xb518
urgptr = 0
\options \
|###[ No Operation ]###
| kind = NOP
|###[ No Operation ]###
| kind = NOP
|###[ Timestamp ]###
| kind = Timestamp
| length = 10
| timestamp_value= 3970740631
| timestamp_echo= 11847444
|###[ Multipath TCP option ]###
| kind = MpTCP
| \mptcp \
| |###[ Multipath TCP Data Sequence Signal ]###
| | length = 20
| | subtype = DSS
| | reserved = 0L
| | flags = AM
| | data_ack = 2484809684
| | dsn = 2431624968
| | subflow_seqnum= 1429
| | datalevel_len= 1428
| | checksum = 0xa08b
我不确定,但是scapy有方法
remove_"e.g. payload"()
。也许您会在文档中找到更多信息。 TCPOptions 定义在 scapy->layers->inet.py 中。
另一种方法是构建一个新的 pcap。这是不干净的方式,但这也有效。
我开发了一个工具,可以对 pcap 层进行更改。您可以使用它通过简单地提供其偏移来删除任何层。
例如要删除以太网层,
python3 modify_layers.py -i test.pcap -l "(0,14)"