Plainsight, a textual steganography tool to defeat censorship.

Author: Robert Winslow
Source: http://github.com/rw/plainsight
Email: robert.winslow@gmail.com

The goal of Plainsight is to help you avoid being flagged as 'suspicious' by
internet censors. For example, by encoding files with Plainsight, one could
potentially evade the Great Firewall of China, by making your data look like
harmless English prose... instead of the encrypted archive that it really is.


TODO:
  fuzz testing
  regression tests (especially for EOF and the like)
  robust adding of files to language model (e.g. independent of args order)
  model serialization
  more throughput
  tighter code
  support for other languages (e.g. Chinese)
  port to other languages (e.g. Ruby)



How to use:

# Install it:
$ sudo pip install plainsight

# download a copy of 'The Adventures of Sherlock Holmes'
$ curl -o sherlock.txt http://www.gutenberg.org/cache/epub/1661/pg1661.txt

# type your message to encode:
$ echo 'Meet at Union Square at noon. The password is FuriousGreen.' > cleartext

# then, pipe it through Plainsight:
$ cat cleartext | plainsight -m encipher -f sherlock.txt > ciphertext

# the output will be gibberish that Doyle could've written:
$ cat ciphertext |fold -s
which was the case, of a light. And, his hand. "BALLARAT." only applicant?" 
decline be walking we do, the point of the little man in a strange, her 
husband's hand, going said road, path but you do know what I have heard of you, 
I found myself to get away from home and for the ventilator little cold night, 
and I he had left my friend Sherlock of our visitor and he had an idea was not 
to abuse step I of you, I knew what I was then the first signs it is the 
daughter, at least a fellow-countryman. had come. as I have already explained, 
the garden. what you can see a of importance. your hair. a picture upon of the 
money which had brought a you have a little good deal in way: out to my wife 
and hurry." made your hair. a charge me a series events, and excuse no sign his 
note-book has come away and in my old Sherlock was already down to do with the 
twisted

# now, decipher that ciphertext:
$ cat ciphertext | plainsight -m decipher -f sherlock.txt > deciphered
$ cat deciphered
Meet at Union Square at noon. The password is FuriousGreen.
