ainfosec/FISSURE
GitHub: ainfosec/FISSURE
Stars: 1967 | Forks: 126
# FISSURE - The RF Framework
**Frequency Independent SDR-based Signal Understanding and Reverse Engineering**
## Overview Videos
## Introduction
FISSURE is an **open-source RF framework** that supports both **operational deployments** and **research and education**.
- For **operators**, it provides a rapidly deployable toolkit for signal detection, classification, protocol discovery, fuzzing, vulnerability analysis, and real-time integration with TAK.
- For **educators and researchers**, it lowers the barrier to entry for SDR and reverse engineering, offering a shared environment for learning, experimentation, and publishing new methods.
FISSURE streamlines complex SDR workflows by centralizing software, libraries, and reference material into one consistent framework that runs on desktops, laptops, single-board computers, and ruggedized systems, or scales to distributed tactical nodes networked in the field.
## Hardware
The following is a list of "supported" hardware with varying levels of integration:
- USRP: X3xx, B2xx, B20xmini, USRP2, N2xx, X410
- HackRF
- RTL2832U
- 802.11 Adapters
- LimeSDR
- bladeRF, bladeRF 2.0 micro
- Open Sniffer
- PlutoSDR
- SDRplay: RSPduo, RSPdx, RSPdx R2
## Getting Started
**Supported**
The GitHub releases provided in this repository are periodic snapshots of the project's state, intended primarily for archival purposes. These releases may not include the latest updates, bug fixes, or features currently under development. To access the most up-to-date version of the software, we strongly recommend using the main Python3 branch, which reflects ongoing development and the current state of the project.
FISSURE is most extensively tested on Ubuntu, making it the most validated platform.
Operating System | FISSURE Branch | Default GNU Radio Version
:-------------------------:|:-------------------------:|:-------------------------:
| 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 | See Supported Linux Version | See Supported Linux Version |
**In-Progress (beta)**
These operating systems are still in beta status. They are under development and several features are known to be missing. Items in the installer might conflict with existing programs or fail to install until the status is removed.
Operating System | FISSURE Branch | Default GNU Radio Version
:-------------------------:|:-------------------------:|:-------------------------:
| BackBox Linux | Python3 | maint-3.10 |
| KDE neon | Python3 | maint-3.10 |
| Parrot Security 6.1 | Python3 | maint-3.10 |
Note: Certain software tools do not work for every OS. Refer to [Known Conflicts and Third-Party Software](https://fissure.readthedocs.io/en/latest/pages/installation.html#known-conflicts)
**Apptainer Installs**
Testing is underway with apptainer to containerize FISSURE installs. Combinations of host OS, container OS, and FISSURE install mode (full, base, Dashboard, HIPRFISR, SensorNode) are still in progress. The following are supported combinations.
Host Operating System | Container Operating System | FISSURE Mode
:-------------------------:|:-------------------------:|:-------------------------:
| Ubuntu 24.04 | Ubuntu 24.04 | full |
**Installation**
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
For cloning with https:
git clone https://github.com/ainfosec/FISSURE.git
Preparing the installer:
cd FISSURE
git checkout Python3 # Optional, or Python2_maint-3.7 for select legacy third-party tools
./install
Notes:
- The installer will ask to install PyQt software dependencies required to launch the installation GUIs if they are not found.
- Select the operating option in the GUI that best matches your operating system (should be detected automatically if your OS matches an option).
- Periodically answer prompts regarding third-party software throughout the install. Use your best judgment, the answers will not likely impact FISSURE.
- Ensure your system clock is set correctly to avoid errors with apt rejecting repository updates.
- After installation, reboot your computer or log out and back in so that user group changes take effect.
sudo pkill python3 && sudo pkill -9 -f fissure
**Headless Hub**
The HIPRFISR can be launched without the Dashboard GUI to make TAK testing and operational deployments more efficient. Set the `auto_connect_hiprfisr` value to false in the FISSURE `config.yaml` file and open a new terminal after installation and enter:
fissure-hiprfisr
The hub will automatically connect up to the TAK server and remote nodes will be able to join without interaction.
**Remote Sensor Node Usage**
After configuring the sensor node config file (see above), the sensor node code can be run using this command in a terminal:
fissure-sensor-node
The sensor node code will stay active until ctrl+c is applied. Connecting to the remote sensor node is performed through the top buttons of the FISSURE Dashboard. Right-clicking the top buttons will select an active sensor node to perform operations. Future operations that utilize more than one node at a time will be handled on a case-by-case basis within the individual tabs.
**Windows 11 WSL2 Instructions**
FISSURE can run in Windows 11 using WSL2 for supported Linux operating systems. The following are instructions to help install WSL2, install a Linux operating system, set up USB passthrough, and install FISSURE in the Linux operating system.
Install WSL2:
1. Open PowerShell as Administrator
2. `wsl --install`
3. Enable Virtualization in BIOS, check using: Task Manager>Performance>CPU>Virtualization
4. `wsl --set-default-version 2`
5. `wsl --list --online`
6. Install a specific version (plain Ubuntu should be the latest version listed): `wsl --install -d Ubuntu-22.04`
7. Open the Start Menu, search for Ubuntu and launch it
8. To uninstall a distribution: `wsl --unregister Ubuntu-22.04`
Enable USB passthrough in a PowerShell as Administrator:
1. `winget install usbipd`
2. Add usbipd to System PATH: Start Menu>Environment Variables>Edit the system environment variables>System Properties>Environment Variables>System Variables>Path>Edit>New: `C:\Program Files\usbipd-win`
3. Close and reopen PowerShell as Administrator
4. `usbipd wsl list`
5. `usbipd wsl attach --busid ` or `usbipd wsl attach --busid --wsl ` (replace with the actual BUS ID of the device)
6. To detach: `usbipd wsl detach --busid `
Install FISSURE in Linux Terminal:
1. `sudo apt-get install git`
2. Clone FISSURE and install as detailed above
**TAK Setup**
To install and run a local TAK server:
1. Register and download the TAK server docker zip from the website: https://tak.gov/products/tak-server
2. Create the `~/Installed_by_FISSURE` directory if it does not exist
3. Place the downloaded .zip file in `~/Installed_by_FISSURE`
4. Run the TAK Server item in the FISSURE installer
5. For local WebTAK, load the `~/Installed_by_FISSURE/taskerver-docker-#.#-RELEASE-##/tak/certs/files/webadmin.p12` file into your browser (settings>certificates)
6. Set "tak_on_startup" field to True in `/FISSURE/YAML/User Configs/default.yaml` or select "Start Docker Containers" from the FISSURE Dashboard TAK menu
7. Open WebTAK from FISSURE TAK menu and verify map loads with internet connection
8. Set "connect_mode" (auto/manual/disabled) field in `/FISSURE/YAML/User Configs/default.yaml`. Connect to TAK server in FISSURE Dashboard TAK menu if set to manual.
9. Run a FISSURE effect that creates a TAK alert (examples coming soon)
To connect to a remote TAK server:
1. Update the certificate filepaths in `/FISSURE/YAML/User Configs/default.yaml`
2. Set "connect_mode" (auto/manual/disabled) field in `/FISSURE/YAML/User Configs/default.yaml`. Connect to TAK server in FISSURE Dashboard TAK menu if set to manual.
3. Run a FISSURE effect that creates a TAK alert (examples coming soon)
**Apptainer Setup**
Apptainer is used to containerize most of the FISSURE installation, making deployment and testing simpler across different systems. While the majority of FISSURE runs inside the Apptainer environment, several components still require setup on the **host**:
- **Docker containers** (such as the PostgreSQL database and TAK Server) run on the **host**, not inside Apptainer.
- **udev rules, USB drivers, and hardware interfaces** must also be installed on the host for SDRs, Wi-Fi adapters, and other peripherals to function properly.
Pre-built Apptainer containers and ISO images are planned for future releases to simplify setup. These instructions are intended for users who want to **build the Apptainer container from source** or customize their installation.
1. **Clone the FISSURE Repository**
2. **Configure the Installer**
- Open `FISSURE/install_apptainer.sh` in a text editor.
- Review and adjust the variables near the top of the script.
Set each option (`true` / `false`) according to what you want to include (e.g., `UHD`, `HackRF`, `Wi-Fi`, etc.).
- Choose the desired FISSURE install mode:
- `full` - Includes all SDR software, network tools, and utilities
- `base` - Core FISSURE + GUI dependencies only (for expediting future container building)
- `Dashboard` - GUI-only container (no SDR tools)
- `HIPRFISR` - Headless HIPRFISR server build
- `SensorNode` - Sensor node build only
3. **Run the Installer**
cd FISSURE/Installer
./install_apptainer.sh
This builds a writable **Apptainer sandbox** in your home directory and installs all selected software inside the container and on the host (where applicable).
4. **Launch the Container**
fissure-apptainer
This command opens a terminal inside the FISSURE container with **USB ports, audio devices, and graphics** automatically bound for hardware and GUI access.
5. **Run FISSURE**
Once inside the container, run FISSURE just as you would on a normal system:
fissure
fissure-sensor-node
The environment behaves like a standard install, but more isolated from the host. If you encounter issues while using FISSURE inside Apptainer, please let us know which programs, hardware, or features are not working correctly.
## Lessons
FISSURE comes with several helpful guides to become familiar with different technologies and techniques. Many include steps for using various tools that are integrated into FISSURE. We aim to improve the quality and add new content over time.
- [Lesson1: OpenBTS](/docs/Lessons/Markdown/Lesson1_OpenBTS.md)
- [Lesson2: Lua Dissectors](/docs/Lessons/Markdown/Lesson2_LuaDissectors.md)
- [Lesson3: Sound eXchange](/docs/Lessons/Markdown/Lesson3_Sound_eXchange.md)
- [Lesson4: ESP Boards](/docs/Lessons/Markdown/Lesson4_ESP_Boards.md)
- [Lesson5: Radiosonde Tracking](/docs/Lessons/Markdown/Lesson5_Radiosonde_Tracking.md)
- [Lesson6: RFID](/docs/Lessons/Markdown/Lesson6_RFID.md)
- [Lesson7: Data Types](/docs/Lessons/Markdown/Lesson7_Data_Types.md)
- [Lesson8: Custom GNU Radio Blocks](/docs/Lessons/Markdown/Lesson8_Custom_GNU_Radio_Blocks.md)
- [Lesson9: TPMS](/docs/Lessons/Markdown/Lesson9_TPMS.md)
- [Lesson10: Ham Radio Exams](/docs/Lessons/Markdown/Lesson10_Ham_Radio_Exams.md)
- [Lesson11: Wi-Fi Tools](/docs/Lessons/Markdown/Lesson11_WiFi_Tools.md)
- [Lesson12: Creating Bootable USBs](/docs/Lessons/Markdown/Lesson12_Creating_Bootable_USBs.md)
- [Lesson13: Z-Wave](/docs/Lessons/Markdown/Lesson13_Z-Wave.md)
- [Lesson14: Ceiling Fans](/docs/Lessons/Markdown/Lesson14_Ceiling_Fans.md)
## FISSURE Challenge - Continuous Capture the Flag
The **FISSURE Challenge** is a continuous capture-the-flag contest built around the FISSURE framework. It is designed as an open learning tool where anyone can practice RF reverse engineering, explore new features, and tackle protocol-focused challenges.
- New challenges are added over time as FISSURE evolves.
- Solutions and walkthroughs are posted periodically on YouTube. [Solutions 1](https://www.youtube.com/watch?v=jYtqWwG_-kI)
- Community members are encouraged to **submit their own challenges** for others to solve.
Access the challenges at: [FISSURE Challenge](https://fissure.ainfosec.com/)
## License
GPL-3.0
For license details, see LICENSE file.
## Contact
Join the Discord Server: [https://discord.gg/JZDs5sgxcG](https://discord.gg/JZDs5sgxcG)
Connect on LinkedIn: [FISSURE - The RF Framework](https://www.linkedin.com/company/fissure-the-rf-framework)
Chris Poore - Assured Information Security, Inc. - poorec@ainfosec.com
Business Development - Assured Information Security, Inc. - bd@ainfosec.com
## Testimonials
## Acknowledgments
Special thanks to Dr. Samuel Mantravadi and Joseph Reith for their contributions to this project.
## Assured Information Security
View our other open source projects at: https://ainfosec.dev/
If you have an interest in hacking, check out our [Can You Hack It?®](https://www.canyouhackit.com) challenge and test your skills! Submit your score to show us what you’ve got. AIS has a national footprint with offices and remote employees across the U.S. We offer competitive pay and outstanding benefits. Join a team that is not only committed to the future of cyberspace, but to our employee’s success as well.
FISSURE Operational Overview |
FISSURE Overview (Slides) |