FACT

Hardware & Industrial v4.4 · 23.06.2026 активный

Firmware Analysis and Comparison Tool (FKIE-CAD / Fraunhofer). Веб-платформа для анализа и сравнения прошивок. 60+ плагинов: извлечение файловых систем, анализ строк, поиск CVE, сравнение версий прошивок, обнаружение Open Source-компонентов и лицензий.

v4.4
23.06.2026 current
Добавлен 13.07.2026 · Обновлён 13.07.2026 · Hardware & Industrial
Установка
git clone https://github.com/fkie-cad/FACT_core.git
cd FACT_core && python3 -m venv venv && source venv/bin/activate
src/install/pre_install.sh
# После перезагрузки:
src/install/install.py
src/start_fact.py  # веб-интерфейс на порту 5000
переведено ИИ

FACT logo with magnifying glass as the C
Инструмент анализа и сравнения прошивок (FACT)

codecov Codacy Badge Gitter chat CI Build License: GPL v3

Содержание

Почему FACT?

Анализ прошивок может использоваться для достижения нескольких интересных целей. Среди основных — выявление функциональности, компонентов и потенциальных проблем безопасности в проприетарных прошивках.

Инструмент анализа и сравнения прошивок (FACT) предназначен для автоматизации большей части ручной работы по анализу прошивок. FACT объединяет растущий набор мощных анализов для создания единого интерфейса, который позволяет пользователю перейти от произвольного образца прошивки к готовому анализу. Некоторые ключевые особенности анализа FACT заключаются в том, что результаты:

  • просматриваются
  • ищутся
  • и сравниваются.

Кроме того, FACT предлагает множество способов навигации и визуализации результатов анализа и содержимого прошивок для удобного доступа. Основной интерфейс FACT — это веб-интерфейс на основе html/js/css, который может быть размещен локально или распространен через сеть. Дополнительно FACT предоставляет REST-подобный HTTP API, который можно изучить с помощью встроенного SwaggerUI. Некоторые ключевые особенности веб-интерфента:

  • Простая визуализация прошивки с помощью дерева файлов, отображающего все компоненты прошивки.
  • Быстрая навигация по результатам анализа за счет наблюдения за сводками результатов по всем компонентам прошивки.
  • Выделение релевантных результатов анализа в виде тегов в верхней части каждой страницы.
  • Различные варианты загрузки прошивки и компонентов для перехода к углубленному анализу.

Хотя FACT поддерживается как исследовательский прототип, проект хорошо протестирован, включает базовую документацию и предлагает множество функций уровня производства. Мы всегда рады обратной связи и предложениям по улучшению.

Более подробную информацию и несколько скриншотов можно найти на нашей странице проекта.

Установка

Требования

FACT разработан как многопроцессное приложение: чем больше ядер и оперативной памяти, тем лучше.

Минимальные Рекомендуемые
4 ядра 16 ядер
8 ГБ ОЗУ 64 ГБ ОЗУ
10 ГБ дискового пространства 10* ГБ дискового пространства

[!NOTE] Для установки кода FACT, контейнеров и исполняемых файлов требуется около 10 ГБ. Дополнительное пространство необходимо для хранения распакованных файлов и результатов анализа. Это может быть на отдельном разделе или диске.

Локальная установка

В принципе, FACT можно установить на любом дистрибутиве Linux, но установщик ограничен

  • Debian 12/13 или совместимый (стабильный)
  • Ubuntu 22.04/24.04/26.04 или совместимый (стабильный)
  • Kali (экспериментальный)

Установка на более старых дистрибутивах (например, Debian 11 "Bullseye" или Ubuntu 20.04 "Focal") все еще может работать, но не считается стабильной, поскольку эти дистрибутивы достигли конца поддержки.

FACT требует Python 3.10–3.14 (должен быть по умолчанию во всех поддерживаемых дистрибутивах)

Процесс установки в основном автоматизирован и обернут в один скрипт. Однако некоторые функции можно выбрать отдельно. Для подробного руководства по установке FACT см. INSTALL.md.

[!IMPORTANT] Обратите внимание, что хотя FACT широко использует контейнеры, он все еще содержит множество зависимостей (и не предоставляет функцию удаления). Если вы хотите сохранить вашу систему чистой, вы можете попробовать один из вариантов установки, предложенных ниже.

Vagrant

Мы предоставляем ежемесячные готовые к использованию vagrant-боксы с нашей ветки master. Vagrant — это простой и удобный способ начать работу с FACT без необходимости устанавливать его на вашей машине. Просто настройте vagrant и импортируйте наш предоставленный бокс в VirtualBox. Наши боксы можно найти на сайте vagrantup!

Ознакомьтесь с тем, как начать работу с FACT и vagrant в нашем руководстве.

Docker

Также существует версия в контейнерах Docker, но в настоящее время она не поддерживается. (см. репозиторий FACT_docker для получения дополнительной информации).

Использование

Вы можете запустить FACT, выполнив скрипт start_fact.py. Скрипт автоматически обнаруживает все установленные компоненты.

src/start_fact.py

После этого FACT становится доступен по адресу http://localhost:5000 (по умолчанию) или https://localhost (если FACT установлен с nginx).

Вы можете выключить систему, нажав Ctrl + c или отправив SIGTERM скрипту start_fact.py.

[!CAUTION] FACT не предназначен для использования в качестве публичной интернет-службы. Веб-интерфейс не является защищенным приложением. Мы стараемся минимизировать проблемы с безопасностью, применяя SecDevOps, но FACT все еще может содержать уязвимости. Обязательно сбросьте все пароли в конфигурации fact, если планируете размещать FACT на не полностью доверенных сетях.

Документация

[!TIP] Более подробную документацию по использованию FACT можно найти на наших страницах wiki.

Вы также можете ознакомиться с нашей документацией Sphinx.

Информация о том, что такое FACT и как он работает, также доступна в презентациях в папке docs.

REST API

FACT предоставляет REST API. Более подробную информацию можно найти на странице wiki.

Управление пользователями

FACT предоставляет опциональную базовую аутентификацию, управление ролями и пользователями. Более подробную информацию можно найти на странице wiki.

Участие в проекте

Простейший способ внести вклад — написать собственный плагин. Наше Руководство разработчика можно найти на wiki в GitHub.

Дополнительные плагины

В настоящее время доступные дополнительные плагины:

  • Codescanner (:warning: другая лицензия)
    • Классификация сегментов (например, ascii / код / высокая энтропия) в произвольных бинарных файлах
    • Классификация архитектуры процессора в сегментах кода

Импорт/экспорт анализа

Скрипт src/firmware_import_export.py может использоваться для экспорта распакованных файлов и результатов анализа и их импорта в другой экземпляр FACT. Данные хранятся как ZIP-архив, и это также формат, который скрипт ожидает при импорте. Для экспорта файлов и данных анализа проанализированных образов прошивок выполните

python3 firmware_import_export.py export FW_UID [FW_UID_2 ...] [-o OUTPUT_DIR]

[!NOTE] Экспортируемые архивы могут занимать значительное место на диске. Нет фиксированной зависимости, но их размер может превышать размер исходной прошивки в 2–10 раз.

После этого вы можете импортировать экспортированные файлы с помощью

python3 firmware_import_export.py import FW.zip [FW_2.zip ...]

Презентации

BlackHat Arsenal

Мы рады были представить FACT на нескольких сессиях BlackHat Arsenal.

  • Black Hat Arsenal
  • Black Hat Arsenal
  • Black Hat Arsenal
  • Black Hat Arsenal
  • Black Hat Arsenal

Прочее

Социальные сети

Благодарности

Благодарим @botlabsDev, который первоначально предоставил Vagrantfile, который сейчас, однако, устарел.

Данный проект частично финансируется Федеральным ведомством по информационной безопасности Германии (BSI) и другими организациями.

Лицензия

Firmware Analysis and Comparison Tool (FACT)

Авторское право (C) 2015-2026 Fraunhofer FKIE

Данная программа является свободным программным обеспечением. Вы можете распространять её и/или изменять в соответствии с условиями GNU General Public License, опубликованной Free Software Foundation, либо версии 3 Лицензии, либо (по вашему выбору) любой более поздней версии. Данная программа распространяется в надежде, что она будет полезна, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без неявной гарантии ТОВАРНОГО ВИДА или ПРИГОДНОС ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ.
Подробности см. в GNU General Public License. Вы должны получить копию GNU General Public License вместе с этой программой. Если её нет, см. http://www.gnu.org/licenses/.

Некоторые плагины могут иметь другие лицензии. В таком случае файл лицензии предоставляется в папке плагина.

Комментарии
Войдите, чтобы оставить комментарий