【问题标题】:How to modify scapy packet payload如何修改 scapy 数据包有效负载
【发布时间】:2021-10-28 19:34:32
【问题描述】:

我有一个 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'

【问题讨论】:

    标签: python scapy


    【解决方案1】:

    您可以使用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"
    

    【讨论】:

    • 太棒了!正是我需要的。我最终得到的是: predict.lastlayer().load = predict.lastlayer().load[:-4] + b"\xde\xad\xbe\xef"
    猜你喜欢
    • 2017-11-30
    • 2017-08-27
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    • 2012-09-18
    • 2011-05-17
    • 2018-12-11
    • 1970-01-01
    相关资源
    最近更新 更多