1

我正在寻找一个简单的小程序来加扰和解扰文件的内容。该文件是一个 zip 文件,因此它可能包含任何字符。正在考虑类似二进制补码之类的东西,但不知道如何在 Python 中做到这一点。

这样做的原因是我现在的雇主有严格的互联网和文件安装法,我想邮寄自己的文件,而邮件程序不会将附件检测为 zip 文件(即使您将其重命名为 .jpg,它也会这样做)。

我已经在我的工作机器上安装了 Python。

4

3 回答 3

2

您可以尝试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])
于 2012-09-27T16:19:25.420 回答
0

我已经成功通过StealthZip通过电子邮件和代理限制!

但是,如果您确实想在 python 中执行此操作,则可以尝试使用pickle。以二进制模式加载文件,腌制,发送,并在接收端取消腌制。不过,我不知道 pickle 与二进制文件的功能有多好。

于 2012-09-27T16:25:14.903 回答
0

您也可以简单地对文件进行 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()
于 2012-09-28T01:09:57.143 回答