Initial commit
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
# CryptZ Ultimate v5
|
||||
|
||||
**AES-256-GCM Professional Archiver** — шифрование файлов с двухфакторной аутентификацией, файл-ключом и CLI.
|
||||
|
||||
## Возможности
|
||||
|
||||
- 🔒 **AES-256-GCM** — аутентифицированное шифрование (замена CBC+HMAC)
|
||||
- 🔑 **Argon2id KDF** — устойчивость к GPU/ASIC-атакам
|
||||
- 📦 **Сжатие gzip** — уменьшение размера архива
|
||||
- 🔐 **2FA (TOTP)** — Google Authenticator / Authy
|
||||
- 🗝 **Файл-ключ** — дополнительный фактор (XOR с основным ключом)
|
||||
- 💣 **Счётчик попыток с MAC** — корректная защита от перебора + самоуничтожение
|
||||
- 🗑 **Шредер** — безопасное удаление оригиналов (3 прохода)
|
||||
- ✓ **Проверка целостности** — без полной расшифровки
|
||||
- 🖥 **GUI** — CustomTkinter, drag & drop, индикатор силы пароля, журнал, горячие клавиши
|
||||
- ⌨ **CLI** — полная автоматизация из командной строки
|
||||
|
||||
## Установка
|
||||
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
> `tkinterdnd2` — опционально (для drag & drop). Без неё приложение работает нормально.
|
||||
|
||||
## Запуск
|
||||
|
||||
### GUI
|
||||
```bash
|
||||
python cryptz.py
|
||||
```
|
||||
|
||||
### CLI
|
||||
|
||||
**Шифрование:**
|
||||
```bash
|
||||
python cryptz.py encrypt file1.txt file2.pdf -p "MyPassword" -o archive.cryptz
|
||||
python cryptz.py encrypt secret/ -p "Pass" -k keyfile.bin --2fa --shred
|
||||
```
|
||||
|
||||
**Расшифровка:**
|
||||
```bash
|
||||
python cryptz.py decrypt archive.cryptz -p "MyPassword" -o ./output/
|
||||
python cryptz.py decrypt archive.cryptz -p "Pass" -k keyfile.bin --otp 123456
|
||||
```
|
||||
|
||||
**Проверка целостности:**
|
||||
```bash
|
||||
python cryptz.py verify archive.cryptz -p "MyPassword"
|
||||
```
|
||||
|
||||
## Горячие клавиши (GUI)
|
||||
|
||||
| Комбинация | Действие |
|
||||
|---|---|
|
||||
| `Ctrl+O` | Добавить файлы |
|
||||
| `Ctrl+E` | Зашифровать |
|
||||
| `Ctrl+D` | Расшифровать |
|
||||
| `Ctrl+G` | Сгенерировать пароль |
|
||||
| `Delete` | Очистить список |
|
||||
|
||||
## Формат файла CryptZ v5
|
||||
|
||||
```
|
||||
[CRZ5 4B][VERSION 1B][FLAGS 1B]
|
||||
[SALT 32B][NONCE_META 12B][NONCE_DATA 12B]
|
||||
[MAX_ATTEMPTS 1B][CURRENT_ATTEMPTS 1B][ATTEMPT_MAC 32B]
|
||||
[META_LEN 4B][META_CIPHERTEXT ...][DATA_CIPHERTEXT ...]
|
||||
```
|
||||
|
||||
## Структура проекта
|
||||
|
||||
```
|
||||
cryptz.py — точка входа (GUI или CLI)
|
||||
crypto_engine.py — криптографический движок
|
||||
ui.py — графический интерфейс
|
||||
cli.py — командная строка
|
||||
requirements.txt — зависимости
|
||||
```
|
||||
|
||||
## Безопасность
|
||||
|
||||
- **AES-256-GCM**: аутентификация + шифрование в одном примитиве, отдельный nonce для метаданных и данных
|
||||
- **Argon2id**: 64MB RAM, 3 итерации, 4 потока
|
||||
- **Счётчик попыток**: защищён HMAC-SHA256 с domain-separated sub-key; при превышении лимита архив уничтожается
|
||||
- **Безопасное извлечение tar**: фильтрация path traversal (`..`, абсолютные пути)
|
||||
Reference in New Issue
Block a user