Frequency Independent SDR-based Signal Understanding and Reverse Engineering
FISSURE Operational Overview |
FISSURE Overview (Slides) |
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.
- Detect, classify, and analyze RF signals
- Collect, replay, and manipulate IQ data
- Discover protocols and craft custom packets
- Execute fuzzing and vulnerability testing
- Automate workflows with AI and ML integration
- Archive signals and build playlists for testing
- Integrate alerts and data into TAK for team awareness
- Desktop GUI for visualization and prototyping
- Headless nodes for remote sensing and autonomous operations
- Dockerized services for scalable and repeatable installs
- TAK integration for mission relevance and shared situational awareness
- Operators: Detect, geolocate, and respond to RF activity in the field
- Researchers: Test new algorithms, automation, and AI and ML approaches
- Educators: Teach SDR, DSP, RF security, real-time processing, and reverse engineering in the classroom
- Students and Hobbyists: Explore SDR workflows and learn about technology without steep setup overhead
FISSURE’s roadmap evolves with customer demand and community feedback.
For the most up-to-date view, explore the interactive roadmap:
- Plugin Ecosystem: Redefining plugin boundaries and execution, developing a standalone plugin editor, converting existing flow graph libraries into plugins, and improving how plugins are deployed on sensor nodes and loaded into TAK.
- TAK Integration: Creating a WinTAK application, enhancing the bridge between TAK and FISSURE’s hub, enabling plugin/action selection directly in TAK, and strengthening alerting and coordination features.
- Installer & Packaging: Breaking out installers by operating system, improving error logging, delivering prebuilt ISOs and VM images for popular platforms, and exploring Docker and Apptainer for deployable FISSURE components.
- Tactical Node Orchestration: Expanding plugin support on nodes, integrating new sensor types, laying the foundation for multi-node coordination, and improving artifact recording/synchronization and networking resilience.
- Electronic Support / Monitoring: Extending direction-finding and monitoring capabilities, with emphasis on practical electronic support workflows.
FISSURE is supported by a series of white papers that explore both technical and operational applications across different domains.
- FISSURE Overview
- FISSURE for Counter-UAS
- FISSURE for UAS Payloads & Aerial Operations
- FISSURE for Maritime
- FISSURE for Vehicle & Mobility Systems
- FISSURE for Perimeter & Infrastructure Defense
- FISSURE for TAK & Mobile
- FISSURE for Training & Education
- FISSURE Technical Details & Architecture
AIS has published several articles highlighting FISSURE’s applications, updates, and use cases:
- Demonstrating FISSURE as a Drone Payload at Northern Strike 2025
- A Recap of My DEF CON 2024 Presentation on FISSURE Updates
- FISSURE: Navigating the Open-Source Realm
- FISSURE: The RF Framework for Everyone
Updated Info Sheet https://www.ainfosec.com/wp-content/uploads/2023/04/AIS-FISSURE.pdf
Alerts and Sensor Node Positions in WebTAK View GPS tagged alerts with custom text and sensor node GPS beacons in a WebTAK browser.
Attack Alerts, Reports, Exploit Recommendations Create custom messages from attacks that show up in the Dashboard. Stage new attacks with the return data from a single button click.
Alert Listeners for creating backchannels that accept alerts. Includes: folder/file changes, Meshtastic, MQTT, serial, TCP/UDP, website polling, and ZMQ SUB.
Sat. August 10, 2024: DEF CON 32 - RF Village - 1400-1500 PST. Prerecorded Video, Live Recording
Thu. September 5, 2024: Binghamton University STEM Job and Internship Fair - 1100-1530 EST
Tue. September 17, 2024: GNU Radio Conference 2024 - 1605-1635 EST Description/Slides, Live Recording
January 20, 2025 (Runs Indefinitely): FISSURE Challenge. Link (Now Live)
Thu. February 6, 2025: Binghamton University Spring 2025 Job and Internship Fair - 1100-1500 EST
May 5-8, 2025: SOF Week - Assured Information Security, Inc. (AIS) booth
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
Supported
There are now two branches within FISSURE: the Python3 branch and the Python2_maint-3.7 branch. The Python3 branch contains the latest code and has support for PyQt5 and GNU Radio versions 3.8 and 3.10. The Python2_maint-3.7 branch has been deprecated and will only be updated if specific third-party tools require GNU Radio version 3.7 or an older operating system. Only the latest minor versions of operating systems will be supported for installs and we will do our best to keep up. Operating systems that have been updated and yet to be fully tested will be listed under "In-Progress."
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
Installation
For adding SSH keys to GitHub and cloning with SSH (needed for contributing):
ssh-keygen -t ed25519
cat ~/.ssh/id_ed25519.pub
Paste text into "Settings" > "SSH and GPG keys" > "New SSH Key"
git clone [email protected]: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.
It is recommended to install FISSURE on a clean operating system to avoid conflicts with existing software. Further efforts towards virtualization and dependency management will be continued. Notes on the installer:
- The items listed under the "Minimum Install" category are what is required to launch the FISSURE Dashboard without errors.
- The radio hardware and out of tree modules are required to perform many actions in FISSURE.
- The flow graphs need to be recompiled to avoid errors across GNU Radio minor versions.
- Software programs outside the minimum install are optional and can be installed as needed.
- Select all the recommended checkboxes (Default button) to avoid errors while operating the various tools within FISSURE.
- Items unchecked by default may not install properly or could possibly conflict with existing programs (please suggest fixes!).
- There will be multiple prompts throughout the installation, mostly asking for elevated permissions and user names. These prompts are primarily tied to third-party tools, refer to installation instructions provided by the maintainer for details.
- If an item contains a "Verify" section at the end, the installer will run the command that follows and highlight the checkbox item green or red depending on if any errors are produced by the command. Checked items without a "Verify" section will remain black following the installation.
- To avoid installation and permission errors, download FISSURE to a user owned directory such as Home. Run the install script and the fissure command without using sudo. Many of the third-party tools will be downloaded to and installed from the
~/Installed_by_FISSURE
directory.
The FISSURE installer is helpful for staging computers or installing select software programs of interest. The code can be quickly modified to allow for custom software installs. The size estimates for the programs are before and after readings from a full install. The sizes for each program are not exact as some dependencies are installed in previously checked items. The sizes may also change over time as programs get updated.
Remote Sensor Node Installation
Install FISSURE per usual on a general purpose computer. Install FISSURE on the remote computer in the same directory location as the local computer (until further notice) to avoid filepath errors with certain actions. To configure the sensor node for remote operation, edit the "default.yaml" file in the ./fissure/Sensor_Node/Sensor_Node_Config/
directory. Edit the following fields to change from local to remote operation:
- nickname: (anything but "Local Sensor Node")
- ip_address: (your remote sensor node computer's ip_address)
Change the "autorun" field from from false
to true
to run the default autorun playlist file on startup and forgo remote operations. New autorun playlists can be generated and saved from the Dashboard Autorun tab.
The remote sensor node acts as a server and must have a set of valid certificates (generated during install) that match with the client (local computer). The server needs the "server.key_secret" and "client.key" files while the client needs the "client.key_secret" and "server.key" files. If the certificates folder was generated on the server computer, the client files must be manually transferred to the other computer.
Local Dashboard Usage
Open a new terminal after installation and enter:
fissure
The intended method for launching the FISSURE Dashboard is through the terminal without sudo. The terminal provides important status and feedback for some operations. Refer to the FISSURE documentation for more details.
A local sensor node can be launched through the top buttons in the FISSURE Dashboard and helps maintain all pre-existing FISSURE functionality on a standalone workstation. Only one local and four remote sensor nodes (or five remote) are supported at this time.
If any of the programs freeze or hang on close, the following commands can be used to detect a problem or forcibly shut down:
sudo ps -aux | grep fissure
sudo pkill python3
sudo kill -9 <PID of __main__.py>
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:
- Open PowerShell as Administrator
wsl --install
- Enable Virtualization in BIOS, check using: Task Manager>Performance>CPU>Virtualization
wsl --set-default-version 2
wsl --list --online
- Install a specific version (plain Ubuntu should be the latest version listed):
wsl --install -d Ubuntu-22.04
- Open the Start Menu, search for Ubuntu and launch it
- To uninstall a distribution:
wsl --unregister Ubuntu-22.04
Enable USB passthrough in a PowerShell as Administrator:
winget install usbipd
- 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
- Close and reopen PowerShell as Administrator
usbipd wsl list
usbipd wsl attach --busid <BUS_ID>
orusbipd wsl attach --busid <BUS_ID> --wsl <DistributionName>
(replace <BUS_ID> with the actual BUS ID of the device)- To detach:
usbipd wsl detach --busid <BUS_ID>
Install FISSURE in Linux Terminal:
sudo apt-get install git
- Clone FISSURE and install as detailed above
TAK Setup
To install and run a local TAK server:
- Register and download the TAK server docker zip from the website: https://tak.gov/products/tak-server
- Create the
~/Installed_by_FISSURE
directory if it does not exist - Place the downloaded .zip file in
~/Installed_by_FISSURE
- Run the TAK Server item in the FISSURE installer
- For local WebTAK, load the
~/Installed_by_FISSURE/taskerver-docker-#.#-RELEASE-##/tak/certs/files/webadmin.p12
file into your browser (settings>certificates) - 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 - Open WebTAK from FISSURE TAK menu and verify map loads with internet connection
- 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. - Run a FISSURE effect that creates a TAK alert (examples coming soon)
To connect to a remote TAK server:
- Update the certificate filepaths in
/FISSURE/YAML/User Configs/default.yaml
- 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. - Run a FISSURE effect that creates a TAK alert (examples coming soon)
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
- Lesson2: Lua Dissectors
- Lesson3: Sound eXchange
- Lesson4: ESP Boards
- Lesson5: Radiosonde Tracking
- Lesson6: RFID
- Lesson7: Data Types
- Lesson8: Custom GNU Radio Blocks
- Lesson9: TPMS
- Lesson10: Ham Radio Exams
- Lesson11: Wi-Fi Tools
- Lesson12: Creating Bootable USBs
- Lesson13: Z-Wave
- Lesson14: Ceiling Fans
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
- Community members are encouraged to submit their own challenges for others to solve.
Access the challenges at: FISSURE Challenge
Suggestions for improving FISSURE are strongly encouraged. Leave a comment in the Discussions page or in the Discord Server if you have any thoughts regarding the following:
- New feature suggestions and design changes
- Software tools with installation steps
- New lessons or additional material for existing lessons
- RF protocols of interest
- More hardware and SDR types for integration
- IQ analysis scripts in Python
- Installation corrections and improvements
Contributions to improve FISSURE are crucial to expediting its development. Any contributions you make are greatly appreciated. If you wish to contribute through code development, please fork the repo and create a pull request:
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a pull request
Creating Issues to bring attention to bugs is also welcomed.
Need more specific ideas? There are a lot of topics we have yet to investigate. Check out our running list of potential to-do items. Any help is appreciated. Pick an easy one and write that you contributed to FISSURE in your resume/CV.
Are you a student or looking to learn more about RF and programming or an organization looking to expose students to the world of open source? Reach out today and refer to the 2023 Project Idea List.
Contact Assured Information Security, Inc. (AIS) Business Development to propose and formalize any FISSURE collaboration opportunities–whether that is through dedicating time towards integrating your software, having the talented people at AIS develop solutions for your technical challenges, or integrating FISSURE into other platforms/applications.
GPL-3.0
For license details, see LICENSE file.
Join the Discord Server: https://discord.gg/JZDs5sgxcG
Follow on Twitter/X: @FissureRF, @AinfoSec
Follow on Bluesky: @fissurerf.bsky.social
Connect on LinkedIn: FISSURE - The RF Framework
Chris Poore - Assured Information Security, Inc. - [email protected]
Business Development - Assured Information Security, Inc. - [email protected]
“FISSURE is a powerful and versatile RF software platform suitable for both education and practical applications. It supports a wide range of commonly used hardware and offers intuitive IQ data analysis tools. These features enable us to visualize, interpret, and directly modify RF signal messages in our project.”
– Dylan R.
“We really enjoyed using FISSURE in our engineering project. This software is an incredibly comprehensive collection of tools to manipulate radio frequencies and was an amazing aid to our studies involving wireless communications.”
– University Senior Project Team
Special thanks to Dr. Samuel Mantravadi and Joseph Reith for their contributions to this project.
Like working with signals, reverse engineering, or other realms in cybersecurity? Browse our current openings or join our talent community for future consideration.
If you have an interest in hacking, check out our Can You Hack It?® 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.