0

我制作了一个脚本来解码几年前制作的文件,并且在进行第二次解码测试时遇到了问题。

我的代码:

#!/usr/bin/python
# -*- coding: utf-8 -*-
from decoder.encodings import *

#Toontown Online Encoded Script Decoder

"""
##########################################
# Decoder was built to decompile         #
# Team Pawz Multihack v2.0               #
##########################################
"""
input = "Text can be located here: http://pastebin.com/rdeAhyar ";
def decode():
    print input.decode('latin_1')
decode()

当我执行我得到的代码时

SyntaxError:扫描字符串文字时 EOL

SyntaxError:扫描字符串文字时 EOL

按任意键继续 。. .

如果这有帮助,我将使用 Panda3D 中分发的 Python 版本。

4

1 回答 1

1

问题是通过简单的粘贴将二进制数据嵌入到源代码中。该错误出现在 Windows 上,因为 Windows 将字节值 26(十六进制 1A)视为文本文件的结尾,并在此字节值之前停止读取文本文件。Linux 不受此影响,这就是我无法重现该问题的原因。

read()观察文件大小和Windows 下“full”返回的字节数的差异:

>>> os.path.getsize('test.py')
49297L
>>> len(open('test.py', 'r').read()) # text mode
1100
>>> len(open('test.py', 'rb').read()) # binary mode
49297

解决方案不是在源代码中嵌入二进制数据,而是从一个额外的文件中加载它。确保以二进制模式而不是文本模式打开它。

或者您必须对二进制数据进行编码,使其不再包含“奇异”字节值。Base64 编码是一个很好的选择。

于 2014-07-23T23:24:59.033 回答