Cyphare is a secure UDP-based file sharing utility designed for fast and reliable file transfers over local networks.
Built on top of the RUFShare protocol, Cyphare combines peer discovery, reliable UDP transmission, and integrity verification into a simple command-line tool.
- Fast file transfer over UDP
- Reliable delivery with retransmission support
- Automatic peer discovery
- Local network scanning
- Data integrity verification
- Lightweight and dependency-free
- Written entirely in C
makeGenerated executable:
cyphare
./cyphare TASK [OPTIONS]Available tasks:
scan Discover receivers on the network
pull Wait for incoming files
push Send a file to a receiver
Scan the local network for available receivers:
./cyphare scanSpecify source address:
./cyphare scan \
-s 192.168.1.10:1308Start listening for incoming transfers:
./cyphare pullCustom receiver name:
./cyphare pull \
-n aliceCustom source address:
./cyphare pull \
-s 0.0.0.0:1307Transfer a file to a receiver:
./cyphare push \
-f archive.tar.gz \
-d 192.168.1.25:1307Specify sender name:
./cyphare push \
-f image.iso \
-d 192.168.1.25:1307 \
-n arashSpecify chunk size:
./cyphare push \
-f backup.bin \
-d 192.168.1.25:1307 \
-c 65535Receiver:
./cyphare pull -n laptopSender:
./cyphare scanOutput:
[0] laptop (192.168.1.25:1307)
Transfer:
./cyphare push \
-f report.pdf \
-d 192.168.1.25:1307Cyphare uses a custom reliable UDP protocol:
- Receiver announces availability.
- Sender discovers the receiver.
- Transfer metadata is exchanged.
- File is split into chunks.
- Chunks are acknowledged.
- Missing data is retransmitted.
- Integrity checks verify correctness.
This approach provides TCP-like reliability while keeping protocol behavior fully application-controlled.
include/
├── cyphare.h
├── launcher.h
└── utils/
source/
├── cyphare.c
├── launcher.c
└── utils/
library/
├── librufshare.so
└── libunity.so
- Linux
- POSIX sockets
- pthread
- C99 compatible compiler
Tested with:
- PCC
- GCC
Most file-sharing tools are either:
- Heavyweight
- GUI-focused
- TCP-only
Cyphare was created as a lightweight alternative for developers who want a fast, scriptable, and transparent file transfer tool built around a custom UDP protocol.
See the LICENSE file for details.