2016-10-10 2 views
-1

Я не могу отправить UDP-пакет с произвольным размером пакета в зависимости от моего входного аргумента, поэтому всякий раз, когда мне «данных» недостаточно, чтобы заполнить требуемую полезную нагрузку пакета, я хочу просто «заполнить» остальное пустыми данными ,Самый простой способ «заполнить» полезную нагрузку?

Так что если я отправлю 123, но я хочу, чтобы пакет имел размер 100 байт, метод будет заполнять пакет данными доступа, я не хочу повторять и добавлять пробелы, чтобы заполнить его вручную.

Любые советы?

ответ

0

Вы можете создать отступы bytearray(), и только перед именем (или добавить) его к полезной нагрузке:

payload = b'123' 
padding_length = 100 - len(payload) 
padding_byte = b' ' 
return bytearray(padding_byte * padding_length) + payload 
0

Я не эксперт по сети, но вы можете захотеть взглянуть на struct.pack()

Это обнулит пэд длину символов и должно быть молниеносно:

from struct import pack 

result = pack('!100s', 'input_value') 

Это также позволяет возражаете порядка байтов ваших данных, если это важно в вашем домене. В этом случае данные выглядят правильно, но заполняются нулями.

Надеюсь, что это поможет!

0

Попробуйте так:

>>> from scapy.all import * 
WARNING: No route found for IPv6 destination :: (no default route?) 
>>> p = IP(dst="62.21.20.21")/UDP() 
>>> p = p/Raw('a'*(100-len(p))) 
>>> send(p) 
. 
Sent 1 packets. 
>>> 

# tcpdump -ni cplane0 udp -e -v -X 
tcpdump: listening on cplane0, link-type EN10MB (Ethernet), capture size 262144 bytes 
10:15:31.904204 54:ab:3a:56:59:1e > fa:16:3e:e1:9e:14, ethertype IPv4 (0x0800), length 114: (tos 0x0, ttl 62, id 1, offset 0, flags [none], proto UDP (17), length 100) 
    44.60.11.3.53 > 62.21.20.21.53: 24929 updateM+ [b2&3=0x6161] [24929a] [24929q] [24929n] [24929au][|domain] 
     0x0000: 4500 0064 0001 0000 3e11 f31f 2c3c 0b03 E..d....>...,<.. 
     0x0010: 3e15 1415 0035 0035 0050 c3c9 6161 6161 >....5.5.P..aaaa 
     0x0020: 6161 6161 6161 6161 6161 6161 6161 6161 aaaaaaaaaaaaaaaa 
     0x0030: 6161 6161 6161 6161 6161 6161 6161 6161 aaaaaaaaaaaaaaaa 
     0x0040: 6161 6161 6161 6161 6161 6161 6161 6161 aaaaaaaaaaaaaaaa 
     0x0050: 6161 6161 6161 6161 6161 6161 6161 6161 aaaaaaaaaaaaaaaa 
     0x0060: 6161 6161        aaaa 

Пожалуйста, обратите внимание, "прото UDP (17), длина 100" на выходе TCPDUMP.

Смежные вопросы