Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/scls19fr/cwtoolkit

Morse code toolkit including decoder and statistics generator, and transmitter with optional inclusion of statistical characterization and noise. Now includes a covert channel, which will be detailed in a paper on http://covert.codes
https://github.com/scls19fr/cwtoolkit

Last synced: about 1 month ago
JSON representation

Morse code toolkit including decoder and statistics generator, and transmitter with optional inclusion of statistical characterization and noise. Now includes a covert channel, which will be detailed in a paper on http://covert.codes

Awesome Lists containing this project

README

        

cwtoolkit version 0.3b
======================

joshua davis (cwtoolkit -*- covert.codes)

Introduction
------------

This was designed for Linux, with Python 2.7. This software was created for proof-of-concept
demonstration of a covert channel (see http://covert.codes). This is not production grade.
It does do a pretty good job of encoding, and decoding as long as the input isn't too noisy.
It does have the capability of forming statistics from the CW message, which may be unique
among such systems. If you have trouble using the decoder, adjust the amplification, offset,
and other relevant parameters.

Required packages include: numpy, scipy, and scikits.audiolab

cwstats.py: Decode and generate statistics for Morse code from a wav audio file.
Statistics include the average and standard deviation for intervals
(dots, dashes, voids).

cwtx.py: Generate Morse code and optionally apply statistical variation and noise to it.
E.g. you can determine the statistics of a signal using cwstats.py, then apply
those statistics to a computer generated message using this tool. Gaussian
noise can be added with user defined parameters. The cwtxt.py statfile can be
generated by cwstats.py (-o STATFILE). If statistics are given to cwtxt.py via
the -s switch, it will ignore the -w wpm switch and generate 'characterized'
output; that is, the signal elements will be formulated according to the
statistics in STATFILE. We use a normal distribution for this.

Usage
-----

The -h switch gives help for any of the commands.

The transmitter and receiver now include the capability to send covert messages. This is done
by varying the timing of the overt (carrier) message. See -h for usage information.

Transmitting and recovering covert messages
-------------------------------------------

Send a covert message like this:
`$ ./cwtx.py -m "this is a cover message" -o message.wav -s statfile -c "covert message" -k "secret"`

The covert message must be shorter than the cover message.

Recovering a covert message is more difficult, due to sampling in digital systems, and radio
effects on the signal. See the paper on http://covert.codes for a more detailed explaination.

First, try this:
`$ ./cwstats.py -i message.wav -c statfile -k "secret"`

Then mess with the tolerance and the filter. For a weak signal you may have to turn off the filter
and reduce the tolerance, even to get the *overt* message:
`$ ./cwstats.py -i message.wav -c statfile -k "secret" -n -t 0.9`

References
----------

http://www.kent-engineers.com/codespeed.htm
https://en.wikipedia.org/wiki/Morse_code