#coding=utf-8 # ___________.__.__ .__.__ .__ # _ _____/|__| | ____ _______|__| | | | _____ # | __) | | | _/ __ \___ / | | | | __ # | | | |_ ___/ / /| | |_| |__/ __ _ # ___ / |__|____/___ >_____ __|____/____(____ / # / / / / # __________ __ .__ # ______ _____ _/ |_ ____ | |__ ___________ # | ___/__ \ __/ ___| | _/ __ _ __ # | | / __ | | ___| Y ___/| | / # |____| (____ /__| ___ >___| /___ >__| # / / / / ############################################################## # # # Ce programme protège vos informations sur Filezilla en # # cryptant les fichiers contenant ces informations. # # une clé de 8 caractères aléatoire est générée puis utilisée# # Utilisation : # # - Placez Filezillapatcher.py dans un dossier # # - Lancez la commande : "python FilezillaPatcher.py" # # Attendez la fin du téléchargement et de la compilation puis# # profitez d'un version sécurisé de Filezilla. # # Necromoine (hwc-crew.com) # # Thank's to : Fr0g, Kallimero, Armel # # # ############################################################# import random import tarfile import urllib import platform import os def generation(): ''' Fonction qui génère une chaine à 8 caractères ''' # create a 8 length varariable chaine = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz123456789' a = 0 final = '' while a < 9: # nombre de caractères générés par la boucle aleatoire = random.randint(0,65) # nombre de caractères de la chaine 'chaine' final = final + chaine[aleatoire:aleatoire+1] a = a+ 1 return final def remplacement(fichier, numero, remplacement): # Remplace one line by an other one with the ''' Remplace une ligne dans un fichier donné ''' lignes = [] with open(fichier, 'r') as fichiers: for ligne in fichiers: lignes.append(ligne) code = remplacement + 'n' lignes[numero-1] = remplacement with open(fichier, 'w') as fichiers: for ligne in lignes: fichiers.write(ligne) ''' Boucle principale du programme ''' # Prérequis pour la suite try: urllib.urlretrieve('http://sourceforge.net/projects/filezilla/files/FileZilla_Client/3.5.0/FileZilla_3.5.0_src.tar.bz2', 'Filezilla.tar.bz2') except: print 'Impossible de telecharger le programme, verifiez votre connexion internet' quit() else: print 'Telechargement du programme...' archive = tarfile.open('Filezilla.tar.bz2', 'r') archive.extractall() # Partie une : modification des scripts phrase = '\n wxString EncryptString(std::string toBeEncrypted,std::string sKey){\n std::string sEncrypted(toBeEncrypted);\n unsigned int iKey(sKey.length()), iIn(toBeEncrypted.length()), x(0);\n for(unsigned int i = 0; i < iIn; i++){\n' phrase += ' sEncrypted[i] = toBeEncrypted[i] ^ sKey[x] & 10;\n if(++x == iKey){ x = 0; }\n }\n wxString toReturn(sEncrypted.c_str(), wxConvUTF8);\n return toReturn;\n }\n' remplacement('filezilla-3.5.0/src/interface/queue_storage.cpp',20 , phrase) phrase = '\n wxString EncryptPass(std::string toBeEncrypted,std::string sKey){\n std::string sEncrypted(toBeEncrypted);\n unsigned int iKey(sKey.length()), iIn(toBeEncrypted.length()), x(0);\n for(unsigned int i = 0; i < iIn; i++){\n' phrase += ' sEncrypted[i] = toBeEncrypted[i] ^ sKey[x] & 10;\n if(++x == iKey){ x = 0; }\n }\n wxString toReturn(sEncrypted.c_str(), wxConvUTF8);\n return toReturn;\n }\n' remplacement('filezilla-3.5.0/src/interface/xmlfunctions.cpp', 6, phrase) code = generation() phrase = 'Bind(insertServerQuery_, server_table_column_names::password, EncryptString(std::string(server.GetPass().mb_str()), "' + code + '"));' remplacement('filezilla-3.5.0/src/interface/queue_storage.cpp', 620, phrase) phrase = 'pass = EncryptString(std::string(GetColumnText(selectServersQuery_, server_table_column_names::password).mb_str()), "' + code + '");' remplacement('filezilla-3.5.0/src/interface/queue_storage.cpp', 888, phrase) phrase = 'AddTextElement(node, "Pass", EncryptPass(std::string(server.GetPass().mb_str()), "' + code + '"));' remplacement('filezilla-3.5.0/src/interface/xmlfunctions.cpp', 700, phrase) phrase = 'pass = EncryptPass(std::string(GetTextElement(node, "Pass").mb_str()), "' + code + '");' remplacement('filezilla-3.5.0/src/interface/xmlfunctions.cpp', 595, phrase) if platform.system() == 'Windows': print 'Le script ne comprend pas la compilation sous Windows, compilez à la main (les instructions sont disponibles sur le site de filezilla)' # can't compile if windows if platform.system() == 'Linux': # if linux, we compile this is here there are problems os.chdir('filezilla-3.5.0/') os.system('sudo ./configure && make && make install') print ('Filezilla Patcher a correctement effectue les modifications au logiciel') raw_input('Appuyez sur une touche pour quitter')
ex0ns