При обнюхивании пакетов с помощью scapy я могу сохранить их в переменную
sniffed = sniff(count=1)
Теперь я хотел бы посмотреть, что внутри пакета, выполнив
print sniffed
or
print str(sniffed)
но все это дает мне что-то вроде следующего:
������0� E4h@@����������� l��
что не совсем то, что мне нужно. Итак, как я могу преобразовать перехваченный пакет в удобочитаемый двоичный файл, или массив байтов, или что-то более полезное, чтобы я мог видеть, что внутри? Я уже пытался использовать struct.unpack(format, packet)
с такими форматами, как "!B"
, но это не кажется правильным решением, потому что пакет может быть длиннее одного байта, короткого или целочисленного.
Пример того, что я пытаюсь
>>> packet = sniff(count=1)[0]
>>> hexdump(packet)
0000 00 50 56 8E 00 0D 14 CC 20 16 E7 59 08 00 45 00 .PV..... ..Y..E.
0010 00 34 6B AB 40 00 40 06 C6 48 AC 11 8A E2 68 10 .4k.@[email protected].
0020 69 CC B5 47 00 50 E9 85 17 B0 BA EF 29 B2 80 10 i..G.P......)...
0030 01 DD 8D 58 00 00 01 01 08 0A 00 0E A2 C0 03 5D ...X...........]
0040 9D 1C
>>> packetByteArray = bytearray(repr(str(packet)))
>>> hex(packetByteArray[0])
'0x27'
>>>
Но в шестнадцатеричном дампе я вижу, что первый байт на самом деле 0x00
, а не 0x27