Untitled
import os import math import hashlib from Crypto.Cipher import AES, Blowfish from Crypto.Random import get_random_bytes from Crypto.Util.Padding import pad, unpad from Crypto.Protocol.KDF import scrypt # Fonction de mélange non linéaire pour perturber les données def non_linear_mixer(data): mixed_data = bytearray() for i in range(len(data)): mixed_data.append((data[i] * (i + 1) ^ 0x5A) % 256) return mixed_data # Fonction de génération de clé dynamique basée sur le contenu du fichier def generate_dynamic_key(file_data): # Dérivation de la clé à partir du hachage SHA-256 du fichier avec un sel salt = get_random_bytes(16) dynamic_key = scrypt(file_data, salt, dklen=32, N=2**14, r=8, p=1) return dynamic_key # Fonction pour mélanger et compresser les données avant le cryptage def preprocess_data(file_data): # Applique un mélange non linéaire mixed_data = non_linear_mixer(file_data) # Effectue un hachage pour ajouter de la confusion hashed_data = hashlib.sha256(bytes(mixed_data)).digest() # Retourne les données combinées (mélangées + hachées) return bytes(mixed_data + hashed_data) # Fonction pour chiffrer les données avec un cryptage hybride (AES + Blowfish) def encrypt_data(file_data, key): # Prétraitement des données (mélange et hachage) preprocessed_data = preprocess_data(file_data) # Diviser les données en deux parties égales mid_point = len(preprocessed_data) // 2 part1, part2 = preprocessed_data[:mid_point], preprocessed_data[mid_point:] # Chiffrement Blowfish sur la première moitié cipher_blowfish = Blowfish.new(key, Blowfish.MODE_CBC) encrypted_part1 = cipher_blowfish.encrypt(pad(part1, Blowfish.block_size)) # Chiffrement AES sur la deuxième moitié iv = get_random_bytes(AES.block_size) cipher_aes = AES.new(key, AES.MODE_CBC, iv) encrypted_part2 = cipher_aes.encrypt(pad(part2, AES.block_size)) # Combiner les deux parties chiffrées encrypted_data = cipher_blowfish.iv + encrypted_part1 + iv + encrypted_part2 return encrypted_data # Fonction principale pour crypter le fichier .exe def encrypt_exe(input_file, output_file): # Lecture du fichier .exe with open(input_file, 'rb') as f: file_data = f.read() # Générer une clé dynamique à partir du contenu du fichier dynamic_key = generate_dynamic_key(file_data) # Crypter les données avec cryptage hybride encrypted_data = encrypt_data(file_data, dynamic_key) # Écrire le fichier crypté dans le fichier de sortie with open(output_file, 'wb') as f: f.write(encrypted_data) print(f"Fichier '{input_file}' crypté avec succès sous '{output_file}'.") # Exemple d'utilisation input_exe = 'mon_application.exe' # Chemin vers votre fichier .exe à crypter output_exe = 'mon_application_encrypted.exe' # Nom du fichier crypté encrypt_exe(input_exe, output_exe)
Leave a Comment