fkie-cad/FACT_core

GitHub: fkie-cad/FACT_core

FACT 是一款企业级固件分析与比对平台,通过自动化解包、组件识别和漏洞扫描,帮助安全研究人员快速理解黑盒固件的结构与安全风险。

Stars: 1423 | Forks: 242

FACT logo with magnifying glass as the C
The Firmware Analysis and Comparison Tool (FACT)

[![codecov](https://codecov.io/gh/fkie-cad/FACT_core/branch/master/graph/badge.svg)](https://codecov.io/gh/fkie-cad/FACT_core) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/d3910401cb58498a8c2d00be80092080)](https://www.codacy.com/gh/fkie-cad/FACT_core/dashboard?utm_source=github.com&utm_medium=referral&utm_content=fkie-cad/FACT_core&utm_campaign=Badge_Grade) [![Gitter chat](https://badges.gitter.im/gitterHQ/gitter.png)](https://gitter.im/FACT_core/community) [![CI Build](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/2c81714eb8230352.svg)](https://github.com/fkie-cad/FACT_core/actions/workflows/build_ci.yml) [![Ruff](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/7872420de8230353.svg)](https://github.com/fkie-cad/FACT_core/actions/workflows/ruff.yml) [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
## 目录 - [为什么选择 FACT?](#why-fact) - [安装设置](#setup) - [使用方法](#usage) - [文档](#documentation) - [贡献](#contributing) - [附加插件](#additional-plugins) - [分析导入/导出](#analysis-import--export) - [演示](#presentations) - [社交](#social) - [致谢](#acknowledgments) - [许可证](#license) ## 为什么选择 FACT? 固件分析可用于实现多个有趣的目标。 其中最主要的是在黑盒固件中识别功能、组件和潜在的安全漏洞。 固件分析与比较工具 (FACT) 旨在尽可能多地自动化手动固件分析工作。 FACT 结合了一系列不断增长的功能强大的分析工具,创建了一个统一的界面,引导用户从任意固件样本开始,直到完成分析。 FACT 分析的一些关键特性在于,其结果是 - 可浏览 - 可搜索 - 且可比较。 此外,FACT 提供了多种方式来导航和可视化分析结果及固件内容,以实现便捷的访问。 FACT 的主界面是一个基于 HTML/JS/CSS 的 Web 界面,可以在本地托管或通过网络共享。 此外,FACT 还提供了一个 REST 风格的 HTTP API,可以通过集成的 SwaggerUI 进行探索。 Web 界面的一些关键特性包括: - 通过所有固件组件的文件树渲染,轻松实现固件可视化。 - 通过观察所有固件组件的结果摘要,快速导航分析结果。 - 在每个页面顶部以标签形式高亮显示相关的分析结果。 - 提供多种固件和组件下载选项,以便进行深入分析。 虽然 FACT 是作为研究原型进行维护的,但该项目经过了充分测试,包含基准文档,并提供多种生产级功能。 我们始终期待您的反馈和功能请求。 更多详细信息和部分截图可以在我们的[项目页面](https://fkie-cad.github.io/FACT_core/)上找到。 ## 安装设置 ### 系统要求 FACT 被设计为多进程应用程序,核心 (Cores) 和 RAM 越多越好。 | 最低配置 | 推荐配置 | |------------------|--------------------| | 4 核心 | 16 核心 | | 8 GB RAM | 64 GB RAM | | 10 GB 磁盘空间 | 10* GB 磁盘空间 | ### 本地安装 原则上可以在任何 Linux 发行版上安装 FACT,但安装程序仅限于 - Debian 12 (稳定版) - Ubuntu 22.04/24.04 (稳定版) - Linux Mint 21/22 (稳定版) - Kali (实验性) 在较旧的发行版(例如 Debian 11 "Bullseye" 或 Ubuntu 20.04 "Focal")上安装可能仍然可行,但不被视为稳定版,因为这些发行版已达到生命周期终点。 FACT 需要 Python 3.10–3.12(应为所有受支持发行版中的默认版本) 安装过程大部分是自动化的,并封装在单个脚本中。 不过,某些功能可以专门选择。 有关如何安装 FACT 的详细指南,请参阅 [INSTALL.md](https://github.com/fkie-cad/FACT_core/blob/master/INSTALL.md)。 ### Vagrant 我们每月提供 master 分支的现成 Vagrant box。 [Vagrant](https://www.vagrantup.com/) 是开始使用 FACT 的一种简单便捷的方式,无需在您的计算机上安装它。 只需设置 Vagrant 并将我们提供的 box 导入 VirtualBox。 我们的 box 可以在[这里](https://app.vagrantup.com/fact-cad/boxes/FACT-master)找到! 请参阅我们的[教程](https://github.com/fkie-cad/FACT_core/blob/master/INSTALL.vagrant.md),了解如何开始使用 FACT 和 Vagrant。 ### Docker 还有一个 Docker 化的版本,但目前处于无人维护状态。 (有关更多信息,请参阅 [FACT_docker](https://github.com/fkie-cad/FACT_docker) 仓库)。 ## 使用方法 您可以通过执行 `start_fact.py` 脚本来启动 FACT。 该脚本会自动检测所有已安装的组件。 ``` src/start_fact.py ``` 之后,可以通过 (默认)或 (如果 FACT 安装了 nginx)访问 FACT。 您可以通过按 Ctrl + c 或向 `start_fact.py` 脚本发送 SIGTERM 信号来关闭系统。 ## 文档 我们的 Sphinx 文档可以在[这里](https://fkie-cad.github.io/FACT_core/)找到。 关于 FACT 是什么及其工作原理的信息也可以在 [`docs` 文件夹](https://github.com/fkie-cad/FACT_core/tree/master/docs)的幻灯片中找到。 ### REST API FACT 提供 REST API。更多信息可以在[这里](https://github.com/fkie-cad/FACT_core/wiki/Rest-API)找到。 ### 用户管理 FACT 提供可选的基本身份验证、角色和用户管理。 更多信息可以在[这里](https://github.com/fkie-cad/FACT_core/wiki/Authentication)找到。 ## 贡献 最简单的贡献方式是编写您自己的插件。 我们的开发者手册可以在[这里](https://github.com/fkie-cad/FACT_core/wiki/)找到。 ## 附加插件 当前可用的附加插件: - [Codescanner](https://github.com/fkie-cad/Codescanner_FACT_plugin) (:warning: 许可证不同) - 任意二进制文件中段(segment)的分类(例如 ascii / code / 高熵) - 代码段中 CPU 架构的分类 ## 分析导入 / 导出 脚本 `src/firmware_import_export.py` 可用于导出解压后的文件和分析结果,并将其导入另一个 FACT 实例。 数据存储为 ZIP 存档,这也是脚本在导入期间所期望的格式。 要导出已分析固件镜像的文件和分析数据,请运行 ``` python3 firmware_import_export.py export FW_UID [FW_UID_2 ...] [-o OUTPUT_DIR] ``` 之后,您可以使用以下命令导入导出的文件 ``` python3 firmware_import_export.py import FW.zip [FW_2.zip ...] ``` ## 演示 ### BlackHat Arsenal 我们很高兴在多次 BlackHat Arsenal 会议中展示了 FACT。 - [![Black Hat Arsenal](https://github.com/toolswatch/badges/blob/master/arsenal/asia/2018.svg)](http://www.toolswatch.org/2018/01/black-hat-arsenal-asia-2018-great-lineup/) - [![Black Hat Arsenal](https://github.com/toolswatch/badges/blob/master/arsenal/europe/2018.svg)](http://www.toolswatch.org/2018/09/black-hat-arsenal-europe-2018-lineup-announced/) - [![Black Hat Arsenal](https://github.com/toolswatch/badges/blob/master/arsenal/usa/2019.svg)](http://www.toolswatch.org/2019/05/amazing-black-hat-arsenal-usa-2019-lineup-announced/) - [![Black Hat Arsenal](https://github.com/toolswatch/badges/blob/master/arsenal/europe/2019.svg)](https://www.blackhat.com/eu-19/arsenal/schedule/#fact--firmware-analysis-and-comparison-tool-18179) - [![Black Hat Arsenal](https://github.com/toolswatch/badges/blob/master/arsenal/usa/2022.svg)](https://www.blackhat.com/us-22/arsenal/schedule/#fact--26776) ### 其他 - [Hardwear.io 2017](https://hardwear.io/the-hague-2017/speakers/johannes-vom-dorp.php) / [幻灯片](https://hardwear.io/document/hio.pdf) - [Pass the salt 2019](https://2019.pass-the-salt.org/talks/71.html) / [幻灯片](https://2019.pass-the-salt.org/files/slides/04-FACT.pdf) / [视频](https://passthesalt.ubicast.tv/videos/improving-your-firmware-security-analysis-process-with-fact/) - [Hardwear.io 2019](https://hardwear.io/netherlands-2019/speakers/johannes-vom-dorp-and-peter-weidenbach.php) ## 社交 - [Twitter](https://twitter.com/FAandCTool) - [Gitter](https://app.gitter.im/?updated=1.11.30#/room/#FACT_core_community:gitter.im) ## 致谢 感谢 @botlabsDev,他最初提供了 [Vagrantfile](https://github.com/botlabsDev/FACTbox),但该文件现已 弃用。 本项目部分由 [德国联邦信息安全办公室 (BSI)](https://www.bsi.bund.de) 及其他机构资助。 ## 许可证
标签:CVE, DNS 反向解析, FACT, IoT安全, Python, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 代码比对, 固件分析, 固件安全, 固件解包, 域名收集, 嵌入式系统, 开源安全工具, 数字签名, 文档安全, 无后门, 网络安全, 网络测绘, 请求拦截, 调试插件, 逆向工具, 逆向工程, 逆向工程平台, 隐私保护, 静态分析, 黑盒测试