NeuroCore
Utilitaire d'analyse structurelle binaire et de visualisation haute performance
Résumé
NeuroCore est un utilitaire natif macOS conçu pour l'analyse structurelle de données binaires via une visualisation à haute vitesse. En tirant parti du calcul généraliste sur unités de traitement graphique (GPGPU) via les Metal Compute Shaders, l'application mappe des flux binaires bruts sur une courbe de Hilbert remplissant l'espace en temps réel. Cette projection facilite l'identification rapide de la taxonomie des fichiers, de la distribution d'entropie et des anomalies cryptographiques, en remédiant aux limitations de la représentation hexadécimale linéaire.
Introduction
Les éditeurs hexadécimaux traditionnels présentent les données binaires dans un format linéaire basé sur les décalages, ce qui masque les motifs structurels à grande échelle et la densité des données. NeuroCore comble cette lacune heuristique en projetant les données linéaires dans un espace topologique bidimensionnel.
La projection centrale repose sur la courbe de Hilbert, une courbe fractale continue remplissant l'espace. Cette transformation mathématique préserve la localité spatiale : les points de données adjacents dans le flux mémoire linéaire restent strictement adjacents dans la visualisation 2D. Cette propriété permet aux analystes de parser visuellement la composition structurelle d'un fichier — en distinguant le code machine, le texte structuré, les bitmaps et les blocs à haute entropie — sans analyser l'en-tête du fichier.
Architecture technique
NeuroCore est architecturé comme une application native haute performance, contournant les couches d'abstraction intermédiaires pour interagir directement avec le GPU.
- Language : Swift 5.5+ (Strict Concurrency)
- Pipeline graphique : API Metal (Compute & Render Command Encoders)
- Interface : SwiftUI avec le pont
NSViewRepresentable pour les couches Metal.
Pipeline de rendu
Le moteur de rendu utilise un kernel personnalisé en Metal Shading Language (MSL) pour exécuter le calcul parallèle de l'entropie de Shannon et le mappage des coordonnées.
- Ingestion : les données binaires brutes sont diffusées dans des objets
MTLBuffer.
- Calcul : le GPU exécute un calcul d'entropie à fenêtre glissante sur le buffer.
- Mappage : les décalages linéaires sont transformés en coordonnées $(x, y)$ à l'aide d'algorithmes de mappage de Hilbert bit à bit.
- Rastérisation : les fragments de pixels sont colorés dynamiquement en fonction de la variance d'entropie locale, atteignant des performances de 60 fps sur des jeux de données arbitrairement volumineux sans thrashing de la VRAM.
Analyse visuelle des données et interprétation
Les études de cas suivantes démontrent l'efficacité de NeuroCore à distinguer les structures de fichiers grâce à la visualisation de l'entropie.
Figure 1 : Visualisation d'un binaire non identifié de 17,7 Mo (identifié comme JSON hiérarchique)
Étude de cas I : Données hiérarchiques à faible entropie
Sujet : fichier de 17,7 Mo classé comme « Inconnu » par le système d'exploitation.
- Signature d'entropie (faible/moyenne) : la visualisation est dominée par le spectre vert/bleu sarcelle, indiquant un score d'entropie d'environ $\approx 2.0 - 4.0$. Contrairement aux blobs chiffrés, ce spectre dénote une forte redondance et une grande prédictibilité dans le flux de données.
- Caractéristiques topologiques : la segmentation géométrique distincte et les artefacts « en blocs » le long de la courbe de Hilbert sont caractéristiques d'un texte joliment mis en forme. Les régions solides représentent des séquences d'octets récurrentes (par exemple, indentation par espaces, clés répétées), tandis que les variations dispersées représentent des changements de valeurs.
- Conclusion : la topographie visuelle confirme que le fichier est une structure textuelle hiérarchique non compressée (jeu de données JSON) plutôt qu'un exécutable compilé, éliminant le besoin d'une inspection hexadécimale initiale.
Figure 2 : Visualisation d'une image disque Apple de 192 Mo (.dmg)
Étude de cas II : Archives compressées à haute entropie
Sujet : volume .dmg de 192 Mo.
- Signature d'entropie (élevée) : la saturation des données de pixels rouges signifie une entropie maximale (environ $\approx 7.5 - 8.0$ bits par octet). Bien qu'elles soient visuellement interprétées comme du « bruit », cette distribution stochastique indique l'élimination efficace de la redondance des données.
- Uniformité de la texture : la visualisation ne présente pas les « îlots » géométriques vus dans la figure 1. Les algorithmes de compression (par exemple, LZFSE, zlib) répartissent les valeurs d'octets uniformément pour maximiser l'efficacité de stockage, produisant un champ à haute variance.
- Conclusion : cette densité visuelle est la signature distincte des exécutables empaquetés, des volumes chiffrés ou des archives compressées. Dans un contexte médico-légal, observer cette signature dans un fichier prétendument standard suggérerait immédiatement une injection de charge stéganographique ou un chiffrement.
Fonctionnalités clés
- Calcul accéléré par le matériel : décharge les heuristiques d'entropie et la transformation de coordonnées vers le GPU via les Metal Compute Shaders, garantissant une navigation en temps réel.
- Préservation de la localité de Hilbert : transforme les flux linéaires en topographie 2D tout en maintenant les relations de voisinage, rendant les frontières structurelles visuellement explicites.
- Colorimétrie basée sur l'entropie :
- Rouge : entropie élevée (chiffrement, compression, sortie RNG).
- Bleu/Vert : entropie faible à moyenne (code machine x86/ARM64, texte, en-têtes).
- Noir : espace nul (padding/allocation à zéro).
- Fenêtrage virtuel : implémente un système de navigation à allocation nulle. Les décalages sont calculés dynamiquement dans le shader, permettant une traversée immédiate de fichiers à l'échelle du gigaoctet sans pré-bufferiser l'ensemble des données dans la VRAM.
Cas d'utilisation
- Rétro-ingénierie : localisation rapide des sections
.text, des ressources intégrées ou des charges utiles chiffrées dans des conteneurs binaires.
- Analyse de malwares : identification visuelle des packers et des couches d'obfuscation, qui se manifestent comme des anomalies à haute entropie distinctes de la logique compilée standard.
- Criminalistique numérique : détection de données ajoutées (overlays de fin de fichier) ou de modifications stéganographiques qui perturbent les motifs de structure de fichier attendus.
- Validation cryptographique : vérification visuelle de l'uniformité des générateurs de nombres aléatoires (RNG) et de l'efficacité des algorithmes de compression.
Installation et compilation
Ce projet utilise la chaîne d'outils native de macOS et ne nécessite aucun gestionnaire de paquets externe.
Prérequis :
- macOS 12.0 (Monterey) ou supérieur.
- Architecture Apple Silicon (M1/M2/M3) recommandée pour un débit optimal des shaders.
- Xcode Command Line Tools.
Compilation :
Exécutez la commande suivante à la racine du projet pour invoquer le compilateur Swift et lier les frameworks requis (SwiftUI, Metal, MetalKit, AppKit, Foundation) :
swiftc NeuroCoreApp.swift ContentView.swift Renderer.swift ShaderSource.swift Utils.swift \
-o NeuroCore \
-sdk $(xcrun --show-sdk-path) \
-target arm64-apple-macos12.0 \
-framework SwiftUI \
-framework Metal \
-framework MetalKit \
-framework AppKit \
-framework Foundation
Exécution :
Utilisation
- Ingestion de données : glissez-déposez n'importe quel binaire directement sur la zone de visualisation. Le rendu est instantané.
- Navigation :
- Pan : défilement à deux doigts (trackpad) ou molette de la souris.
- Zoom : maintenez
Option + faites défiler pour ajuster la densité d'octets par pixel.
Licence
Tous droits réservés.
Toute utilisation commerciale, redistribution ou modification non autorisée est strictement interdite.