我在python3(https://github.com/phaethon/scapy)中使用scapy库并在网上嗅探数据包,我得到这些数据包格式,这里有一些例子:
b'\xe8t\xe6,\xf1:0\x10\xb3\x18\x8b\xfd\x08\x00E\x00\x00b\xe7\xb1@\x00@\x06\xf2j\xc0\xa8\x01h\xd8:\xc6.\xd2B\x01\xbb\xa1\x9a\xbf\x1e\x0b"q\xc1\x80\x18\x00\xfe^\x95\x00\x00\x01\x01\x08\n\x00CX6)\x818P\x17\x03\x03\x00)\x00\x00\x00\x00\x00\x00\x00\x0f\x8d\xdc\x86`:\xe9\x8f=\xec\x89u~\xdf\x7f\x1aN\x85\xf4ESt\xa0oT\xdba\xfan\xc7\xb8\x01\xf8\t'
或
b'\xe8t\xe6,\xf1:0\x10\xb3\x18\x8b\xfd\x08\x00E\x00\x01\x03\xe3\x9e@\x00@\x06\xda\xbe\xc0\xa8\x01h\xc0|\xf9\n\xcc6\x01\xbbDo\x9a\xe4N\xaf\x11~\x80\x18\x05\xa4\xc6x\x00\x00\x01\x01\x08\n\x00CY\xed`\xa8Vb\x17\x03\x03\x00\xca\x00\x00\x00\x00\x00\x00\x004;wn,\x13\x8d9\x17G\xee/\x1c\x15\x12,\xc0\xde\xf4\xab\xa5emvZ\xf5\x1f\x94\x8a\xcc4g>@\xb9\xf2dYs\xeb<l;\x8b\x8a\xccT\n\xacUT\x049\xcbp\x1c#\x87z\\[8\xde\xd7I\x14\xfd\x94\x81\x13x`\x9eH\xd8\xbc)lc\x0fE\xfc\x99F\xb0c\xb9v\x86\x1c\xc4\xec\x14\xb6\x00\x1e\x8f\xd5\x08H/\xa4\xea\xf4~2\x90\xc7\xabJ\xb9\x9f\xf9\x06\xc6\xe5$\xe4(\xab#\xd8\xf4<\x7f\xfa\xe6Y_\x80\x14\xb2H\x10\x1cT\xdf\x1f\x0f\xbb\xce\xf8\xbe q\xf3=qQ\xd2a!e\x8a\xbf9Y\x7f\xb8\xe5Bo\xd8\r\xcb\xcf\x01H\xf8x\x90\x98\xfc>$\xef>\x80;\xa9\xf9\x7f\x9f\xc5?V\xecH:\x7f\xfeb\xa5E\xab'
奇怪的是,如果我尝试将它们转换为idle3,请键入:
> from scapy.all import *
> text = b'blablablabytesstring'
> text2 = Ether(text)
> text2
它有效,它正确转换。
但是,如果我做同样的事情,但写一个简单的脚本,如:
from scapy.all import *
text = b'sameblablablabytesstringasidle3'
text2 = Ether(text)
print (text2)
它不会转换,它会打印相同的字节字符串。
为什么呢?我该如何解决这个问题?
- UPDATE -
这是text2.show()
的输出###[ Ethernet ]###
dst = e8:74:e6:2c:f1:3a
src = 30:10:b3:18:8b:fd
type = 0x800
###[ IP ]###
version = 4
ihl = 5
tos = 0x0
len = 259
id = 24485
flags = DF
frag = 0
ttl = 64
proto = tcp
chksum = 0x5eb8
src = 192.168.1.104
dst = 192.124.249.10
\options \
###[ TCP ]###
sport = 51172
dport = https
seq = 3204149667
ack = 3154139287
dataofs = 8
reserved = 0
flags = PA
window = 1444
chksum = 0xb3ea
urgptr = 0
options = [('NOP', None), ('NOP', None), ('Timestamp', (4182786, 1620720294))]
###[ Raw ]###
load = b'\x17\x03\x03\x00\xca\x00\x00\x00\x00\x00\x00\x01\xba\xc1\xa0H\xa2\xb3\t\x02:P>\x8b\xeb\xaa\xbd\x83H\x05\x1f(\x02\x80\x9e\x96\xa5\xd9\xf7\xf4\x07&s\xfd6\xb9 \x00\x8c\xcf\xd7\xe4\x04pQ\x992"$\x07R\x02\xb4\x97\xad!\xafB\xc8I\xa6\xe6\x18\xc7x\x16\x9a$c\xc4\x05}\xffl\xe7\x89\x93\xa4\x9a\xf1\x90\x8d\xde"\xe0\xb2\x06\x14(Yk\xf441\xbf\xfa?\xd4puE\x97\xcd\xb1\xc2\xfaaa\x14{\xd4f\x80\xb9\x81keO\x90\x13\x9c\x01\xaa\xe4}\xab{\xd8\x9a\xb3\xe3\x88\xcd:5\xe1\xa9\xd6:\x06l_\xed\xb3\x96=\xcc\x0f?c\xf7\xad\xed\xde\xca||\xd6\xbc\xa4\x99u\xff\xbcI\xe2\x8cQ\xe3\x87\x9f\x18(\rp\x04u\xad\r\xa55\xbe`q\x1b=`5\'\xbc\xf2\x0b\xb9V\x1ecp'
- UPDATE2-- (来自idle3)
>>> from scapy.all import *
WARNING: No route found for IPv6 destination :: (no default route?). This affects only IPv6
>>> text = b"0\x10\xb3\x18\x8b\xfd\xe8t\xe6,\xf1:\x08\x00E\xa0\x004a'@\x004\x06\x90\xa2\x173{\x1b\xc0\xa8\x01d\x00P\xec\xe6\x01\x81%|\xfcY@8\x80\x10\x03\xd4(\xbe\x00\x00\x01\x01\x08\nx\x93UR\x00\x00\xd7$"
>>> text2 = Ether(text)
>>> text2
<Ether dst=e8:74:e6:2c:f1:3a src=30:10:b3:18:8b:fd type=0x800 |<IP version=4 ihl=5 tos=0x0 len=98 id=59313 flags=DF frag=0 ttl=64 proto=tcp chksum=0xf26a src=192.168.1.104 dst=216.58.198.46 options=[] |<TCP sport=53826 dport=https seq=2711273246 ack=186806721 dataofs=8 reserved=0 flags=PA window=254 chksum=0x5e95 urgptr=0 options=[('NOP', None), ('NOP', None), ('Timestamp', (4413494, 696334416))] |<Raw load=b'\x17\x03\x03\x00)\x00\x00\x00\x00\x00\x00\x00\x0f\x8d\xdc\x86`:\xe9\x8f=\xec\x89u~\xdf\x7f\x1aN\x85\xf4ESt\xa0oT\xdba\xfan\xc7\xb8\x01\xf8\t' |>>>>
- UPDATE3--(从program.py打印)
Ether / IP / TCP 192.168.1.104:53826 > 216.58.198.46:https PA / Raw
答案 0 :(得分:1)
您可以尝试text2.show()
代替print(text2)
,看看情况如何?
from scapy.all import *
text = b'\xe8t\xe6,\xf1:0\x10\xb3\x18\x8b\xfd\x08\x00E\x00\x00b\xe7\xb1@\x00@\x06\xf2j\xc0\xa8\x01h\xd8:\xc6.\xd2B\x01\xbb\xa1\x9a\xbf\x1e\x0b"q\xc1\x80\x18\x00\xfe^\x95\x00\x00\x01\x01\x08\n\x00CX6)\x818P\x17\x03\x03\x00)\x00\x00\x00\x00\x00\x00\x00\x0f\x8d\xdc\x86`:\xe9\x8f=\xec\x89u~\xdf\x7f\x1aN\x85\xf4ESt\xa0oT\xdba\xfan\xc7\xb8\x01\xf8\t'
text2 = Ether(text)
text2.show()