การลบสองสามไบต์แรกออกจากแพ็กเก็ต UDP โดยใช้ python

จาก WireShark ฉันเห็นว่าแพ็กเก็ต UDP ถูกส่งไปยังเซิร์ฟเวอร์ของฉันที่มีข้อมูลที่ฉันต้องการ

ข้อมูลแพ็กเก็ตดิบจาก wireshark:

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