繁体   English   中英

自定义解码脚本:扫描字符串文字时停止运行

[英]Custom Decode Script: EOL while scanning string literal

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

我的代码:

#!/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:扫描字符串文字时停产

SyntaxError:扫描字符串文字时停产

按任意键继续 。

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

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

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

>>> 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编码是一个很好的选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM