========
Filepass
========

Description
-----------

Filepass is a utility for securely transferring files between computers.
The sender validates that the client received the same pin.  There is a
chance (one in a million) that an attacker could successfully interpose
themselves in the middle.  If there is even one failure, the network
should be considered suspect, and a more secure key exchange should be
used.


Installation
------------

To optionally install the utility so that others can use it, use the
standard distutils method:
	python setup.py build
	sudo python setup.py install

Filepass includes a pure python implementation of AES that is *extremely*
slow.  Optionally if you install PyCrypto_, filepass will automatically
detect it and use PyCrypto to significantly improve performance.


Usage
-----

The utility is very simple, on the receiver, run the filepass.py script
with no arguments.  If you have installed the module, you can run it
using the command::
	python -m filepass

On the server side, simply add the files you want to transfer as arguments
such as::
	python -m filepass myfile.txt

The client will then ask if it wants to accept the file.  After the client
has accepted the file, a key negotiation will occur, and both sides will
be presented with a pin.  The server will prompt you to validate that the
client presents the same pin.  Once you tell the server that the pin is
valid, it will start to transfer the files to the client.

The client has the following options:
-a		Always accept the first announcement of a file transfer.
-o		Always overwrite files with the same name.

The server has the following options:
-d		A destination host/IP to send the announce request instead of
		broadcasting it on the local network.
-n name		Present name instead of the files to the client.  The client
		will still receive the correct filenames, but they will be
		encrypted, while this name is passed in plain text on the
		network.


Future improvements
-------------------

- Provide option to compress the data during transfer.


.. _PyCrypto: https://www.dlitz.net/software/pycrypto
