RFQuack
The only RF-analysis tool that quacks!
Documentation
|
Research Paper
View Demo
Β·
Report Bug
Β·
Request Feature
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.
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
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.
Installation
An easy way to quick start is to have an ESP32 board and a CC1101 and/or RF69 (easier to find) radio module.
git 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.
Usage
An easy way to quick start is to connect the dongle via USB and use the CLI.
$ 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
- 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).
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: