繁体   English   中英

如何修改 scapy 数据包有效载荷

[英]How to modify scapy packet payload

我有一个 python 文件,它声明要通过修改有效负载并将它们发回的系统发送的数据包集。 脚本从 python 文件导入数据包,发送和接收它们,并且需要能够预测修改后的数据包返回时的样子。

我的问题是,如何从从文件读取的数据包列表中生成具有修改负载的数据包?

输入文件定义了具有可变长度标头的数据包,例如:

payload_len = 50
pkts = (Ether()/IP()/Raw(payload_len*b'\x00'), \
        Ether()/IP()/TCP()/Raw(payload_len*b'\x00'), \
        Ether()/IP()/UDP()/Raw(payload_len*b'\x00')

修改数据包的系统将一个四字节的已知标签(例如0xdeadbeef )放入有效载荷中。 它可以将该标签放在有效负载的开头或结尾。

因此脚本需要对列表中的每个数据包执行如下操作:

from packet_list import *
predict = pkts
predict[0].payload[0] = b'\xde'
predict[0].payload[1] = b'\xad'
predict[0].payload[2] = b'\xbe'
predict[0].payload[3] = b'\xef'

或者

predict[2].payload[payload_len-4] = b'\xde'
predict[2].payload[payload_len-3] = b'\xad'
predict[2].payload[payload_len-2] = b'\xbe'
predict[2].payload[payload_len-1] = b'\xef'

您可以使用load来访问Raw字节:

for pkt in pkts:
    payload = pkt.lastlayer()
    payload.load = b"\xde\xad\xbe\xef" + payload.load[4:] # or payload.load[:-4] + b"\xde\xad\xbe\xef"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM