diff --git a/.planning/PROJECT.md b/.planning/PROJECT.md index 0297a54..b018146 100644 --- a/.planning/PROJECT.md +++ b/.planning/PROJECT.md @@ -8,24 +8,40 @@ Архив невозможно распаковать без знания формата — стандартные утилиты (7z, tar, unzip, binwalk) не распознают и не извлекают содержимое. +## Current Milestone: v1.1 Directory Support + +**Goal:** Добавить поддержку рекурсивной архивации директорий с сохранением иерархии и Unix permissions во всех трёх декодерах. + +**Target features:** +- Рекурсивная архивация директорий (pack принимает папки) +- Сохранение полных относительных путей (dir/subdir/file.txt) +- Unix mode bits (chmod 755/644) в формате и при распаковке +- Пустые директории сохраняются и восстанавливаются +- Обновление FORMAT.md под новые поля TOC +- Обновление всех трёх декодеров (Rust, Kotlin, Shell) + ## Requirements ### Validated -(None yet — ship to validate) +- ✓ CLI-утилита на Rust для создания архивов (Linux/macOS) — v1.0 +- ✓ Кастомный бинарный формат — не распознаётся стандартными архиваторами — v1.0 +- ✓ Сжатие данных перед шифрованием — v1.0 +- ✓ Шифрование AES-256-CBC с зашитым ключом — v1.0 +- ✓ Обфускация структуры формата (XOR-заголовки, encrypted TOC, decoy padding) — v1.0 +- ✓ Упаковка нескольких файлов в один архив (тексты + APK) — v1.0 +- ✓ Деархивация через Kotlin-код на Android 13 — v1.0 +- ✓ Деархивация через shell-скрипт (busybox) — v1.0 +- ✓ Целостность данных — round-trip тесты — v1.0 ### Active -- [ ] CLI-утилита на Rust для создания архивов (Linux/macOS) -- [ ] Кастомный бинарный формат — не распознаётся стандартными архиваторами -- [ ] Сжатие данных перед шифрованием -- [ ] Шифрование AES-256 или ChaCha20 с зашитым ключом -- [ ] Обфускация структуры формата (нестандартные magic bytes, перемешанные блоки, фейковые заголовки) -- [ ] Упаковка нескольких файлов в один архив (тексты + APK) -- [ ] Деархивация через Kotlin-код на Android 13 (основной путь) -- [ ] Деархивация через shell-скрипт (busybox dd/xxd/openssl) как fallback -- [ ] Целостность данных — распакованные файлы идентичны оригиналам -- [ ] Базовые тесты: round-trip упаковка/распаковка +- [ ] Рекурсивная архивация директорий с сохранением путей +- [ ] Unix mode bits — сохранение и восстановление при распаковке +- [ ] Пустые директории в архиве +- [ ] Обновление бинарного формата (TOC entry: тип записи, permissions) +- [ ] Обновление Kotlin декодера для директорий и permissions +- [ ] Обновление Shell декодера для директорий и permissions ### Out of Scope @@ -34,6 +50,9 @@ - Защита от опытных реверс-инженеров с IDA/Ghidra — целевая аудитория защиты: обычные пользователи - Потоковая архивация/деархивация — работаем с файлами целиком - Парольная защита — используется зашитый ключ +- Обратная совместимость с v1.0 архивами — формат меняется без backward compat +- Симлинки и хардлинки — только файлы и директории +- uid/gid и timestamps — только mode bits ## Context @@ -65,4 +84,4 @@ | Busybox shell как fallback | Работает везде на Android без дополнительных зависимостей | — Pending | --- -*Last updated: 2026-02-24 after initialization* +*Last updated: 2026-02-25 after milestone v1.1 start* diff --git a/.planning/STATE.md b/.planning/STATE.md index 2ac957c..775b3d6 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -2,44 +2,25 @@ ## Project Reference -See: .planning/PROJECT.md (updated 2026-02-24) +See: .planning/PROJECT.md (updated 2026-02-25) **Core value:** Archive impossible to unpack without knowing the format -- standard tools (7z, tar, unzip, binwalk) cannot recognize or extract contents -**Current focus:** All 6 phases complete. Project milestone v1.0 finished. +**Current focus:** Milestone v1.1 Directory Support ## Current Position -Phase: 6 of 6 (Obfuscation Hardening) -Plan: 2 of 2 in current phase (COMPLETE) -Status: All phases complete -- all decoders handle obfuscated archives -Last activity: 2026-02-25 -- Kotlin and Shell decoder obfuscation support - -Progress: [██████████] 100% +Phase: Not started (defining requirements) +Plan: — +Status: Defining requirements +Last activity: 2026-02-25 — Milestone v1.1 started ## Performance Metrics -**Velocity:** +**Velocity (from v1.0):** - Total plans completed: 10 - Average duration: 3.6 min - Total execution time: 0.6 hours -**By Phase:** - -| Phase | Plans | Total | Avg/Plan | -|-------|-------|-------|----------| -| 1. Format Specification | 1 | 7 min | 7 min | -| 2. Core Archiver | 2/2 | 6 min | 3 min | -| 3. Round-Trip Verification | 2/2 | 8 min | 4 min | -| 4. Kotlin Decoder | 1/1 | 4 min | 4 min | -| 5. Shell Decoder | 2/2 | 5 min | 2.5 min | -| 6. Obfuscation Hardening | 2/2 | 6 min | 3 min | - -**Recent Trend:** -- Last 5 plans: 4min, 3min, 2min, 3min, 3min -- Trend: stable - -*Updated after each plan completion* - ## Accumulated Context ### Decisions @@ -90,12 +71,10 @@ None yet. ### Blockers/Concerns -- RESOLVED: openssl enc with -K/-iv flags implemented in shell decoder; script fails gracefully if openssl missing -- RESOLVED: xxd/od auto-detection implemented in shell decoder (xxd primary, od fallback) -- RESOLVED: HMAC uses same key as AES in v1 (decided in Phase 1 spec, v2 will use HKDF) +None. ## Session Continuity Last session: 2026-02-25 -Stopped at: Completed 06-02-PLAN.md (Kotlin and Shell decoder obfuscation support -- all phases complete) +Stopped at: Starting milestone v1.1 — defining requirements Resume file: None