Pepega File Share

анонимный обменник файлами

Залей файл — получи приватную ссылку

Любой файл, хоть на гигабайты. Мы режем его на части и раскладываем по облачному хранилищу, а тебе отдаём одну короткую ссылку. Делись ей с кем хочешь.

  1. 1 · Загрузка

    Файл бьётся на части и уходит в облако. Ничего не хранится у нас — только ссылка на части.

  2. 2 · Пароль (по желанию)

    Задай пароль — файл шифруется прямо в браузере (AES-256). Пароль на сервер не уходит.

  3. 3 · Ссылка

    Получаешь ссылку с 16-значным id. Без неё файл не найти и не скачать. Список нигде не светится.

Шифрование AES-256-GCM в браузере. Забудешь пароль — файл не расшифровать, восстановить нельзя.

API

Всё, что делает сайт, доступно по HTTP. Ответы об ошибках — JSON {"error": "..."}.

POST /api/uploads

multipart/form-data: file — сам файл (уже зашифрованный, если нужно), encryptedtrue|false. Файл режется на части и уходит в облако. Ответ — поток application/x-ndjson: события start, по одному part на часть, в конце done с ссылкой (или error).

curl -N -F "file=@video.mp4" -F "encrypted=false" \
     https://fsx.pepega.pw/api/uploads
# …
# {"event":"done","id":"<16 симв>","shareUrl":"https://fsx.pepega.pw/<id>",
#  "parts":3,"fileSize":268435456,"encrypted":false}
GET /api/shares/{id}

Метаданные шары. CDN-ссылки на части не отдаются — только владелец ссылки качает байты.

{"id":"…","originalName":"video.mp4","fileSize":268435456,
 "encrypted":false,"parts":3,"downloads":0,
 "uploadedAt":"2026-09-14T…Z","downloadUrl":"https://fsx.pepega.pw/<id>/download"}
GET /{id}/download

Отдаёт собранный файл потоком (ничего не буферится в памяти). Если шара зашифрована — это шифротекст, расшифровку делает клиент.

curl -L -o out.bin https://fsx.pepega.pw/<id>/download
Формат шифрования (когда encrypted=true)

Шифруй/расшифровывай сам, сервер ключа не знает. Тело файла:

"PFS1" (4 байта) | salt (16) | iv (12) | AES-256-GCM(ciphertext+tag)
key = PBKDF2-HMAC-SHA256(password, salt, iterations=200000, dkLen=32)