import base64
import os
import random
import string
# Fonction d'encodage de tentative
def try_decode(content):
encodings = ['utf-8', 'latin-1', 'cp1252']
for encoding in encodings:
try:
return [Link](encoding), encoding
except UnicodeDecodeError:
continue
# Retourner du texte lisible au format binaire
return [Link]('latin-1', errors='ignore'), 'binary (partial)'
# Première fonction : Lire et décoder le fichier
def read_and_decode_file(file_path):
with open(file_path, 'rb') as file: # Ouverture en mode binaire pour lecture
brute
content = [Link]()
decoded_content, encoding_used = try_decode(content)
print(f"Contenu décodé avec encodage {encoding_used} :")
print(decoded_content[:500]) # Imprimer un extrait du contenu
return decoded_content
# Deuxième fonction : Sauvegarder le fichier en clair
def save_file_without_encryption(content, output_path):
try:
with open(output_path, 'w', encoding='utf-8') as file:
[Link](content)
print(f"Fichier sauvegardé sans encodage à : {output_path}")
except PermissionError:
print("Erreur : Permission refusée pour écrire dans ce répertoire. "
"Essayez un autre emplacement, comme le bureau ou le dossier
Documents.")
# Troisième fonction : Lire un fichier sans encodage, l’encoder et sauvegarder avec
un nom aléatoire
def encode_and_save_with_random_name(input_path):
with open(input_path, 'r', encoding='utf-8') as file:
content = [Link]()
encoded_content = base64.b64encode([Link]('utf-8')).decode('utf-8')
random_filename = ''.join([Link](string.ascii_lowercase +
[Link], k=10)) + ".txt"
output_path = [Link]("C:/", random_filename)
with open(output_path, 'w') as file:
[Link](encoded_content)
print(f"Fichier encodé sauvegardé avec un nom aléatoire à : {output_path}")
# Quatrième fonction : Tester le fichier encodé et afficher les informations
def test_encoded_file(file_path):
with open(file_path, 'r') as file:
encoded_content = [Link]()
try:
decoded_content = base64.b64decode(encoded_content).decode('utf-8')
print("Contenu décodé du fichier encodé :")
print(decoded_content[:500]) # Imprimer un extrait pour vérifier
except Exception as e:
print("Erreur de décodage du fichier encodé :", e)
# Cinquième fonction : Quitter le programme
def exit_program():
print("Programme terminé.")
exit()
# Menu principal
def main():
while True:
print("\nOptions :")
print("1 : Lire et décoder le fichier")
print("2 : Sauvegarder le fichier sans encodage")
print("3 : Encoder un fichier en clair et sauvegarder avec un nom
aléatoire")
print("4 : Tester et afficher les informations du fichier encodé")
print("5 : Quitter")
choice = input("Choisissez une option (1-5) : ")
if choice == '1':
file_path = input("Entrez le chemin du fichier à lire et décoder : ")
decoded_content = read_and_decode_file(file_path)
elif choice == '2':
if 'decoded_content' in locals():
output_path = input("Entrez le chemin pour sauvegarder le fichier
sans encodage : ")
save_file_without_encryption(decoded_content, output_path)
else:
print("Aucun contenu décodé à sauvegarder. Exécutez d'abord
l'option 1.")
elif choice == '3':
input_path = input("Entrez le chemin du fichier à encoder : ")
encode_and_save_with_random_name(input_path)
elif choice == '4':
encoded_file_path = input("Entrez le chemin du fichier encodé à
tester : ")
test_encoded_file(encoded_file_path)
elif choice == '5':
exit_program()
else:
print("Option non valide. Veuillez choisir une option entre 1 et 5.")
# Exécution du programme principal
if __name__ == "__main__":
main()