/ooktools

📡 On-off keying tools for your SD-arrrR

Primary LanguagePythonMIT LicenseMIT

ooktools

ooktools aims to help with the reverse engineering of on-off keying data sources such as wave files or raw frames captured using RfCat.


why?

I recently played around a little with static key remotes, and wrote some code to help with the reverse engineering thereof.

major features

  • Binary string extraction from wave file recordings.
  • Wave file cleanups to remove noise in On-off keying recordings.
  • Graphing capabilities for wave files.
  • General information extraction of wave files.
  • Signal recording and playback using json definition files that can be shared.
  • Plotting of data from the previously mentioned json recordings.
  • Signal searching for On-off keying type data.
  • Sending signals in both binary, complete PWM formatted or hex strings using an RfCat dongle.
  • Gnuradio .grc template file generation.
  • Signal 'jammer' by continuously sending a loud, static signal.
  • Signal brute forcer that can iterate over a bitstring range.

installation

You can install ooktools in two ways. Either from pip or from source. In case of a source installation, you may want to optionally consider installing it in a virtualenv.

rfcat

In both installation cases, you need to install RfCat. This too can be done in two ways. On Kali Linux, you can install it with a simple apt command:

$ apt install rfcat

Or, if you need to manually install it, download the latest RfCat sources and run the setup.py script:

$ wget -c https://bitbucket.org/atlas0fd00m/rfcat/downloads/rfcat_150225.tgz
$ tar xjvf rfcat_150225.tgz
$ cd rfcat_150225
$ python setup.py install

ooktools

Pip Package:

$ pip install ooktools

Using this method, you should have the ooktools command available globally.

From source:

$ git clone https://github.com/leonjza/ooktools.git
$ cd ooktools
$ pip install -r requirements.txt

If you installed from source then you can invoke ooktools with as a module using python -m ooktools.console from the directory you cloned to.

usage

There are a number of sub commands that are grouped by major category. At anytime, add the --help argument to get a full description of any other sub commands and or arguments available.

$ ooktools --help
         _   _           _
 ___ ___| |_| |_ ___ ___| |___
| . | . | '_|  _| . | . | |_ -|
|___|___|_,_|_| |___|___|_|___| v0.1
On-off keying tools for your SD-arrrR
https://github.com/leonjza/ooktools

Usage: ooktools [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  gnuradio  GNU Radio Commands.
  signal    Signal Commands.
  wave      Wave File Commands.

For full examples, please refer to the blogpost here

known issues

Nothing is perfect I guess. One of the biggest problems would be test cases and variations. So, here is the stuff that I know is not 100% perfect. Pull requests welcome!

  • Wave file operations such as graph and clean break when the wave file is too long. ~50M samples seem to start hitting the point of breakage.
  • The matplotlib usage is silly from a performance perspective. Its the main reason I don't have live graphs in too as I just cant get it working great.

license

Please refer to the LICENSE file.