Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
machofile — machofile est un module permettant d'analyser les fichiers binaires Mach-O. | Kitploit
Outils/GitHubGitHub/pstirparo/machofile
Analyse StatiqueRétro-ingénierieAnalyse ForensiqueAnalyse de MalwareAnalyse de Binaires
GitHubpstirparo/machofile

machofile

machofile est un module permettant d'analyser les fichiers binaires Mach-O.

Voir le dépôt
99514il y a 7 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Site web
Partager

machofile

Downloads

machofile est un module permettant d'analyser les fichiers binaires Mach-O, avec un accent sur l'analyse de logiciels malveillants et la rétro-ingénierie.

Inspiré par le module pefile d'Ero Carrera, ce module vise à offrir des capacités similaires mais pour les binaires Mach-O. Le matériel de référence et la documentation utilisés pour acquérir la connaissance du format de fichier, les structures de base et les constantes proviennent des ressources listées ci-dessous.

machofile est autonome. Le module n'a aucune dépendance ; il est indépendant de l'endianness ; et il fonctionne sur macOS, Windows et Linux.

Bien qu'il existe d'autres modules d'analyse Mach-O, les motivations derrière le développement de celui-ci sont :

  • avant tout, pour moi c'était un excellent moyen d'approfondir et d'en apprendre davantage sur le format et les structures Mach-O
  • fournir un moyen simple d'analyser les fichiers Mach-O pour analyse
  • ne pas dépendre de modules externes (par ex. lief, macholib, macho, etc.), puisque tout est directement extrait du fichier et le tout est en Python pur.

Faites-moi savoir si vous l'essayez ou si vous trouvez des bogues mais aussi... soyez indulgent ;) le code sera optimisé et davantage de fonctionnalités seront ajoutées.

Fonctionnalités actuelles :

  • Analyser l'en-tête Mach-O
  • Analyser les commandes de chargement
  • Analyser les segments de fichier
  • Analyser les commandes Dylib
  • Analyser la liste des Dylib
  • Extraire les fonctions importées
  • Extraire les symboles exportés
  • Hachages : hachage dylib, hachage d'import, hachage d'export, hachage d'entitlements, symhash
  • Calcul de l'entropie des segments
  • Extraire le point d'entrée
  • Extraire l'UUID
  • Extraire les informations de version
  • Analyser les informations de base de la signature de code
  • Prise en charge des binaires FAT (Universal)
  • Extraire les tranches Mach-O individuelles des binaires FAT (Universal)
  • Prise en charge de la sortie JSON (format lisible par l'humain et format brut)

Remarque : à l'heure actuelle, cela a été initialement testé sur des échantillons Mach-O x86, x86_64, arm64 et arm64e.

Prochaines fonctionnalités à implémenter (dans le désordre) :

  • Chaînes intégrées
  • Attributs de fichier
  • Indicateur pour les bibliothèques suspectes
  • Détection de packer
  • ...

Utilisation et exemples

Vous pouvez l'utiliser en ligne de commande ou l'importer comme module dans votre code Python, et appeler chaque fonction individuellement pour analyser uniquement les structures qui vous intéressent. Vous pouvez l'installer directement via pip et l'utiliser programmatiquement ou en ligne de commande, ou l'utiliser comme script autonome.

pip install machofile

Version du module

Il attend qu'on lui fournisse soit un chemin de fichier, soit un tampon de données à analyser.

import machofile
macho = machofile.UniversalMachO(file_path='/path/to/machobinary')
macho.parse()

Si le tampon de données est déjà disponible, il peut être fourni directement avec :

import machofile
with open(file_path, 'rb') as f:
    data = f.read()
macho = machofile.UniversalMachO(data=data)
macho.parse()

Pour une utilisation détaillée de l'API, consultez la page de documentation de l'API.

Version en ligne de commande

Vous pouvez également utiliser machofile directement comme outil CLI si vous l'avez installé via pip, ou comme outil autonome via python3 machofile.py. Toutes les fonctionnalités sont disponibles en tant que module, ainsi qu'en tant qu'outil en ligne de commande.

% machofile -h
usage: machofile [-h] -f FILE [-j] [--raw] [-a] [-d] [-e] [-ep] [-g]
                    [-hdr] [-i] [-l] [-seg] [-sig] [-sim] [-u] [-v]
                    [--arch ARCH] [--dump-dir DUMP_DIR]

Parse Mach-O binary structures. (version 2026.02.04)

options:
  -h, --help          show this help message and exit

required arguments:
  -f, --file FILE     Path to the file to be parsed

output format options:
  -j, --json          Output data in JSON format
  --raw               Output raw values in JSON format (use with -j/--json)

data extraction options:
  -a, --all           Print all info about the file
  -d, --dylib         Print Dylib Command Table and Dylib list
  -e, --exports       Print exported symbols
  -ep, --entry-point  Print entry point information
  -g, --general_info  Print general info about the file
  -hdr, --header      Print Mach-O header info
  -i, --imports       Print imported symbols
  -l, --load_cmd_t    Print Load Command Table and Command list
  -seg, --segments    Print File Segments info
  -sig, --signature   Print code signature and entitlements information
  -sim, --similarity  Print similarity hashes
  -u, --uuid          Print UUID
  -v, --version       Print version information

filter options:
  --arch ARCH         Show info for specific architecture only (for Universal binaries)

dump options:
  --dump-dir DUMP_DIR Dump individual Mach-O slices from a FAT/Universal binary
                      to the specified directory

Exemple de sortie :

% machofile -a -f b4f68a58658ceceb368520dafc35b270272ac27b8890d5b3ff0b968170471e2b

[General File Info]
        Filename:         b4f68a58658ceceb368520dafc35b270272ac27b8890d5b3ff0b968170471e2b
        Filesize:         54240
        MD5:              20ffe440e4f557b9e03855b5da2b3c9c
        SHA1:             1bf61ecad8568a774f9fba726a254a9603d09f33
        SHA256:           b4f68a58658ceceb368520dafc35b270272ac27b8890d5b3ff0b968170471e2b

[Mach-O Header]
        magic:            MH_MAGIC (32-bit), 0xFEEDFACE
        cputype:          Intel i386
        cpusubtype:       X86_ALL
        filetype:         EXECUTE
        ncmds:            13
        sizeofcmds:       1180
        flags:            NOUNDEFS, DYLDLINK, TWOLEVEL

[Load Cmd table]
        {'cmd': 'LC_SEGMENT', 'cmdsize': 56}
        {'cmd': 'LC_SEGMENT', 'cmdsize': 192}
        {'cmd': 'LC_SEGMENT', 'cmdsize': 328}
        {'cmd': 'LC_SEGMENT', 'cmdsize': 192}
        {'cmd': 'LC_SEGMENT', 'cmdsize': 56}
        {'cmd': 'LC_SYMTAB', 'cmdsize': 24}
        {'cmd': 'LC_DYSYMTAB', 'cmdsize': 80}
        {'cmd': 'LC_LOAD_DYLINKER', 'cmdsize': 28}
        {'cmd': 'LC_UUID', 'cmdsize': 24}
        {'cmd': 'LC_UNIXTHREAD', 'cmdsize': 80}
        {'cmd': 'LC_LOAD_DYLIB', 'cmdsize': 52}
        {'cmd': 'LC_LOAD_DYLIB', 'cmdsize': 52}
        {'cmd': 'LC_CODE_SIGNATURE', 'cmdsize': 16}

[Load Commands]
        LC_CODE_SIGNATURE
        LC_DYSYMTAB
        LC_LOAD_DYLIB
        LC_LOAD_DYLINKER
        LC_SEGMENT
        LC_SYMTAB
        LC_UNIXTHREAD
        LC_UUID

[File Segments]
        SEGNAME    VADDR VSIZE OFFSET SIZE  MAX_VM_PROTECTION INITIAL_VM_PROTECTION NSECTS FLAGS ENTROPY            
        ------------------------------------------------------------------------------------------------------------
        __PAGEZERO 0     4096  0      0     0                 0                     0      0     0.0                
        __TEXT     4096  28672 0      28672 7                 5                     2      0     5.080680410706916  
        __DATA     32768 4096  28672  4096  7                 3                     4      0     0.1261649636134924 
        __IMPORT   36864 4096  32768  4096  7                 7                     2      0     0.21493796627555234
        __LINKEDIT 40960 20480 36864  17376 7                 1                     0      0     6.637864516225949
Télécharger l’outil