https://github.com/makischristou/crabguard
🦀🔒 crabguard: A cli tool for end-to-end encryption for s3 storage
https://github.com/makischristou/crabguard
aes backblaze-b2 cli cloud cloud-storage crabguard cryptography encryption rclone rust rustlang s3
Last synced: 4 months ago
JSON representation
🦀🔒 crabguard: A cli tool for end-to-end encryption for s3 storage
- Host: GitHub
- URL: https://github.com/makischristou/crabguard
- Owner: MakisChristou
- License: mit
- Created: 2023-09-23T18:30:13.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-12-25T10:58:21.000Z (over 1 year ago)
- Last Synced: 2025-10-11T23:18:03.700Z (9 months ago)
- Topics: aes, backblaze-b2, cli, cloud, cloud-storage, crabguard, cryptography, encryption, rclone, rust, rustlang, s3
- Language: Rust
- Homepage:
- Size: 238 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
🦀🔒 crabguard: A cli tool for end-to-end encryption for remote and local storage
[](https://crates.io/crates/crabguard)
## Features
- Encrypted upload, download and delete operations on Amazon S3 storage
- AES-GCM symmetric encryption with random 96-bit nonce
- Hashed filenames using sha256
- File chuking (currently chunk size is hardcoded to 1MB)
- Resume upload/download when interuppted
- Handles big files (as large as the disk can handle)
## Future Work
- Handle incomplete/corrupted files
- Password based key derivation
- Dynamic file chunking
- Improve latency and performance (e.g. upload/download multiple chunks in separate connections)
## Getting started
Create a `.env` file like so
```
AWS_ACCESS_KEY_ID=...
AWS_SECRET_ACCESS_KEY=...
AWS_REGION_NAME=us-west-004
AWS_ENDPOINT=s3.us-west-004.backblazeb2.com
AWS_BUCKET_NAME=testbucket
```
When the upload command is run a new key will be generated and stored in your `.env` file. It goes without saying that you should backup this key. If you lose it you can't decrypt your files or even the filenames.
## Common Commands
```bash
cargo r --release -- upload ~/Downloads/23-08-11\ 11-35-15\ 3555.jpg
```
```bash
cargo r --release -- download 23-08-11\ 11-35-15\ 3555.jpg
```
```bash
cargo r --release -- delete 23-08-11\ 11-35-15\ 3555.jpg
```
```bash
cargo r --release -- list
```
```bash
cargo r --release -- mnemonic
```
```bash
cargo r --release -- keygen "train switch nuclear device polar tilt shift hurry board stick recall device"
```