我正在寻找一个简单的小程序来加扰和解扰文件的内容。该文件是一个 zip 文件,因此它可能包含任何字符。正在考虑类似二进制补码之类的东西,但不知道如何在 Python 中做到这一点。
这样做的原因是我现在的雇主有严格的互联网和文件安装法,我想邮寄自己的文件,而邮件程序不会将附件检测为 zip 文件(即使您将其重命名为 .jpg,它也会这样做)。
我已经在我的工作机器上安装了 Python。
您可以尝试xor
使用特定值创建文件的内容,创建XOR-cipher,只需确保以二进制模式读取/写入文件。您必须对此进行测试,看看它是否适合您的目的(它适用于文本文件,我不明白为什么它不适用于二进制文件。)
当然,您必须使用相同的(键)值(例如字符)进行编码和解码 - 尽管您可以对这两种操作使用相同的代码。
这是我最近整理的一些代码,它们就是这样做的:
import sys
def processData(filename, key):
with open(filename, 'rb') as inf, open(filename+'.xor', 'wb') as outf:
for line in inf:
line = ''.join([chr(ord(c)^ord(key)) for c in line])
outf.write(line)
if __name__ == '__main__':
if len(sys.argv) != 3:
print 'Usage: xor_it filename key'
print ' key = a single character'
else:
processData(sys.argv[1], sys.argv[2])
我已经成功通过StealthZip通过电子邮件和代理限制!
但是,如果您确实想在 python 中执行此操作,则可以尝试使用pickle。以二进制模式加载文件,腌制,发送,并在接收端取消腌制。不过,我不知道 pickle 与二进制文件的功能有多好。
您也可以简单地对文件进行 base64 编码。这将使您的文件更大,但具有所有 ascii 文本的好处(然后您可以将其粘贴到电子邮件中。)
请注意,这将覆盖当前文件。将其更改为输出到另一个文件并不难。
#b64.py
import base64
import sys
def help():
print """Usage: python b64.py -[de] file
-d\tdecode
-e\tencode"""
sys.exit(0)
def decode(filename):
with open(filename) as f:
bin = base64.b64decode(f.read())
with open(filename,'wb') as f:
f.write(bin)
def encode(filename):
with open(filename,'rb') as f:
text = base64.b64encode(f.read())
with open(filename,'w') as f:
f.write(text)
if len(sys.argv) != 3:
help()
if sys.argv[1] == "-d":
decode(sys.argv[2])
elif sys.argv[1] == "-e":
encode(sys.argv[2])
else:
help()