在Python 3中使用UTF-8解码VIEWSTATE字符串

时间:2015-03-26 17:31:57

标签: python utf-8 base64 viewstate

我在Python 3中解码ASP.NET视图状态字符串时遇到问题。 当我尝试使用bash的base64命令解码字符串时,它会成功解码字符串,并且我能够看到我需要的所有信息(大部分是希伯来语,意思是UTF-8)。视图状态当然只是base64编码而不是加密的。

但是,当我尝试使用Python的base64库解码字符串然后将字节数组解码为UTF-8字符串时,我收到一条错误消息:

  

UnicodeDecodeError:'utf-8'编解码器无法解码位置的字节0xff   0:无效的起始字节

我应该提一下,由于字符串是视图状态,前几个字节是二进制数据,“0xff”是有意义的,但是在这些字节之后数据是可读的。

Python 3代码段:

b = "The_ViewState"
print(base64.b64decode(b).decode("utf-8"))

为什么解码在bash中工作而不在Python中?怎么解决这个问题?

2 个答案:

答案 0 :(得分:1)

经过一番研究后,我找到了答案:

b = "The_ViewState"
print(base64.b64decode(b).decode("utf-8", "ignore"))

添加"忽略" flag导致decode()丢弃任何无效的字节序列,从而将不相关的字节留在解码的字符串之外。

答案 1 :(得分:-1)

最好的方法是使用此link

一个小的Python 3.5+库,用于解码ASP.NET视图状态。

首先安装:np.assarray()

pip install viewstate