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