ainfosec/FISSURE
GitHub: ainfosec/FISSURE
FISSURE 是一个开源的 RF 信号理解与逆向工程框架,旨在简化 SDR 工作流并支持操作部署、研究与教育。
Stars: 2001 | Forks: 132
# FISSURE - RF 框架
**与频率无关的基于 SDR 的信号理解与逆向工程**
## 概述视频
## 简介
FISSURE 是一个**开源 RF 框架**,支持**实际部署**以及**研究与教育**。
- 对于**操作人员**,它提供了一个可快速部署的工具包,用于信号检测、分类、协议发现、fuzzing、漏洞分析以及与 TAK 的实时集成。
- 对于**教育工作者和研究人员**,它降低了进入 SDR 和逆向工程领域的门槛,为学习、实验和发布新方法提供了一个共享环境。
FISSURE 将软件、库和参考资料集中到一个一致的框架中,从而简化了复杂的 SDR 工作流。该框架可以运行在台式机、笔记本电脑、单板计算机和加固系统上,也可以扩展到在现场组网的分布式战术节点。
## 硬件
以下是具有不同集成程度的“受支持”硬件列表:
- USRP:X3xx、B2xx、B20xmini、USRP2、N2xx、X410
- HackRF
- RTL2832U
- 802.11 适配器
- LimeSDR
- bladeRF、bladeRF 2.0 micro
- Open Sniffer
- PlutoSDR
- SDRplay:RSPduo、RSPdx、RSPdx R2
## 入门指南
**受支持**
FISSURE 中现在有两个分支:Python3 分支和 Python2_maint-3.7 分支。Python3 分支包含最新的代码,并支持 PyQt5 以及 3.8 和 3.10 版本的 GNU Radio。Python2_maint-3.7 分支已被弃用,仅在特定的第三方工具需要 GNU Radio 3.7 版本或更旧的操作系统时才会更新。只有操作系统的最新次要版本会受到安装支持,我们将尽最大努力跟进。已经更新但尚未经过全面测试的操作系统将被列在“进行中”下。
本仓库中提供的 GitHub releases 是项目状态的定期快照,主要用于存档目的。这些版本可能不包含最新的更新、错误修复或正在开发的功能。为了访问该软件的最新版本,我们强烈建议使用 Python3 主分支,它反映了正在进行的开发和项目的当前状态。
FISSURE 在 Ubuntu 上经过了最广泛的测试,使其成为经过最充分验证的平台。
操作系统 | FISSURE 分支 | 默认 GNU Radio 版本
:-------------------------:|:-------------------------:|:-------------------------:
| DragonOS Noble (24.04) | Python3 | maint-3.10 |
| Kali | Python3 | maint-3.10 |
| Raspberry Pi OS | Python3 | maint-3.10 |
| Ubuntu 18.04 | Python2_maint-3.7 | maint-3.7 |
| Ubuntu 20.04 | Python3 | maint-3.8 |
| Ubuntu 22.04 | Python3 | maint-3.10 |
| Ubuntu 22.04 | Python3 | maint-3.10 |
| Ubuntu 24.04 / Ubuntu ARM (Orange Pi) / Ubuntu for Raspberry Pi | Python3 | maint-3.10 |
| Windows 11 WSL2 | 参见受支持的 Linux 版本 | 参见受支持的 Linux 版本 |
**进行中 (beta)**
这些操作系统仍处于 beta 状态。它们正在开发中,已知缺少某些功能。在移除该状态之前,安装程序中的项目可能会与现有程序发生冲突或安装失败。
操作系统 | FISSURE 分 | 默认 GNU Radio 版本
:-------------------------:|:-------------------------:|:-------------------------:
| BackBox Linux | Python3 | maint-3.10 |
| KDE neon | Python3 | maint-3.10 |
| Parrot Security 6.1 | Python3 | maint-3.10 |
注意:某些软件工具并非适用于所有操作系统。请参阅[已知冲突与第三方软件](https://fissure.readthedocs.io/en/latest/pages/installation.html#known-conflicts)
**Apptainer 安装**
正在使用 apptainer 进行测试,以容器化 FISSURE 的安装。宿主机操作系统、容器操作系统以及 FISSURE 安装模式(full、base、Dashboard、HIPRFISR、SensorNode)的组合仍在不断推进中。以下是受支持的组合。
宿主机操作系统 | 容器操作系统 | FISSURE 模式
:-------------------------:|:-------------------------:|:-------------------------:
| Ubuntu 24.04 | Ubuntu 24.04 | full |
**安装说明**
用于添加 SSH 密钥到 GitHub 并通过 SSH 克隆(为做贡献所需):
```
ssh-keygen -t ed25519
cat ~/.ssh/id_ed25519.pub
Paste text into "Settings" > "SSH and GPG keys" > "New SSH Key"
git clone git@github.com:ainfosec/FISSURE.git
```
通过 https 克隆:
```
git clone https://github.com/ainfosec/FISSURE.git
```
准备安装程序:
```
cd FISSURE
git checkout Python3 # Optional, or Python2_maint-3.7 for select legacy third-party tools
./install
```
注意:
- 如果未找到,安装程序将提示安装启动安装 GUI 所需的 PyQt 软件依赖项。
- 在 GUI 中选择最匹配您操作系统的操作选项(如果您的操作系统与某个选项匹配,应能被自动检测到)。
- 在整个安装过程中,定期回答关于第三方软件的提示。运用您最佳的判断力,这些答案通常不太可能影响 FISSURE。
- 确保您的系统时钟设置正确,以避免出现 apt 拒绝存储库更新的错误。
- 安装完成后,请重新启动计算机或注销并重新登录,以使用户组更改生效。
sudo pkill python3 && sudo pkill -9 -f fissure
```
**无头 Hub**
无需 Dashboard GUI 即可启动 HIPRFISR,从而使 TAK 测试和操作部署更加高效。安装后打开一个新的终端并输入:
```
fissure-hiprfisr
```
该 hub 将自动连接到 TAK 服务器,远程节点也将能够无需交互即可加入。
**远程传感器节点用法**
配置传感器节点配置文件(见上文)后,可以在终端中使用此命令运行传感器节点代码:
```
fissure-sensor-node
```
传感器节点代码将保持活动状态,直到应用 ctrl+c。通过 FISSURE Dashboard 顶部的按钮执行连接到远程传感器节点的操作。右键单击顶部按钮将选择一个活动传感器节点来执行操作。未来一次利用多个节点的操作将根据具体情况在各个选项卡中处理。
**Windows 11 WSL2 指南**
FISSURE 可以在 Windows 11 中使用 WSL2 运行受支持的 Linux 操作系统。以下是帮助安装 WSL2、安装 Linux 操作系统、设置 USB 直通以及在该 Linux 操作系统中安装 FISSURE 的说明。
安装 WSL2:
1. 以管理员身份打开 PowerShell
2. `wsl --install`
3. 在 BIOS 中启用虚拟化,使用以下方法检查:任务管理器>性能>CPU>虚拟化
4. `wsl --set-default-version 2`
5. `wsl --list --online`
6. 安装特定版本(普通的 Ubuntu 应为列出的最新版本):`wsl --install -d Ubuntu-22.04`
7. 打开“开始”菜单,搜索 Ubuntu 并启动它
8. 卸载某个发行版:`wsl --unregister Ubuntu-22.04`
在以管理员身份运行的 PowerShell 中启用 USB 直通:
1. `winget install usbipd`
2. 将 usbipd 添加到系统 PATH:开始菜单>环境变量>编辑系统环境变量>系统属性>环境变量>系统变量>Path>编辑>新建:`C:\Program Files\usbipd-win`
3. 关闭并以管理员身份重新打开 PowerShell
4. `usbipd wsl list`
5. `usbipd wsl attach --busid ` 或 `usbipd wsl attach --busid --wsl `(将 替换为设备的实际 BUS ID)
6. 分离:`usbipd wsl detach --busid `
在 Linux 终端中安装 FISSURE:
1. `sudo apt-get install git`
2. 克隆 FISSURE 并如上所述进行安装
**TAK 设置**
要安装并运行本地 TAK 服务器:
1. 从网站注册并下载 TAK 服务器 docker zip 文件:https://tak.gov/products/tak-server
2. 如果 `~/Installed_by_FISSURE` 目录不存在,请创建它
3. 将下载的 .zip 文件放入 `~/Installed_by_FISSURE`
4. 运行 FISSURE 安装程序中的 TAK Server 项目
5. 对于本地 WebTAK,将 `~/Installed_by_FISSURE/taskerver-docker-#.#-RELEASE-##/tak/certs/files/webadmin.p12` 文件加载到您的浏览器中(设置>证书)
6. 在 `/FISSURE/YAML/User Configs/default.yaml` 中将“tak_on_startup”字段设置为 True,或者从 FISSURE Dashboard TAK 菜单中选择“Start Docker Containers”
7. 从 FISSURE TAK 菜单打开 WebTAK,并验证互联网连接下是否能加载地图
8. 设置 `/FISSURE/YAML/User Configs/default.yaml` 中的“connect_mode”(auto/manual/disabled)字段。如果设置为 manual,请在 FISSURE Dashboard TAK 菜单中连接到 TAK 服务器。
9. 运行一个创建 TAK 警报的 FISSURE 效果(示例即将推出)
要连接到远程 TAK 服务器:
1. 更新 `/FISSURE/YAML/User Configs/default.yaml` 中的证书文件路径
2. 设置 `/FISSURE/YAML/User Configs/default.yaml` 中的“connect_mode”(auto/manual/disabled)字段。如果设置为 manual,请在 FISSURE Dashboard TAK 菜单中连接到 TAK 服务器。
3. 运行一个创建 TAK 警报的 FISSURE 效果(示例即将推出)
**Apptainer 设置**
Apptainer 用于容器化大部分 FISSURE 安装,从而简化了跨不同系统的部署和测试。虽然 FISSURE 的大部分功能都在 Apptainer 环境中运行,但仍有几个组件需要在**宿主机**上进行设置:
- **Docker 容器**(如 PostgreSQL 数据库和 TAK Server)运行在**宿主机**上,而不是 Apptainer 内部。
- **udev 规则、USB 驱动程序和硬件接口**也必须安装在宿主机上,以便 SDR、Wi-Fi 适配器和其他外围设备能够正常运行。
未来版本计划提供预构建的 Apptainer 容器和 ISO 镜像以简化设置。这些说明适用于想要**从源代码构建 Apptainer 容器**或自定义其安装的用户。
1. **克隆 FISSURE 仓库**
2. **配置安装程序**
- 在文本编辑器中打开 `FISSURE/install_apptainer.sh`。
- 检查并调整靠近脚本顶部的变量。
根据您想要包含的内容(例如 `UHD`、`HackRF`、`Wi-Fi` 等)设置每个选项(`true` / `false`)。
- 选择所需的 FISSURE 安装模式:
- `full` - 包括所有 SDR 软件、网络工具和实用程序
- `base` - 仅包含核心 FISSURE + GUI 依赖项(用于加速未来的容器构建)
- `Dashboard` - 仅包含 GUI 的容器(不含 SDR 工具)
- `HIPRFISR` - 无头 HIPRFISR 服务器构建
- `SensorNode` - 仅构建传感器节点
3. **运行安装程序**
cd FISSURE/Installer
./install_apptainer.sh
这将在您的主目录中构建一个可写的 **Apptainer sandbox**,并将所有选定的软件安装在容器内和宿主机上(如果适用)。
4. **启动容器**
fissure-apptainer
此命令将在 FISSURE 容器内打开一个终端,自动绑定 **USB 端口、音频设备和图形界面**,以供硬件和 GUI 访问。
5. **运行 FISSURE**
进入容器后,就像在普通系统上一样运行 FISSURE:
fissure
fissure-sensor-node
该环境的行为类似于标准安装,但与宿主机的隔离程度更高。如果您在 Apptainer 中使用 FISSURE 时遇到问题,请告诉我们哪些程序、硬件或功能无法正常工作。
## 课程
FISSURE 附带了几份有用的指南,可帮助您熟悉不同的技术和方法。其中许多包含了使用集成到 FISSURE 中的各种工具的步骤。我们的目标是随着时间推移提高质量并增加新内容。
- [课程 1:OpenBTS](/docs/Lessons/Markdown/Lesson1_OpenBTS.md)
- [课程 2:Lua Dissectors](/docs/Lessons/Markdown/Lesson2_LuaDissectors.md)
- [课程 3:Sound eXchange](/docs/Lessons/Markdown/Lesson3_Sound_eXchange.md)
- [课程 4:ESP Boards](/docs/Lessons/Markdown/Lesson4_ESP_Boards.md)
- [课程 5:Radiosonde Tracking](/docs/Lessons/Markdown/Lesson5_Radiosonde_Tracking.md)
- [课程 6:RFID](/docs/Lessons/Markdown/Lesson6_RFID.md)
- [课程 7:Data Types](/docs/Lessons/Markdown/Lesson7_Data_Types.md)
- [课程 8:Custom GNU Radio Blocks](/docs/Lessons/Markdown/Lesson8_Custom_GNU_Radio_Blocks.md)
- [课程 9:TPMS](/docs/Lessons/Markdown/Lesson9_TPMS.md)
- [课程 10:Ham Radio Exams](/docs/Lessons/Markdown/Lesson10_Ham_Radio_Exams.md)
- [课程 11:Wi-Fi Tools](/docs/Lessons/Markdown/Lesson11_WiFi_Tools.md)
- [课程 12:Creating Bootable USBs](/docs/Lessons/Markdown/Lesson12_Creating_Bootable_USBs.md)
- [课程 13:Z-Wave](/docs/Lessons/Markdown/Lesson13_Z-Wave.md)
- [课程 14:Ceiling](/docs/Lessons/Markdown/Lesson14_Ceiling_Fans.md)
## FISSURE 挑战赛 - 持续的 Capture the Flag
**FISSURE 挑战赛**是一项围绕 FISSURE 框架构建的持续性 Capture the Flag 竞赛。它被设计为一个开放的学习工具,任何人都可以在这里练习 RF 逆向工程、探索新功能并应对以协议为中心的挑战。
- 随着 FISSURE 的发展,会随着时间的推移添加新的挑战。
- 解决方案和演练会定期发布在 YouTube 上。[解决方案 1](https://www.youtube.com/watch?v=jYtqWwG_-kI)
- 我们鼓励社区成员**提交他们自己的挑战**供他人解决。
访问挑战:[FISSURE 挑战赛](https://fissure.ainfosec.com/)
## 贡献
强烈鼓励提出改进 FISSURE 的建议。良好的贡献领域包括新功能、安装修复、RF 协议、硬件/SDR 支持、第三方工具、GNU Radio 流图、Python 分析脚本、插件 action、课程、教程和文档更正。
最好的起点是[讨论](https://github.com/ainfosec/FISSURE/discussions)页面、Discord 服务器、电子邮件或一个重点突出的 [Issue](https://github.com/ainfosec/FISSURE/issues)。
非常感谢您对代码的贡献:
1. Fork 该项目
2. 创建您的功能分支 (`git checkout -b feature/AmazingFeature`)
3. 提交您的更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到该分支 (`git push origin feature/AmazingFeature`)
5. 打开一个 pull request
需要更具体的想法?查看我们的路线图和正在进行的潜在[待办事项](./TODO.md)列表。
### 学生项目与课堂使用
FISSURE 非常适合毕业设计、本科生研究、研究生研究、RF/网络安全课程和开源软件作业。学生团队可以从事 SDR 硬件集成、RF 协议分析、信号检测、IQ 分析、插件、课程、可视化、TAK 集成或文档编写工作。
我们鼓励有意将 FISSURE 用于实际 RF 和逆向工程项目的学生、教师、研究小组和组织与我们取得联系。
## 商业支持与合作
联系 Assured Information Security, Inc. (AIS) 业务开发部门,讨论 FISSURE 和 Fracture 的合作机会。AIS 可以协助将 FISSURE 集成到现有的平台和工作流中,开发自定义插件和功能,扩展对新硬件和传感器的支持,以及构建针对特定任务的 RF 解决方案。
对可部署的 Fracture 系统感兴趣的组织可以聘请 AIS 来开发和集成适用于固定站点、车载、单兵携带、sUAS 和固定翼应用的战术节点配置。AIS 还可以支持 TAK 集成、分布式传感器架构、RF 传感和地理定位工作流、自定义电子战能力、操作员培训以及长期的系统维护。
无论您的目标是研究、教育、原型设计、操作部署,还是集成到更大的系统之系统架构中,AIS 都能帮助加速开发和部署,同时保留底层 FISSURE 框架的灵活性。
## 许可证
GPL-3.0
有关许可证详细信息,请参阅 LICENSE 文件。
## 联系方式
加入 Discord 服务器:[https://discord.gg/JZDs5sgxcG](https://discord.gg/JZDs5sgxcG)
在 Twitter/X 上关注:[@FissureRF](https://twitter.com/fissurerf),[@AinfoSec](https://twitter.com/ainfosec)
在 Bluesky 上关注:[@fissurerf.bsky.social](https://bsky.app/profile/fissurerf.bsky.social)
在 LinkedIn 上联系:[FISSURE - RF 框架](https://www.linkedin.com/company/fissure-the-rf-framework)
Chris Poore - Assured Information Security, Inc. - poorec@ainfosec.com
业务开发 - Assured Information Security, Inc. - bd@ainfosec.com
## 评价
## 致谢
特别感谢 Samuel Mantravadi 博士和 Joseph Reith 对本项目的贡献。
## Assured Information Security
在以下网址查看我们的其他开源项目:https://ainfosec.dev/
喜欢研究信号、逆向工程或网络安全的其他领域吗?浏览我们的[当前职位空缺](https://recruiting.paylocity.com/recruiting/jobs/All/4cc515ee-a8ad-4e3a-ac7d-c105c5d24074/ASSURED-INFORMATION-SECURITY-INC)或加入我们的[人才社区](https://recruiting.paylocity.com/Recruiting/PublicLeads/New/4cc515ee-a8ad-4e3a-ac7d-c105c5d24074) 以供未来考虑。
如果您对黑客技术感兴趣,请查看我们的 [Can You Hack It?®](https://www.canyouhackit.com) 挑战并测试您的技能!提交您的分数向我们展示您的实力。AIS 的业务遍布全美,在美国各地设有办事处和远程员工。我们提供具有竞争力的薪酬和出色的福利。加入一支不仅致力于网络空间的未来,而且致力于我们员工成功的团队吧。
FISSURE Operational Overview |
FISSURE Overview (Slides) |
标签:TAK集成, 云资产清单, 信号处理, 无线电安全, 漏洞分析, 请求拦截, 路径探测, 软件无线电, 逆向工具, 逆向工程, 防御绕过