1

ファイルの内容をスクランブルおよびデスクランブルするための小さな簡単なプログラムを探しています。ファイルはzipファイルなので、文字が含まれている可能性があります。2 の補数か何かを考えていましたが、Python でそれを行う方法がわかりません。

この理由は、私の現在の雇用主には厳格なインターネットとファイルのインストールに関する法律があり、メーラーが添付ファイルを zip ファイルとして検出せずにファイルを自分自身にメールで送信したいからです (.jpg に名前を変更しても検出されます)。

私の職場のマシンには既に Python がインストールされています。

4

3 に答える 3

2

xorファイルの内容を特定の値で試して、 XOR暗号を作成することができます。必ず、ファイルをバイナリモードで読み取り/書き込みしてください。これをテストして、目的に合っているかどうかを確認する必要があります(テキストファイルでは問題なく機能しますが、バイナリでは機能しない理由はわかりません)。

もちろん、エンコードとデコードには同じ(キー)値(たとえば文字)を使用する必要がありますが、これらの操作の両方に同じコードを使用できます。

これが私が最近まとめたコードで、まさにそれを実行します。

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を使用してみてください。バイナリモードでファイルをロードし、ピクルスにして送信し、受信側でピクルスを外します。しかし、ピクルスがバイナリでどれだけうまく機能するかはわかりません。

于 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 に答える