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
je distribuerai la totalité des sources quand le script serra entièrement fonctionnel.
Cryptage + upload:
page complète: http://hacker-law.net/perso/CryptUL.txt
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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)
donwload + decryptage:
page complète: http://hacker-law.net/perso/DeCryptDL.txt
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
n'hésitez surtout pas a donner votre avis sur le code
Merci beaucoup![]()
Partager