Добавление заполнения в пакет с помощью scapy

#python #header #scapy #packet

Вопрос:

как ввести нули в конец заголовка сегмента 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'xb8xaco6x1cxa2xe8xe72<ePx08x00Ex00x00.x0bT@x00xecx11x18~MHxa9x82x83xcaxf0W iC8x00x1ax85 Hx00Yx00x00x00x00x00x00x00x00x00x00x00x00x00x00x00'

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

after : b'xb8xaco6x1cxa2xe8xe72<ePx08x00Ex00x00.x0bT@x00xecx11x18~MHxa9x82x83xcaxf0W iC8x00x1ax85 Hx00Yx00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00'
 

но это добавляет нули в конец пакетов!!!!!

Комментарии:

1. Мне непонятно, что вы пытаетесь сделать, извините. Вы хотите создать UDP-пакет, содержащий 20 байтов данных, все эти байты равны 0, не так ли? (таким образом, у вас будет заголовок IP заголовок UDP 20 байт 0)

2. нет, я хочу ввести нули в конец заголовка сегмента UDP, чтобы он был равен 20 байтам

3. но заголовок UDP постоянен. таким образом, «добавить нули в конец заголовка сегмента UDP» означает добавление полезной нагрузки в 12 байт.

4. но я хочу добавить нули сразу после заголовка, а не в конце полезной нагрузки

Ответ №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.Я надеюсь, что это вам поможет.