首页 > 解决方案 > 使用 scapy 向数据包添加填充

问题描述

如何将零注入 UDP 段标头的末尾以使其等于 20 个字节。谁能帮我?

这是我的代码:

    if UDP in packet:
    """get layers after udp"""
    layer_after = packet[UDP].payload.copy()

    """build a padding layer"""
    pad = Padding()
    pad.load = '\x00' * 12

    layer_before = packet.copy()
    layer_before[UDP].remove_payload()
    packet = layer_before / pad / layer_after

这是 udp 数据包的输出:

before : b'\xb8\xaco6\x1c\xa2\xe8\xe72<eP\x08\x00E\x00\x00.\x0bT@\x00\xec\x11\x18~MH\xa9\x82\x83\xca\xf0W+iC8\x00\x1a\x85+H\x00Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

--------------------------------------------------------------

after : b'\xb8\xaco6\x1c\xa2\xe8\xe72<eP\x08\x00E\x00\x00.\x0bT@\x00\xec\x11\x18~MH\xa9\x82\x83\xca\xf0W+iC8\x00\x1a\x85+H\x00Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

但它在数据包的末尾添加了零!!!!!!

标签: pythonheaderscapypacket

解决方案


我和你有同样的问题。也许你可以试试这个:

if UDP in packet:
    layer_after = packet[UDP].payload.copy()
    pad = Padding()
    pad.load = '\x00' * 12
    layer_before = packet.copy()
    layer_before[UDP].remove_payload()


    packet = layer_before / raw(pad) / layer_after

填充将跟在 UDP 段标头的末尾。我希望这会对您有所帮助。


推荐阅读