[英]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.