Программист обхитрил Google гениально — превратил YouTube в бесплатное облако для хранения любых файлов

Программист обхитрил Google гениально — превратил YouTube в бесплатное облако для хранения любых файлов

Как спрятать ваши документы в фейковом ролике?

image

Разработчик Брэндон Ли выпустил открытый инструмент yt-media-storage, который позволяет хранить произвольные файлы на YouTube, преобразуя их в видеоформат без потерь. Проект появился на GitHub и вызвал живое обсуждение в сообществе.

Принцип работы выглядит необычно, но технически обоснован. Любой файл (будь то документ, архив, образ диска или база данных) разбивается на фрагменты и кодируется в видео с использованием кодека FFV1 в контейнере MKV. Это полностью lossless-формат, то есть при декодировании вы получаете идентичную копию оригинального файла. Видео создаётся в разрешении 3840×2160 пикселей при 30 кадрах в секунду, после чего его можно загрузить на YouTube как обычный ролик. Когда файл понадобится, достаточно скачать видео и декодировать его обратно.

Для повышения надёжности хранения Ли интегрировал фонтанные коды (ещё называют «кодами нефиксированной скорости») Wirehair. Это механизм избыточного кодирования, который добавляет дополнительные данные в программу на всякий случай. Если часть видео повредится при обработке YouTube или возникнут артефакты сжатия, фонтанные коды позволяют восстановить оригинальный файл даже при потере некоторых пакетов данных. Это критически важно, учитывая, что YouTube применяет собственную обработку к загружаемому контенту.

Особое внимание уделено безопасности. Инструмент поддерживает опциональное шифрование файлов с помощью библиотеки libsodium и алгоритма XChaCha20-Poly1305. Пользователь задаёт пароль при кодировании, и даже если видео будет публично доступно на YouTube, прочитать содержимое без знания пароля невозможно. Это позволяет использовать публичные аккаунты для хранения приватных сведений.

Проект предлагает 2 способа использования. Консольный интерфейс подойдёт тем, кто привык работать в терминале. Команды выглядят предельно просто. Для кодирования файла в видео достаточно выполнить:

./media_storage encode --input document.pdf --output video.mkv

Если нужно зашифровать файл, добавляется флаг шифрования:

./media_storage encode --input archive.zip --output video.mkv --encrypt --password mypassword

Декодирование выполняется обратной командой:

./media_storage decode --input video.mkv --output restored_file.zip

Для тех, кому удобнее графический интерфейс, есть отдельное приложение media_storage_gui на базе Qt6. Оно поддерживает пакетную обработку — можно добавить в очередь сразу несколько файлов, выбрать выходную директорию и запустить массовое кодирование. В интерфейсе отображаются индикаторы прогресса для каждой операции, статусные сообщения и подробный журнал всех действий. Все операции выполняются в отдельных потоках, поэтому интерфейс остаётся отзывчивым даже при обработке больших файлов.

Технически проект собирается из исходников с помощью CMake и требует современный компилятор с поддержкой C++23. Зависимости включают FFmpeg для работы с видео, libsodium для криптографии, OpenMP для параллельных вычислений и Qt6 для графического интерфейса. Ли предоставил подробные инструкции по установке для Ubuntu, Fedora, Arch Linux, macOS и Windows.

Процесс сборки стандартный для CMake-проектов:

mkdir build
  cmake -B build
  cmake --build build

После компиляции получаются 2 исполняемых файла — консольный media_storage и графический media_storage_gui.

Для тех, кто не хочет собирать проект самостоятельно, Ли настроил CI/CD конвейер, где можно скачать готовые артефакты сборки для обеих версий приложения. Правда, для запуска всё равно понадобится установить разделяемые библиотеки — FFmpeg, Qt6 и libsodium.

В документации проекта есть раздел с решением типичных проблем. Например, если при кодировании возникает ошибка "failed to write header", это означает, что версия FFmpeg слишком старая — для использования кодека FFV1 с контейнером MP4 нужна как минимум 8-я версия. Альтернатива — использовать контейнер MKV вместо MP4.

Очевидно, практическая применимость такого решения вызывает вопросы. YouTube не предназначен для хранения произвольных данных и не даёт никаких гарантий сохранности контента, который вы загрузите. Видеохостинг может удалить ролики по разным причинам — от нарушения правил до технических сбоев. Кроме того, неясно, как платформа отреагирует на массовую загрузку видео, которые по сути являются закодированными файлами, а не настоящим видеоконтентом.

Это скорее proof-of-concept, показывающий техническую возможность такого хранения, чем готовое решение для продакшена. Проект распространяется под лицензией GNU GPL v3, исходный код полностью открыт и доступен на GitHub.