Удаление первых нескольких байтов из пакета UDP с помощью python

Из WireShark я вижу, что на мой сервер отправляется UDP-пакет, содержащий нужные мне данные.

Необработанные данные пакета из wirehark:

55aa001e03840000c864da6ea1a613422f7b18835780f2ac1f657fb39264405cc8a9f6f09291a7532b69ca128d549112002674027daf6fedf73ce5bd73e6e1e31a108970b8881da0c4a19149eed46a3a40870ed89e10a5e197283afa554a91d5ee6a24c96d375862da4a909832890049ce01778d63dddf3ae17d800421032f971d2d671232d1b64d45589b44663a39763575236160ca6bc26e66523cef74ffa1d248ed35329232132341442a0095ce012f7cdfacf71be1bd534d639e2ea78f6a293d46f7066886518cd6777d9b33d0b0d1f2c55701842c88740d0251ff6964487b5b26d949021229124900b26f012b84e2abdffac3bff9c4433d76079d03cdabc303a22045464f80cd25dd7f0bd2f59bf139c61484847621533df77092b06bb59a69a40a4448934800558d012774e29cf7dbd5bd657c87997a53be922e82a42d0736664caf04b66bbcdf6d2cbf3746eb041116768081a4b6f99092a96ed312dad9129110952400928f01757ce79bf71bd4bd2a41ef49a8bc12c940d96e44045032ea5ed74f6b5f76640fa9741ae80df8a4726d909082fb18da3259c4313365921425c9848019ca00e773635ad63791f95340d098253a6474c0cf05c8590402240140bd8286f7a7be0cab23e67dbb1d5feadbbe5225bbc9fe93b23532a49192c95044a59401006b093ae7f85679d779aa4124980000004190822c6441a38230783f0d7fb72d796fb284d74a93f6eda6ad09a741decafecce4a852499a484d8cd4424600805c685a6119d7f9de37b557ee34e978d6d288fe3d06bca9ff8e2a265eca4328c141b000440dd86a1f8499be010a18ff58d9112691c9646529582624c500980d02ef84ef8cdfbdd6bb3e84abdee3c36adfa9ac736e5b656d1de1eb7573e42cb2d30c2f28400cb8164080892a06ff28b591ad724924242551a9310a0019ae01ab6363abf73de3bd8ed73857beeab76ccd9a671cd761680070585e3e2297e3bc10d425094a1634308d2a8bd4ff6de9a2d32508538889244993a400338e012563ef69f73bd379a9cf47c9cb2a169c64cc6d81232c78125f4978265e31d3758f1b5f11dadabc72ffb3254ffecae5a93251a9d84809c998a844004dad01a56aeb6af75cd7bd2fd6b383467e23b5a3bac5c2d800288dd7e661451a4e887a906563a894d5a6b445c96d26df40d5a6a63125e94d06102504990069ad012754f32bf75ce7bfb18b8cffd72cc18eed938d4e02761a260fa466a129b06af27602a422fab2b6a705da8ca2deaad4ab5e63cc

Используя python, как удалить первые 20 символов:

55aa001e03840000c864

а остальных спасти?

Текущий код:

import socket
import sys

# Create a UDP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# Bind the socket to the port
server_address = ('0.0.0.0', 8484)
sock.bind(server_address)
print >>sys.stderr, 'starting up on %s port %s' % server_address

while True:
    print('\nwaiting to receive message')
    data, address = sock.recvfrom(10240)

person user3702643    schedule 06.11.2019    source источник
comment
согласно вашему последнему вопросу, вам просто нужно удалить 10 байтов (при шестнадцатеричном кодировании это расширяется до 20 шестнадцатеричных цифр). вам также нужно игнорировать цифру контрольной суммы в конце. также обратите внимание, что пакеты могут усекаться, поэтому вам, вероятно, также необходимо проверить это. код в моем последнем ответе проверил и сделал это...   -  person Sam Mason    schedule 06.11.2019


Ответы (1)


Поскольку переменная внутри data имеет тип bytes, который, я думаю, можно преобразовать во что-то вроде b'<string_with_your_packet_data>', я думаю, что вы можете использовать нарезку так же, как и в стандартной строке, и она должна работать нормально.

Так что что-то среди строк

while True:
    print('\nwaiting to receive message')
    data, address = sock.recvfrom(10240)
    sliced_packet = data[20:]  # trimming your first 20 characters from your data

person Alexandru Sandu    schedule 06.11.2019
comment
Благодарю вас! Смогу ли я распечатать sliced_packet, чтобы увидеть, работает ли он? - person user3702643; 06.11.2019
comment
конечно, это должно работать, и вы сможете проверить свой вывод и изменения - person Alexandru Sandu; 10.12.2019