Menghapus beberapa byte pertama dari paket UDP menggunakan python

Dari WireShark saya dapat melihat bahwa paket UDP sedang dikirim ke server saya berisi data yang saya perlukan.

Data paket mentah dari Wireshark:

55aa001e03840000c864da6ea1a613422f7b18835780f2ac1f657fb39264405cc8a9f6f09291a7532b69ca128d549112002674027daf6fedf73ce5bd73e6e1e31a108970b8881da0c4a19149eed46a3a40870ed89e10a5e197283afa554a91d5ee6a24c96d375862da4a909832890049ce01778d63dddf3ae17d800421032f971d2d671232d1b64d45589b44663a39763575236160ca6bc26e66523cef74ffa1d248ed35329232132341442a0095ce012f7cdfacf71be1bd534d639e2ea78f6a293d46f7066886518cd6777d9b33d0b0d1f2c55701842c88740d0251ff6964487b5b26d949021229124900b26f012b84e2abdffac3bff9c4433d76079d03cdabc303a22045464f80cd25dd7f0bd2f59bf139c61484847621533df77092b06bb59a69a40a4448934800558d012774e29cf7dbd5bd657c87997a53be922e82a42d0736664caf04b66bbcdf6d2cbf3746eb041116768081a4b6f99092a96ed312dad9129110952400928f01757ce79bf71bd4bd2a41ef49a8bc12c940d96e44045032ea5ed74f6b5f76640fa9741ae80df8a4726d909082fb18da3259c4313365921425c9848019ca00e773635ad63791f95340d098253a6474c0cf05c8590402240140bd8286f7a7be0cab23e67dbb1d5feadbbe5225bbc9fe93b23532a49192c95044a59401006b093ae7f85679d779aa4124980000004190822c6441a38230783f0d7fb72d796fb284d74a93f6eda6ad09a741decafecce4a852499a484d8cd4424600805c685a6119d7f9de37b557ee34e978d6d288fe3d06bca9ff8e2a265eca4328c141b000440dd86a1f8499be010a18ff58d9112691c9646529582624c500980d02ef84ef8cdfbdd6bb3e84abdee3c36adfa9ac736e5b656d1de1eb7573e42cb2d30c2f28400cb8164080892a06ff28b591ad724924242551a9310a0019ae01ab6363abf73de3bd8ed73857beeab76ccd9a671cd761680070585e3e2297e3bc10d425094a1634308d2a8bd4ff6de9a2d32508538889244993a400338e012563ef69f73bd379a9cf47c9cb2a169c64cc6d81232c78125f4978265e31d3758f1b5f11dadabc72ffb3254ffecae5a93251a9d84809c998a844004dad01a56aeb6af75cd7bd2fd6b383467e23b5a3bac5c2d800288dd7e661451a4e887a906563a894d5a6b445c96d26df40d5a6a63125e94d06102504990069ad012754f32bf75ce7bfb18b8cffd72cc18eed938d4e02761a260fa466a129b06af27602a422fab2b6a705da8ca2deaad4ab5e63cc

Menggunakan python, bagaimana cara menghapus 20 karakter pertama:

55aa001e03840000c864

dan menyimpan sisanya?

Kode saat ini:

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 sumber
comment
sesuai pertanyaan terakhir Anda, Anda hanya perlu menghapus 10 byte (saat dikodekan hex, ini bertambah menjadi 20 digit hex). Anda juga harus mengabaikan digit checksum di akhir. perhatikan juga bahwa paket bisa terpotong, jadi Anda mungkin perlu memeriksanya juga. kode dalam respons terakhir saya memeriksa dan melakukan ini...   -  person Sam Mason    schedule 06.11.2019


Jawaban (1)


Karena variabel di dalam data bertipe bytes, yang menurut saya dapat diterjemahkan menjadi sesuatu seperti b'<string_with_your_packet_data>', menurut saya Anda dapat menggunakan slicing seperti yang Anda lakukan pada string standar dan itu akan berfungsi dengan baik.

Jadi sesuatu di antara garis

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
Terima kasih! Apakah saya dapat mencetak irisan_packet untuk melihat apakah berhasil? - person user3702643; 06.11.2019
comment
tentu saja, itu akan berhasil dan Anda harus dapat menguji keluaran dan perubahan Anda - person Alexandru Sandu; 10.12.2019