Untitled
unknown
plain_text
a year ago
3.0 kB
8
Indexable
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)Editor is loading...
Leave a Comment