2012-09-27 24 views
1

我正在尋找一個小型簡單的程序來爭奪和解擾文件的內容。該文件是一個zip文件,因此它可能包含任何字符。正在思考類似於補碼或其他東西,但不知道如何在Python中做到這一點。簡單的Python代碼爭奪解擾文件內容

原因是我目前的僱主有嚴厲的互聯網和文件安裝法律,我想郵寄自己的文件,而郵件程序檢測到附件爲zip文件(即使您將它重命名爲.jpg )。

我已經在我的工作機器上安裝了Python。

回答

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]) 
0

我曾與獲得通過電子郵件和代理限制stealthZip成功!

但是,如果你確實想用python來做,你可以嘗試使用pickle。以二進制模式加載文件,醃製它,發送它,並在接收端取消它。不過,我不知道鹹菜和二進制文件的兼容性如何。

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()