import pefile import tkinter as tk from tkinter import filedialog def extract_pe_info(file_path): try: pe = pefile.PE(file_path) info = { 'AddressOfEntryPoint': hex(pe.OPTIONAL_HEADER.AddressOfEntryPoint), 'MajorLinkerVersion': pe.OPTIONAL_HEADER.MajorLinkerVersion, 'MajorImageVersion': pe.OPTIONAL_HEADER.MajorImageVersion, 'MajorOperatingSystemVersion': pe.OPTIONAL_HEADER.MajorOperatingSystemVersion, 'DllCharacteristics': hex(pe.OPTIONAL_HEADER.DllCharacteristics), 'SizeOfStackReserve': pe.OPTIONAL_HEADER.SizeOfStackReserve, 'NumberOfSections': pe.FILE_HEADER.NumberOfSections, 'SizeOfImage': pe.OPTIONAL_HEADER.SizeOfImage, 'SizeOfHeaders': pe.OPTIONAL_HEADER.SizeOfHeaders, 'Subsystem': pe.OPTIONAL_HEADER.Subsystem, 'Magic': pe.FILE_HEADER.Machine, 'Characteristics': hex(pe.FILE_HEADER.Characteristics), 'TimeDateStamp': pe.FILE_HEADER.TimeDateStamp, 'ImageBase': hex(pe.OPTIONAL_HEADER.ImageBase), 'CheckSum': pe.OPTIONAL_HEADER.CheckSum, 'SizeOfCode': pe.OPTIONAL_HEADER.SizeOfCode, 'SizeOfInitializedData': pe.OPTIONAL_HEADER.SizeOfInitializedData, 'SizeOfUninitializedData': pe.OPTIONAL_HEADER.SizeOfUninitializedData, 'AddressOfEntryPoint': hex(pe.OPTIONAL_HEADER.AddressOfEntryPoint), 'ImageBase': hex(pe.OPTIONAL_HEADER.ImageBase), 'MajorImageVersion': pe.OPTIONAL_HEADER.MajorImageVersion, 'MajorSubsystemVersion': pe.OPTIONAL_HEADER.MajorSubsystemVersion, 'SizeOfImage': pe.OPTIONAL_HEADER.SizeOfImage, 'SizeOfHeaders': pe.OPTIONAL_HEADER.SizeOfHeaders, 'Subsystem': pe.OPTIONAL_HEADER.Subsystem, 'SizeOfHeapReserve': pe.OPTIONAL_HEADER.SizeOfHeapReserve, 'NumberOfRvaAndSizes': pe.OPTIONAL_HEADER.NumberOfRvaAndSizes, 'DataDirectory': pe.OPTIONAL_HEADER.DATA_DIRECTORY, } return info except Exception as e: return str(e) def inspect_pe_attributes(file_path): try: pe = pefile.PE(file_path) # Récupérer la liste des entrées DATA_DIRECTORY data_directory_entries = pe.OPTIONAL_HEADER.DATA_DIRECTORY # Parcourir la liste pour trouver l'entrée du répertoire des ressources for entry in data_directory_entries: if entry.name == "IMAGE_DIRECTORY_ENTRY_RESOURCE": resource_size = entry.Size return resource_size except Exception as e: return f"Erreur d'inspection du fichier {file_path}: {str(e)}" def upload_file(): file_path = filedialog.askopenfilename() if file_path: pe_info = extract_pe_info(file_path) print(pe_info) # Création de l'interface graphique root = tk.Tk() root.title("PE File Info Extractor") upload_button = tk.Button(root, text="Upload PE File", command=upload_file) upload_button.pack(pady=20) root.mainloop()