Русский | English version
Твои файлы. Твоя сеть. Никого лишнего.
Приватная передача файлов телефон ↔ ПК в локальной сети (Wi-Fi) без интернета, мессенджеров, сторонних серверов и облачных хранилищ. Телефон ↔ телефон — через общий хаб на ПК: один загружает через «Отправить», второй забирает через «Получить».
Warning
Проект находится в стадии активной альфа-версии (v0.1.0). Предназначен исключительно для локальных сетей (домашний Wi-Fi, локальная офисная сеть, мобильная точка доступа). Не выставляйте порт сервиса наружу в глобальный интернет без VPN. Перед загрузкой файлов сверяйте отпечаток TLS.
- Скачайте
HushDrop.exeиз Releases. - Запустите двойным кликом или из терминала:
HushDrop.exe --portable
- Отсканируйте камерой смартфона QR-код, появившийся в консоли (оба устройства должны быть в одном Wi-Fi).
- В открывшемся PWA введите 6-значный PIN и проверьте отпечаток TLS.
- Готово! Перетаскивайте файлы в окно браузера для передачи.
Портативность 100%: В режиме
--portableвсе сертификаты, временные чанки и скачанные файлы сохраняются строго в папку./dataрядом с бинарником. Запись в системный реестр Windows или%APPDATA%не производится. Программа может запускаться напрямую с USB-флешки без прав администратора.
docker compose up --buildИнтерфейс будет доступен по адресу https://<lan-ip>:8443.
Сверка отпечатка исключает атаку типа «Человек посередине» (MITM) в недоверенном Wi-Fi:
- При старте на ПК в консоли выводится строка вида:
🔒 TLS 1.3 Fingerprint (SHA256): ED:5B:3F:AD:D2:... - При сканировании QR-кода отпечаток передается в ссылке (
&fp=...). - В веб-интерфейсе смартфона в окне ввода PIN отображается отпечаток сервера:
- Если хэш совпадает со ссылкой из QR, загорается зелёный бейдж: «Сверен с QR».
- Сверьте первые 4 и последние 4 символа с экраном ПК. При совпадении соединение гарантированно установлено напрямую с вашим компьютером.
- Строго LAN-Only (RFC 1918): Любые входящие подключения вне частных диапазонов (
10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,127.0.0.1,::1) мгновенно отклоняются с кодом403 Forbidden. - TLS 1.3 с проверкой Fingerprint: Самоподписанный ECDSA P-256 сертификат генерируется при первом запуске. Отпечаток SHA-256 отображается в консоли и сверяется клиентом при подключении через QR.
- E2E поверх TLS (PFS): Эфемерные ключи X25519 и AES-256-GCM сессионные ключи хранятся исключительно в оперативной памяти (RAM). При перезапуске сервера все сессии мгновенно инвалидируются.
- Защита от перебора PIN: 6-значный PIN имеет TTL 10 минут. 5 неверных попыток ввода подряд блокируют IP-адрес клиента на 5 минут.
- Rate-Limiting: Ограничение 20 запросов в минуту на каждый IP-адрес. При превышении возвращается
429 Too Many Requests. - Защита памяти (< 200MB RAM): Чанковая передача по 4MB со сквозной записью на диск через потоковый буфер 64KB. Передача файлов размером до 5GB не перегружает оперативную память.
- Подтверждение опасных расширений: Исполняемые файлы и скрипты (
.exe,.bat,.ps1,.sh,.msi) помечаются флагом безопасности и требуют явного согласия пользователя перед загрузкой. - Кнопка «Забыть всё» (
POST /api/revoke): Мгновенно обнуляет активные ключи в RAM, инвалидирует сессии и очищает переданные временные файлы. - Маскирование в логах: IP-адреса и имена файлов маскируются (
192.168.***.***,fi***.zip), предотвращая утечку метаданных. Generic HTTP 500 без stacktrace. - Никакой телеметрии и внешних CDN: Приложение полностью автономно и работает в изолированной сети без выхода в интернет.
Все закрытые эндпоинты требуют заголовок Authorization: Bearer <access_token> (кроме /api/pair, /api/pair/info, /health и статики).
| Метод | Эндпоинт | Описание |
|---|---|---|
GET |
/health |
Проверка доступности сервиса |
GET |
/api/pair/info |
Получение TLS-отпечатка и оставшегося времени сопряжения |
POST |
/api/pair |
Сопряжение по PIN и X25519: возвращает пару {accessToken, refreshToken, serverPubKey} |
POST |
/api/pair/refresh |
Обновление токена доступа по refresh-токену |
GET |
/api/files |
Список полученных завершенных файлов |
POST |
/api/upload |
Загрузка чанка 4MB (X-File-Id, X-Chunk-Index, X-Total-Chunks) |
GET |
/api/download?id=... |
Потоковое скачивание файла с поддержкой HTTP Range (bytes=...) |
POST |
/api/revoke |
Инвалидация всех сессий, обнуление ключей и удаление файлов |
Требуются Go 1.22+ и Node.js 18+.
# Сборка с автоматической упаковкой во фронтенд и директорию ./dist:
# Для Windows:
powershell -ExecutionPolicy Bypass -File .\scripts\build.ps1
# Для Linux / macOS:
chmod +x ./scripts/build.sh
./scripts/build.sh- Лицензия: MIT
- Политика раскрытия уязвимостей: SECURITY.md