This project allows users to transfer multiple files across devices in a local network. It uses a 128-bit pre-shared key for AES-CBC encryption. (Sequence diagram created with mermaid)
Tested with:
- Python 3.9.5
- pycryptodome 3.10.1
- Ubuntu 20.04.2 and Windows 10
- pycryptodome: pip install pycryptodome
The receiver is waiting for incoming connections. The receiver script must be started first. The received files are stored in a directory called "received_files" located in the current directory.
$ python file_transfer_receive.py [-p PORT] [-k KEY]
optional arguments:
-p, --port PORT Port on which the receiver is listening. Default: 6000
-k, --key KEY Set a new key. Provide 16 characters (no backslash) as the string will be utf-8 encoded. Default key provided in the script.
The sender has to provide the IP-address or the hostname of the receiver. The sender is able to select multiple files via the tkinter.filedialog interface.
$ python file_transfer_send.py [-n HOSTNAME] [-a ADDRESS] [-p PORT] [-k KEY]
optional arguments:
-n, --name HOSTNAME Hostname of receiver
-a, --address ADDRESS IP-Address of receiver
-p, --port PORT Port on which the receiver is listening. Default: 6000
-k, --key KEY Set a new key. Provide 16 characters (no backslash) as the string will be utf-8 encoded. Default key provided in the script.