【问题标题】:Adding padding to packet using scapy使用 scapy 向数据包添加填充
【发布时间】:2021-06-12 09:05:25
【问题描述】:

如何在 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'

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

【问题讨论】:

  • 我不清楚您要做什么,抱歉。你想创建一个包含 20 个字节数据的 UDP 数据包,所有这些字节都设置为 0,是吗? (所以你会有 IP 头 + UDP 头 + 20 个字节的 0)
  • 不,我想在 UDP 段的头部的末尾注入零,使其等于 20 个字节
  • 但 UDP 的标头是不变的。所以“在 UDP 报文头的末尾注入零”意味着添加 12 个字节的有效负载。
  • 但我想在标题之后添加零,而不是有效载荷的结尾

标签: python header scapy packet


【解决方案1】:

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

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 段标头的末尾。希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-13
    • 2013-01-29
    • 2011-12-15
    • 2019-07-31
    • 1970-01-01
    • 2014-11-25
    • 1970-01-01
    相关资源
    最近更新 更多