Fin Programme Cryptage de données: Pb M2Crypto
Bonjour à tous.
Et bien voila, je viens de finir un petit programme en python qui permet d'uploader/downloader des fichiers sur un serveur http de façon cryptée.
le programme fonctionne très bien... pour les .txt seulement :/
a l'upload, le fichier est encrypté, puis envoyé sur le serveur, au download l'inverse.
les fichier txt sont très bien crypté et décrypter; mais pour les images, les pdf ... ça ne marche pas: les images sont lisible mais complètement désinguées, les pdf vides etc...
je lâche les deux fonction principales de mon scripts,
ainsi que les deux pages complete d'upload/download au cas ou
si quelqu'un pouvait jeter un coup d'oeil :D
je distribuerai la totalité des sources quand le script serra entièrement fonctionnel.
Cryptage + upload:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| class CryptAndUpload(threading.Thread):
def __init__(self, args=None, kwargs=None):
threading.Thread.__init__(self)
self._args = args
self._kwargs = kwargs
def run(self):
frame = self._args[1]
origineFilePath = self._args[0]
origineFileName = os.path.basename(origineFilePath)
origineFile = open(origineFilePath)
origineFileBody = origineFile.read()
http = httpReq()
#Cryptage
buf = makebuf(origineFileBody)
Rand.load_file('randpool.dat', -1)
s = SMIME.SMIME()
s.load_key('signer_key.pem', 'signer.pem')
p7 = s.sign(buf)
x509 = X509.load_cert('recipient.pem')
sk = X509.X509_Stack()
sk.push(x509)
s.set_x509_stack(sk)
s.set_cipher(SMIME.Cipher('des_ede3_cbc'))
tmp = BIO.MemoryBuffer()
s.write(tmp, p7)
p7 = s.encrypt(tmp)
out = BIO.MemoryBuffer()
s.write(out, p7)
outputFile = open("./tmp/"+origineFileName, "w+")
outputFile.write(out.read())
outputFile.close()
Rand.save_file('randpool.dat')
#Upload
repFile = open("tmp.txt", "w+")
sendFile = open("./tmp/"+origineFileName, "r")
data = {
'PassWord': frame.param.serverPassword,
'name': 'fichier_0',
'file': sendFile,
}
page = http.getPage(frame.param.serverUploadPath+"?upload", data)
repFile.write(page.read())
repFile.close()
sendFile.close()
frame.gauge.SetValue(99)
os.remove("./tmp/"+origineFileName)
frame.Gt.SetLabel("Upload Complete!")
return 1
def makebuf(text):
return BIO.MemoryBuffer(text) |
page complète: http://hacker-law.net/perso/CryptUL.txt
donwload + decryptage:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| def onDeCrypt(self, event):
filePath = self.filesList.GetStringSelection()
if(filePath):
http = httpReq()
http.defineProxy(self.param.proxy)
registerPath = self.selectFile(filePath)
#Download
data = {'PassWord': self.param.serverPassword}
page = http.getFile(self.param.serverUploadPath+"?file="+filePath, "./tmp/se.p7", data )
#Reply
repFile = open("tmp.txt", "w+")
repFile.write(page.read())
repFile.close()
#DeCrypt
s = SMIME.SMIME()
s.load_key('recipient_key.pem', 'recipient.pem')
p7, data = SMIME.smime_load_pkcs7("./tmp/se.p7")
out = s.decrypt(p7)
x509 = X509.load_cert('signer.pem')
sk = X509.X509_Stack()
sk.push(x509)
s.set_x509_stack(sk)
st = X509.X509_Store()
st.load_info('signer.pem')
s.set_x509_store(st)
p7_bio = BIO.MemoryBuffer(out)
p7, data = SMIME.smime_load_pkcs7_bio(p7_bio)
v = s.verify(p7)
decryptFile = open(registerPath, "w+")
decryptFile.write(v)
#os.remove("./tmp/se.p7")
wx.MessageBox('DeCrypt completed', 'Info')
return 1
return 0 |
page complète: http://hacker-law.net/perso/DeCryptDL.txt
n'hésitez surtout pas a donner votre avis sur le code ;)
Merci beaucoup :)