NeuroCore
Высокопроизводительная утилита для структурного анализа и визуализации двоичных данных
Аннотация
NeuroCore — это нативная утилита для macOS, разработанная для структурного анализа двоичных данных с помощью высокоскоростной визуализации. Используя технологию GPGPU (General-Purpose Computing on Graphics Processing Units) через Metal Compute Shaders, приложение в реальном времени отображает необработанные двоичные потоки на пространственно-заполняющую кривую Гильберта. Эта проекция обеспечивает быструю идентификацию таксономии файлов, распределения энтропии и криптографических аномалий, преодолевая ограничения линейного шестнадцатеричного представления.
Введение
Традиционные шестнадцатеричные редакторы представляют двоичные данные в линейном формате, основанном на смещениях, что скрывает макроструктурные закономерности и плотность данных. NeuroCore устраняет этот эвристический пробел, проецируя линейные данные в двумерное топологическое пространство.
Основная проекция основана на кривой Гильберта, непрерывной фрактальной пространственно-заполняющей кривой. Это математическое преобразование сохраняет пространственную локальность: точки данных, смежные в линейном потоке памяти, остаются строго смежными в двумерной визуализации. Это свойство позволяет аналитикам визуально анализировать структурный состав файла — различать машинный код, структурированный текст, растровые изображения и блоки с высокой энтропией — без разбора заголовка файла.
Техническая архитектура
NeuroCore спроектирован как высокопроизводительное нативное приложение, обходящее промежуточные уровни абстракции для прямого взаимодействия с GPU.
- Язык: Swift 5.5+ (строгая конкурентность)
- Графический конвейер: Metal API (кодировщики команд вычислений и рендеринга)
- Интерфейс: SwiftUI с мостом
NSViewRepresentable для слоёв Metal.
Конвейер рендеринга
Механизм рендеринга использует пользовательское ядро Metal Shading Language (MSL) для параллельного вычисления энтропии Шеннона и отображения координат.
- Приём: Необработанные двоичные данные передаются в объекты
MTLBuffer.
- Вычисления: GPU выполняет вычисление энтропии скользящим окном по всему буферу.
- Отображение: Линейные смещения преобразуются в координаты $(x, y)$ с помощью битовых алгоритмов отображения Гильберта.
- Растеризация: Фрагменты пикселей динамически окрашиваются на основе локальной дисперсии энтропии, достигая производительности 60 кадров/с на наборах данных произвольного размера без перегрузки видеопамяти.
Визуальный анализ и интерпретация данных
Следующие примеры демонстрируют эффективность NeuroCore в различении структур файлов с помощью визуализации энтропии.
Рисунок 1: Визуализация неопознанного двоичного файла размером 17,7 МБ (идентифицирован как иерархический JSON)
Пример I: Иерархические данные с низкой энтропией
Объект: Файл размером 17,7 МБ, классифицированный операционной системой как «Неизвестный».
- Сигнатура энтропии (низкая/средняя): В визуализации преобладает зелёно-бирюзовый спектр, что свидетельствует о значении энтропии $\approx 2.0 - 4.0$. В отличие от зашифрованных блоков, этот спектр указывает на высокую избыточность и предсказуемость потока данных.
- Топологические особенности: Чёткое геометрическое разделение и «блочные» артефакты вдоль кривой Гильберта характерны для форматированного текста. Сплошные области представляют повторяющиеся последовательности байтов (например, отступы из пробелов, повторяющиеся ключи), а разрозненные вариации — изменения значений.
- Заключение: Визуальная топография подтверждает, что файл представляет собой несжатую иерархическую текстовую структуру (набор данных JSON), а не скомпилированный исполняемый файл, что устраняет необходимость первоначального шестнадцатеричного анализа.
Рисунок 2: Визуализация образа диска Apple (.dmg) размером 192 МБ
Пример II: Сжатые архивы с высокой энтропией
Объект: Том .dmg размером 192 МБ.
- Сигнатура энтропии (высокая): Насыщение красными пиксельными данными указывает на максимальную энтропию ($\approx 7,5 - 8,0$ бит на байт). Хотя визуально это интерпретируется как «шум», данное стохастическое распределение свидетельствует об эффективном устранении избыточности данных.
- Однородность текстуры: Визуализация лишена геометрических «островков», наблюдаемых на рисунке 1. Алгоритмы сжатия (например, LZFSE, zlib) равномерно распределяют значения байтов для максимизации эффективности хранения, что приводит к полю высокой дисперсии.
- Заключение: Эта визуальная плотность является отличительной сигнатурой упакованных исполняемых файлов, зашифрованных томов или сжатых архивов. В контексте криминалистики обнаружение такой сигнатуры в файле, претендующем на роль стандартного документа, немедленно укажет на внедрение стеганографической полезной нагрузки или шифрование.
Ключевые особенности
- Аппаратно-ускоренные вычисления: Перекладывает эвристику энтропии и преобразование координат на GPU через Metal Compute Shaders, обеспечивая навигацию в реальном времени.
- Сохранение локальности Гильберта: Преобразует линейные потоки в двумерную топографию, сохраняя отношения соседства, делая структурные границы визуально явными.
- Колориметрия на основе энтропии:
- Красный: Высокая энтропия (шифрование, сжатие, выход ГСЧ).
- Синий/Зелёный: Низкая-средняя энтропия (машинный код x86/ARM64, текст, заголовки).
- Чёрный: Нулевое пространство (заполнение нулями/выделение).
- Виртуальное окно: Реализует систему навигации с нулевым выделением памяти. Смещения вычисляются динамически внутри шейдера, что позволяет немедленно перемещаться по файлам гигабайтного размера без предварительной буферизации полных наборов данных в VRAM.
Варианты использования
- Обратная разработка: Быстрая локализация секций
.text, встроенных ресурсов или зашифрованных полезных нагрузок внутри двоичных обёрток.
- Анализ вредоносного ПО: Визуальная идентификация упаковщиков и слоёв обфускации, которые проявляются как аномалии с высокой энтропией, отличные от стандартной скомпилированной логики.
- Цифровая криминалистика: Обнаружение добавленных данных (оверлеев в конце файла) или стеганографических модификаций, нарушающих ожидаемые шаблоны структуры файла.
- Криптографическая валидация: Визуальная проверка равномерности генератора случайных чисел (ГСЧ) и эффективности алгоритмов сжатия.
Установка и сборка
Этот проект использует нативный инструментарий macOS и не требует внешних менеджеров пакетов.
Предварительные требования:
- macOS 12.0 (Monterey) или новее.
- Рекомендуется архитектура Apple Silicon (M1/M2/M3) для оптимальной пропускной способности шейдеров.
- Инструменты командной строки Xcode.
Компиляция:
Выполните следующую команду в корне проекта для вызова компилятора Swift и связывания требуемых фреймворков (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
Запуск:
./NeuroCore
Использование