RFQuack
RFQuack: the versatile RF-analysis tool that quacks!
[![PlatformIO CI][ci-shield]][ci-url] [![Contributors][contributors-shield]][contributors-url] [![Forks][forks-shield]][forks-url] [![Stargazers][stars-shield]][stars-url] [![Issues][issues-shield]][issues-url] The project is written primarily in C++, distributed under the GNU General Public License v2.0 license, first published in 2020. Key topics include: arduino, arduino-library, cc1101, hacking, mqtt.
<a name="readme-top"></a>
<!-- PROJECT LOGO --> <br /> <div align="center"> <a href="https://github.com/rfquack/RFQuack"> <img src="docs/imgs/logo-round-nobg.png" alt="RFQuack Logo" /> </a> <h3 align="center">RFQuack</h3> <p align="center"> The only RF-analysis tool that quacks! <br /> <br /> <a href="https://rfquack.org"><strong>Documentation</strong></a> | <a href="https://arxiv.org/abs/2104.02551"><strong>Research Paper</strong></a> <br /> <br /> <a href="https://www.youtube.com/playlist?list=PL8hbvIylvVegA6ES-UUfd6sgK-MFNciz5">View Demo</a> · <a href="https://github.com/rfquack/RFQuack/issues">Report Bug</a> · <a href="https://github.com/rfquack/RFQuack/issues">Request Feature</a> </p> </div> <!-- ABOUT THE PROJECT --> <p align="center"> <img src="https://img.youtube.com/vi/_59SRwfS6PU/0.jpg" /> </p>About RFQuack
RFQuack is a versatile RF-analysis tool that allows you to sniff, analyze, and transmit data over the air.
Similarly to RFCat RFQuack has a Python-based scriptable shell that allows you to set parameters, receive, transmit, and so on.
<p align="right">(<a href="#readme-top">back to top</a>)</p>Supported Radios
We porting from (and contribute back to) RadioLib. So far, we support:
- CC1101 OOK, 2-FSK, 4-FSK, MSK radio module
- nRF24L01 2.4 GHz module
- RF69 FSK, OOK radio module
Supported Arduino Platforms
In principle, RFQuack can run on any board and platform supported by PlatformIO. So far, we tested the following boards:
<!-- GETTING STARTED -->Getting Started
This is an example of how you may give instructions on setting up RFQuack.
Prerequisites
You'll need the Protbuf Compiler, a sane Python 3.10, and PlatformIO (which itself requires some dependencies):
- Protobuf Compiler
- Python 3.10.x
- PlatformIO
For more details, please refer to the Documentation.
<p align="right">(<a href="#readme-top">back to top</a>)</p> <!-- INSTALLATION -->Installation
An easy way to quick start is to have an ESP32 board and a CC1101 and/or RF69 (easier to find) radio module.
bashgit clone --recursive https://github.com/rfquack/RFQuack cd RFQuack pip install -r requirements.pip vim build.env # set your parameters and :wq make clean build flash
For more details, please refer to the Documentation.
<p align="right">(<a href="#readme-top">back to top</a>)</p> <!-- USAGE -->Usage
An easy way to quick start is to connect the dongle via USB and use the CLI.
shell$ rfq tty -P /dev/ttyUSB0 2019-04-10 18:04:31 local RFQuack[20877] INFO Transport initialized 2019-04-10 18:04:31 local RFQuack[20877] INFO Transport initialized (QoS = 2): mid = 2 ... RFQuack(/dev/ttyUSB0, 115200,8,N,1)> q.radioA.set_modem_config(modulation="OOK", carrierFreq=434.437) result = 0 message = 2 changes applied and 0 failed. RFQuack(/dev/ttyUSB0, 115200,8,N,1)> q.radioA.rx() result = 0 message = ...
For more details, please refer to the Documentation.
<!-- ROADMAP -->Roadmap
- Add all relevant RadioLib modules
- Test with more than 2 radio modules
- Revisit Python CLI source code and use typed Python 3
- Integrate with URH and GNU Radio
- Make a web UI
See the open issues for a full list of proposed features (and known issues).
<p align="right">(<a href="#readme-top">back to top</a>)</p> <!-- CONTRIBUTING -->Contributing
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the proper template.
Don't forget to give the project a star! Thanks again!
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Run simple integration tests (
make clean build) - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
License
Distributed under the GPL 2 License. See LICENSE for more information.
Acknowledgments
RFQuack wouldn't exist without the inspiration, feedback, and help received from related tools and awesome humans:
<p align="right">(<a href="#readme-top">back to top</a>)</p> <!-- MARKDOWN LINKS & IMAGES --> <!-- https://www.markdownguide.org/basic-syntax/#reference-style-links -->Contributors
Showing top 12 contributors by commit count.
