Хостинг неограниченного размера? Звучит как нечто фантастическое и невозможное по законам природы. Примерно как вечный двигатель. Но что, если такое возможно? (не вечный двигатель, конечно, а неограниченный хостинг).
Если подумать, ведь бесплатное хранилище неограниченного размера предоставляют десятки интернет-сервисов, от соцсетей до фотохостингов. Например, ограничение YouTube на размер одного видеоролика — 12 часов или 256 ГБ, но на количество видеороликов ограничений нет.
Теоретически нескольких видеороликов по 256 ГБ достаточно, чтобы спрятать в них зашифрованную копию своего SSD.
Единственное препятствие — они проверяют форматы файлов при загрузке, чтобы избежать злоупотребления сервисом. То есть чисто теоретически достаточно обойти эту проверку — и проблема решена. Но как её обойти?
Сразу приходит в голову вариант изменить расширение файла. Но сегодня такой вариант не проходит практически ни на одном хостинге, потому что они проверяют метаданные и содержимое файлов. Слишком легко отличить медиафайл от случайного набора бит.
Но что, если использовать методы стеганографии — и внедрять полезную нагрузку непосредственно в нативный медиафайл? И действительно, есть готовые инструменты для решения этой задачи. Вот некоторые из них.
Ещё раз подчеркнём — статья носит исключительно образовательный и чисто теоретический характер, материалы описанные в статье не являются руководством к действию и не нарушают законодательство.
YouTubeDrive
YouTubeDrive — это пакет для Mathematica, который перекодирует любые файлы в пиксели RGB. То есть любой поток данных просто транскодируется в видеопоток — а потом обратно. Программа написана пять лет назад чисто для проверки концепции, что такое возможно (PoC).
Промежуточный видеоформат создаётся с единственной целью — для видеохостинга.
То есть схема такая:
АРХИВ ФАЙЛОВ → ВИДЕО → YOUTUBE → и обратно АРХИВ ФАЙЛОВ
YouTubeDrive написан на Wolfram Language (язык Mathematica). Он кодирует/декодирует произвольные данные, а видео автоматически загружаются и выгружаются с YouTube.
Поскольку YouTube не накладывает никаких ограничений на общее количество видео, которые могут загружать пользователи, это обеспечивает фактически неограниченный хостинг. Правда, такой хостинг чрезвычайно медленный, потому что процедура кодирования/декодирования занимает время сначала на локальном ПК, а затем ещё на YouTube.
Вот код пакета. Разумеется, для его работы должна быть установлена сама программа Mathematica.
YouTubeDrive использует стандартные утилиты FFmpeg, youtube-upload и youtube-dl. Эти программы необходимо загрузить и установить отдельно, а перед первым использованием в пакете
YouTubeDrive.wl
(строчки 75–77) нужно указать места их установки:FFmpegExecutablePath = "FFMPEG_PATH_HERE";
YouTubeUploadExecutablePath = "YOUTUBE-UPLOAD_PATH_HERE";
YouTubeDLExecutablePath = "YOUTUBE-DL_PATH_HERE";
Например, таким образом:
75 | FFmpegExecutablePath = "C:\\ffmpeg.exe";
76 | YouTubeUploadExecutablePath = Sequence["python",
77 | "C:\\Users\\j0ker\\AppData\\Local\\Programs\\" <>
78 | "Python\\Python35\\Scripts\\youtube-upload.py"];
79 | YouTubeDLExecutablePath = "C:\\youtube-dl.exe";
После установки этих программ и изменения конфигурационных файлов можно открыть сам пакет YouTubeDrive.wl в программе Mathematica (через
File
⇨ Install...
⇨ Package
⇨ From File
⇨ YouTubeDrive.wl
).Перед использованием с помощью
youtube-upload
загружаем тестовое видео в свой аккаунт, логинимся в YouTube — и получаем токен OAuth
. Этот токен аутентификации понадобится для загрузки видеороликов через YouTubeDrive.Алгоритм работы YouTubeDrive довольно понятен. В пакете две основные функции:
- Функция
YouTubeUpload[bytearr]
кодирует массив данныхbytearr
как простое видео RGB, загружает на YouTube и возвращает ID видео.
По умолчанию кодируется 64×36 пикселя RGB, которые масштабируются в 2304 квадратика 20×20 пикселей кадра 1280×720. Значения RGB только 0 или 255, то есть получается три бита на квадратик. Значения RGB записываются в файлы .PNG, которые с помощью кодека FFmpeg склеиваются в валидный видеоролик MP4, способный пережить дальнейшее транскодирование на сервере YouTube.Monitor[Do[Image`ImportExportDump`ImageWritePNG[ "frame_" <> IntegerString[i, 10, numDigits] <> ".png", frame[i]], {i, numFrames}], ProgressIndicator[i, {1, numFrames}]]; If[numLeftoverBytes > 0, Image`ImportExportDump`ImageWritePNG[ "frame_" <> IntegerString[numFrames + 1, 10, numDigits] <> ".png", finalFrame]]; Run[FFmpegExecutablePath, "-i", "frame_%0" <> ToString[numDigits] <> "d.png", "-c:v", "libx264", "-preset", "ultrafast", "-vf", "scale=1280:720", "-sws_flags", "neighbor", "data.mp4"]; procInfo = RunProcess[{YouTubeUploadExecutablePath, "--title=\"DATA-" <> ToUpperCase@CreateUUID[] <> "\"", "data.mp4"}];
В реальности транскодер YouTube может случайно поменять местами значения отдельных пикселей 0 и 255, поэтому большие квадраты 20×20 выполняют роль механизма коррекции ошибок.
- Вторая функция
YouTubeRetrieve
возвращает видеоролик YouTube с указанным идентификаторомID videoid
, декодирует его и возвращает полученные данные в видео объектаByteArray
:RunProcess[{FFmpegExecutablePath, "-i", FileNameJoin[{tempDir, videoFile}], "frame_%d.png"}]; numFrames = Max[FromDigits /@ StringTake[FileNames["frame_*.png"], {7, -5}]]; rdata = Monitor[Join @@ Table[ByteArray[FromDigits[#, 2] & /@ Partition[Join @@ classify /@ Join @@ ImagePartition[ First@Image`ImportExportDump`ImageReadPNG[ "frame_" <> ToString[i] <> ".png"], 20], 8]], {i, numFrames - 1}], ProgressIndicator[i, {1, numFrames - 1}]]; lastParts = Join @@ ImagePartition[First@Image`ImportExportDump`ImageReadPNG[ "frame_" <> ToString[numFrames] <> ".png"], 20]; numPaddedBits = LengthWhile[ Reverse[Join @@ classifyLast /@ lastParts], EqualTo[1 / 2]]; rdata = Join[rdata, ByteArray[FromDigits[#, 2] & /@ Partition[ Drop[Join @@ classify /@ lastParts, -numPaddedBits], 8]]];
Вот и всё.
Примечание. На самом сервере YouTube обработка маленького видеоролика размером около 10 МБ занимает примерно 5–10 минут. Таким образом, сразу после завершения
YouTubeUpload[bytearr]
файл ещё недоступен для скачивания, нужно немного подождать. Только потом можно запускать вызов YouTubeRetrieve
.Пример использования
Насколько мы поняли, для примера автор программы взял из функции Бесселя простенький
ByteArray
и запустил YouTubeUpload
из нашего пакета. В программе Mathematica это делается примерно так:Результат кодирования массива данных объёмом чуть больше 18 КБ в видеоформат выглядит следующим образом:
Если интересно, можно скачать видеоролик и посмотреть на него, можно даже расшифровать вручную. Вместо
youtube-dl
для скачивания видео с YouTube сейчас обычно используют более продвинутый форк yt-dlp.Список доступных форматов:
yt-dlp --list-formats "https://www.youtube.com/watch?v=Fmm1AeYmbNU"
[youtube] Fmm1AeYmbNU: Downloading webpage
[youtube] Fmm1AeYmbNU: Downloading android player API JSON
[info] Available formats for Fmm1AeYmbNU:
ID EXT RESOLUTION FPS │ FILESIZE TBR PROTO │ VCODEC VBR ACODEC ABR ASR MORE INFO
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sb0 mhtml 48x27 │ mhtml │ images storyboard
139 m4a audio only │ 6.84KiB 54k https │ audio only mp4a.40.5 54k 22050Hz low, m4a_dash
249 webm audio only │ 700.00B 6k https │ audio only opus 6k 48000Hz low, webm_dash
250 webm audio only │ 700.00B 6k https │ audio only opus 6k 48000Hz low, webm_dash
140 m4a audio only │ 15.43KiB 136k https │ audio only mp4a.40.2 136k 44100Hz medium, m4a_dash
251 webm audio only │ 700.00B 6k https │ audio only opus 6k 48000Hz medium, webm_dash
17 3gp 176x144 6 │ 26.54KiB 222k https │ mp4v.20.3 222k mp4a.40.2 0k 22050Hz 144p
394 mp4 256x144 25 │ 25.28KiB 235k https │ av01.0.00M.08 235k video only 144p, mp4_dash
160 mp4 256x144 25 │ 82.20KiB 765k https │ avc1.4d400c 765k video only 144p, mp4_dash
278 webm 256x144 25 │ 72.33KiB 673k https │ vp9 673k video only 144p, webm_dash
395 mp4 426x240 25 │ 66.86KiB 622k https │ av01.0.00M.08 622k video only 240p, mp4_dash
133 mp4 426x240 25 │ 254.76KiB 2371k https │ avc1.4d4015 2371k video only 240p, mp4_dash
242 webm 426x240 25 │ 163.19KiB 1519k https │ vp9 1519k video only 240p, webm_dash
396 mp4 640x360 25 │ 89.98KiB 837k https │ av01.0.01M.08 837k video only 360p, mp4_dash
134 mp4 640x360 25 │ 363.73KiB 3386k https │ avc1.4d401e 3386k video only 360p, mp4_dash
18 mp4 640x360 25 │ ~440.62KiB 3524k https │ avc1.42001E 3524k mp4a.40.2 0k 44100Hz 360p
243 webm 640x360 25 │ 238.27KiB 2218k https │ vp9 2218k video only 360p, webm_dash
397 mp4 854x480 25 │ 116.18KiB 1081k https │ av01.0.04M.08 1081k video only 480p, mp4_dash
135 mp4 854x480 25 │ 469.24KiB 4368k https │ avc1.4d401e 4368k video only 480p, mp4_dash
244 webm 854x480 25 │ 298.72KiB 2780k https │ vp9 2780k video only 480p, webm_dash
398 mp4 1280x720 25 │ 150.16KiB 1397k https │ av01.0.05M.08 1397k video only 720p, mp4_dash
136 mp4 1280x720 25 │ 512.91KiB 4774k https │ avc1.64001f 4774k video only 720p, mp4_dash
22 mp4 1280x720 25 │ ~614.20KiB 4913k https │ avc1.64001F 4913k mp4a.40.2 0k 44100Hz 720p
247 webm 1280x720 25 │ 380.61KiB 3543k https │ vp9 3543k video only 720p, webm_dash
Скачиваем формат 22:
yt-dlp --format 22 "https://www.youtube.com/watch?v=Fmm1AeYmbNU"
[youtube] Fmm1AeYmbNU: Downloading webpage
[youtube] Fmm1AeYmbNU: Downloading android player API JSON
[info] Fmm1AeYmbNU: Downloading 1 format(s): 22
[download] Destination: DATA-34DFE96A-BFE6-4405-A9E3-CFB9959CD3CA [Fmm1AeYmbNU].mp4
[download] 100% of 527.20KiB in 00:00
На этом файле в Mathematica можно запустить функцию
YouTubeRetrieve
из пакета YouTubeDrive
, которая выполнит обратное преобразование.Конечно, такая схема кодирования не очень эффективна — примерно 1 минута видео на 1 МБ информации. Этот параметр можно легко увеличить на порядок (до 10 МБ на минуту видео), если вместо квадратов 20×20 внедрить какой-нибудь нормальный алгоритм коррекции ошибок.
YouTubeDrive — чисто экспериментальная программа. Автор подчёркивает, что ни в коем случае не поддерживает её использование в промышленных масштабах. Как мы уже сказали, программа написана пять лет назад чисто для доказательства концепции.
YouBit
Идея хранилища файлов на YouTube выглядит весьма привлекательно. Два года назад появилась программка fvid, которая кодирует файлы без необходимости устанавливать Mathematica. Из зависимостей ей нужен только FFmpeg и libmagic.
Она работает проще. Кодирование произвольного файла в видеоформат:
fvid -i [input file] -e
fvid -i [input file] --framerate 1 -e
fvid -i [input file] --password "xyz" -e
Декодирование:
fvid -i [input video] -d
В продолжение этой темы недавно вышла утилита YouBit. Так сказать, последнее достижение прогресса в данной области.
По сравнению с предшественниками — YouBit значительно усовершенствован. Можно сказать, что это новый уровень по качеству кодирования.
Во-первых, здесь автор отказался от использования цветовой субдискретизации, а всю информации кодирует только в канале яркости. В результате получаются чёрно-белые видеоролики, но зато кодирование и декодирование становятся заметно проще — и выполняются быстрее.
В канале яркости пиксели принимают значение от 0 до 255. Соответственно, если мы кодируем в пикселе один бит (параметр
bpp: 1
, то все значения от 128 до 255 воспринимаются как единица, а меньшие значения — как 0. Для примера, если кодировать в одном пикселе два бита (00, 01, 10 или 11), то весь диапазон яркости разбивается на четыре области (0–63, 64–127, 128–191, 192–255) и так далее. Чем больше бит на пиксель, тем меньше размер файла и выше вероятность некорректной расшифровки конкретного бита после транскодирования видео на серверах YouTube.Во-вторых, автор придумал оригинальный способ оптимизации видеороликов конкретно под специфический энкодер YouTube, чтобы повысить надёжность их последующего декодирования. Правда, теперь для успешного декодирования файлов уже необходимо их сначала залить на YouTube, а потом скачать результат.
В-третьих, YouBit работает с видео любого разрешения. Оптимально 1920×1080.
Наконец (в-четвёртых), автор реализовал функцию «нулевых фреймов» — вставки чёрных кадров между кадрами с полезной нагрузкой, что позволяет снизить битрейт примерно на 40% (и размер файла) при кодировании видео на сервере YouTube.
Использование:
python -m youbit upload C:/myfile.txt chrome
Аргумент
chrome
указывает, из какого браузера YouBit должен извлечь куки для аутентификации на YouTube (соответственно, этот браузер должен авторизоваться на studio.youtube.com/, открыть сессию и получить куку).Затем загрузка происходит непосредственно с помощью headless-браузера Selenium в фоновом режиме. Очень грамотный подход.
Скачивание и обратное декодирование видео:
python -m youbit download https://youtu.be/dQw4w9WgXcQ
Декодирование локального видео, скачанного с YouTube:
python -m youbit decode C:/myvideo.mp4
Все операции можно выполнять через Python API.
Пример видео:
Как мы уже говорили, ограничения YouTube на размер видеоролика — 12 часов или 256 ГБ. Если аккаунт не верифицирован, ограничение 15 минут.
Настройка YouBit по умолчанию на размер одного файла — 9 ГБ, но её можно скорректировать при желании.
Неограниченный хостинг в других местах
Неограниченные хранилища файлов предоставляют и другие сервисы, например:
- Telegram (ограничение по размеру файлов 2 ГБ, в платной версии 4 ГБ)
- Соцсети (любые файлы можно хранить под видом видеозаписей и фотографий), обычно там хостинг неограниченного размера
- Habrastorage
Для работы с этими «нетрадиционными хостингами» можно написать свой клиент/файл-менеджер — небольшую программку для закачки файлов через YouBit, чтобы не запускать её вручную.
В идеале хотелось бы добавить туда следующие функции:
- Поддержка разных хостингов (разные соцсети, фото- и видеохостинги), чтобы YouBit копировал видео с нашими файлами не только на YouTube, но и на другие хостинги, которые предоставляют неограниченное дисковое пространство бесплатно.
- Резервное копирование. Поскольку каждая площадка рассматривается как временная, должно быть предусмотрено избыточное дублирование.
- Грамотная синхронизация: обновление новых версий или новых файлов без переписывания всего архива.
Но это в идеале. В минимальном варианте хватит и простого скрипта, который в пакетном режиме просто кодирует через YouBit пару сотен файлов в формат MP4 — и заливает видеофайл на несколько видеохостингов.
Что касается хранения файлов на YouTube (и в других сервисах крупных корпораций) — суть сводится к тому, чтобы использовать инфраструктуру не совсем так, как это предполагается, но при этом совершенно легально. Повторюсь, если пользователь маскирует свои личные файлы под видеоролики и заливает их на публичный хостинг, он никак не нарушает законодательство ни одной страны. В любом случае это не коммерческая программа, а просто теоретический эксперимент, а повторять его или нет — решать вам.
НЛО прилетело и оставило здесь промокод для читателей нашего блога:
— 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.
Комментарии (95)
boulder
18.07.2022 11:41+10Что-то мне эти чёрно-белые видео напоминают. Вот недавно новейший телескоп снял похожую, казалось бы, хаотичную звёздную картинку. Хотя, подождите!..
Thane784
18.07.2022 11:49Кстати, пользоваться услугами вашего хостинга я бы тоже не стал. Если вы считаете, что легально обмануть того, кто предоставляет вам услуги - это нормально, и даже хвастаетесь на Хабре своим способом сделать это, может быть вы и с клиентами так поступаете ? Не считаю что нужно поддерживать такие действия. Эта статья, несмотря на высказывания вроде "Автор подчёркивает, что ни в коем случае не поддерживает её использование в промышленных масштабах", должна быть заминусована. "Не поддерживает", но тем не менее способствует, в том числе и в моральном виде, не говоря уже о предоставляемой информации к осуществлению технической возможности подобных действий. Данный материал способствует распространению мнения, что легальный обман - нормально, и это плохо. В том числе плохо и для репутации вашей же компании.
RalphMirebs
18.07.2022 12:10+13Где тут обман? Если физически можно загрузить файл, то нет вопросов. Автор не взламывает ничего у хостера. Или у Ютуба есть запрет на загрузку «хаотических » видеофайлов?
Thane784
18.07.2022 12:20+29Это злоупотребление крайне свободными правилами сервиса. Если каждый начнет делать так, как автор, то отсутствие ограничения на количество видеороликов станет коммерчески невыгодным и компания введет дополнительные запреты, что в конченом итоге повлияет на обычного пользователя, причем в негативную сторону. Я уже приводил как пример безлимитные напитки в Бургер Кинге - да они безлимитные, но нормально ли взять 19-литровую бутылку и переливать содержимое автомата туда ? Я считаю что нет. Если будет слишком много людей, считающих что да, то безлимит станет невыгодным для компании, а пострадаю в итоге от этого я, как обычный пользователь - исчезнет очень удобная для меня услуга.
RalphMirebs
18.07.2022 12:34+8В Кинге можно только в их стаканчики. Не знаю в какой стране льют в бутылки, но часто платит один, а наливают троим. Это нарушение. Если такое наблюдается — нужно поставить систему контроля в виде сотрудника и гонять зайцев.
Если введут запрет на число роликов — право компании. Или они добавят какие-то механизмы контроля содержимого, что тоже нормально. Но юридически пока нет запрета или даже предупреждения. А в Кинге есть и в этом большая разница.Thane784
18.07.2022 13:02+11Раньше было крайне легко зарегистрировать новый e-mail адрес без номера телефона, сейчас это сделать все сложнее - многие почтовые клиенты ограничивают такую возможность. Почему ? Потому что пользователи злоупотребляют данной возможностью и регистрируют тысячи бот аккаунтов. Недавно мне пришлось помучиться чтобы зарегистрировать вторую почту и это вина тех кто злоупотребляет сервисом. Ограничения ввести можно, но если они не слишком жесткие - "гонять зайцев", их всегда можно обойти. (Я бегаю быстрее). А введение очень жестких ограничений в первую очередь вредит мне как обычному пользователю - о чём я собственно и говорю. Злоупотребление сервисом влечёт к ответной реакции, негативно отражающейся на всех клиентов в целом. Возможно, ютубу прямо сейчас это не грозит (размеры жульничества не те), но тем не менее, я считаю, что подобное в принципе должно осуждаться.
vis_inet
18.07.2022 13:20+12Читал мнение, что привязку телефона при регистрации почты требуют совсем по другим причинам.
tlittle
19.07.2022 23:23Это вина исключительно российского законодательства, которая обязывает соц сети идентифицировать пользователей.
Tarakanator
20.07.2022 09:55Но при этом не обязывает сделать доступным телефон для пользователей.
В деревне поставил антенну для 4G интернета,интернет появился, а мой дядя столкнулся с проблемой, что не может получить СМС для подтверждения личности при регистрации, т.к. качество связи без антенны не позволяет даже оперативно принимать СМС.
Thane784
18.07.2022 13:08+5Система контроля и человек "гоняющий зайцев" будут требовать дополнительных денежных затрат. Ресторану придется повысить цены, чтобы окупить внедрение системы контроля, и выплачивать зарплату человеку "гоняющему зайцев". На меня, как человека, просто пришедшего поесть, это отразится негативно.
Didimus
20.07.2022 18:08Так человека поставят только если расходы на него будут ниже, чем убытки от зайцев
follow_the_wr
18.07.2022 13:20+25Ниже приведено несколько примеров действий, запрещенных на YouTube. Этот список не является исчерпывающим.
Публикация контента, обманным путем перенаправляющего зрителей на другой сайт.
Неоднократная загрузка одних и тех же материалов на один или несколько каналов.
Публикация большого количества контента, скопированного с других каналов.
Попытки заставить пользователей установить вредоносное ПО или посетить сайт, на котором могут быть украдены их данные.
Загрузка автоматически созданного некачественного контента.
Обещания денежных вознаграждений, подарков, бесплатного ПО или бонусов для игр за определенные действия, например скачивание каких-либо программ или приложений.
Добавление большого числа материалов, предназначенных для аффилированного маркетинга, на специально созданные для этого каналы.
Источник: https://support.google.com/youtube/answer/2801973?hl=ru&ref_topic=9282365#zippy=%2Cспам
iig
18.07.2022 15:08+5Загрузка автоматически созданного некачественного контента
Достаточно качественный черно-белый шум. ;)
Конечно, если кто-то пожалуется - грохнут со спокойной совестью.
covax80
18.07.2022 18:14+7Под это определение можно треть роликов на ютубе определить. Что является критерием качества? Ролик на 10 часов с навязчивой мелодией или качественный белый шум для экспериментов по сенсорной депривации?
TimsTims
18.07.2022 19:47+11Это правило и были создано для возможности удалить любое видео, которое им не понравится, и чтобы к ним потом не пришли с претензиями.
leok
18.07.2022 22:29Качественный белый шум не будет автоматически созданным. Ролик на 10 часов мне не жалко.
dartraiden
19.07.2022 00:30+5В Кинге можно только в их стаканчики.
И люди набирали в стаканчики, а потом переливали в канистры.
Там в видео прям характерная реплика «а чего ты вписываешься, это же не твоя компания».sim31r
21.07.2022 01:07Для большой компании эта потеря статистически не заметна. А то и в плюс пойдет, как реклама. Так же и ребятам что 5 литров пепси отлили она не нужна в таких количествах. Перепродать они её не смогут, выпить невозможно столько. Проблема надуманна. Как, например, катание в бесплатном лифте, можно злоупотреблять лифтом, но много ли желающих?
iliar
21.07.2022 09:01Лень искать фото, но таких "лайфхакеров" с ведёрками там было не оди и не два. В некоторых местах из них даже очереди скапливались. И обычным посетителям приходилось ждать пока очередная быдлосемейка наполнит все свои тазики и ведёрки.
Так что ИМХО. Основная проблема статьи в позиционировании. Если бы вместо тезиса "ищем халяву" было бы "интересно, а какой максимальной плотности данных получится добиться, прежде чем алгоритмы сжатия начнут портить информацию". Вроде мелочь, но другая подача и статья бы совсем по другому бы воспринималась.
tlittle
19.07.2022 23:22Можно только в их стаканчики. Поэтому из автомата набирается стакан, переливается в ведро (20-литровую бутыль), набирается стакан - переливается в ведро, набирается стакан... С формальной точки зрения правила соблюдены.
Firelander
18.07.2022 13:08+8Я думаю, автор вполне способен позволить себе оплатить облачное хранилище нужного ему размера, а все эти инструменты им создавались исключительно с точки зрения академического интереса. По-моему, это вполне интересная задача, разобраться в способах кодировании информации и оптимизировать алгоритм под конкретные условия реальной жизни (в данном случае алгоритм ютуба, но могло быть что угодно).
Выкладывать в общий доступ удобные инструменты для подобных злоупотреблений может быть конечно не очень хорошо, но автор явно не первооткрыватель в этой области, если это кому-то нужно и востребовано, подобные средства рано или поздно появились бы, да и наверняка что-то подобное уже существует в десятке вариантов.
Thane784
18.07.2022 13:17-3"если это кому-то нужно и востребовано оно рано или поздно появились бы," - вы считаете, что точка зрения "Если не я украду эту вещь, её украдет кто-нибудь другой, так что я ничего плохого не делаю", правильна ? С какими мотивами выкладывался этот пост, не столь важно - у автора были одни мотивы, а у людей прочитавших этот пост могут возникнуть уже совсем другие.
Firelander
18.07.2022 13:36+6Автор ничего не крадет, автор создает инструмент. Если кто-то будет пользоваться инструментом для злоупотреблений, то он и будет отвечать по закону (в данном случае ToS ютуба)
Thane784
18.07.2022 13:40-10Создавать и распространять инструменты для злоупотреблений это правильно ?
Serge78rus
18.07.2022 14:03+14Обычный пластилин для детского творчества может быть использован злоумышленником для снятия слепков с ключей потенциальных жертв. За это будем осуждать производителя пластилина? Список подобных аналогий можно продолжить до бесконечности.
DreamingKitten
18.07.2022 15:42+3Пластилин может быть использован и в мирных творческих целях, а у этого инструмента такие есть?
chyvack
18.07.2022 16:52+3Развитие навыков программирования и оптимизации алгоритмов?! Чем не "мирные творческие цели"?
DreamingKitten
18.07.2022 17:36+1Чувствую подмену тезиса я. Речь шла о конкретных применениях инструмента. Вы же аргументируете задачами более общего класса, для которых такой инструмент не специфичен. Проще говоря, развивать навыки и оптимизировать можно и на совершенно других задачах.
chyvack
19.07.2022 20:10оффтоп. Это мне напоминает моего учителя русского языка и тему правописания частицы "не". Пишется слитно, если можно подобрать слово синоним или словосочетание, а это можно сделать всегда! Так и здесь, можно придумать как использовать написание такого вида программ "в мирных творческих целях".
follow_the_wr
18.07.2022 13:53+3Неизвестно нарочно вы допускаете логическую ошибку или с умыслом, но разницу нужно понимать.
Производитель паяльника или утюга не несет ответственности за использование этими приборами в качестве орудий пыток или убийства, поскольку поставляет инструкцию с прямыми запретами
Производитель отмычки, перехватчика сигнала автобрелка как минимум должен быть готов к публичному осуждению, а как максимум понести уголовную ответственность
Thane784
18.07.2022 13:57-10Я с вашим последним комментарием согласен полностью. А как считаете чем отличается утюг от отмычки ? Наверное тем, что у утюга есть полезное, не вредящее обществу применение, и оно является основном для данного предмета. Как считаете, а основное предназначение предоставленного автором в статье полезно для общества ? Или наоборот, данный код - отмычка ?
follow_the_wr
18.07.2022 14:03+10Автор статьи сам ответил на данный вопрос:
"Единственное препятствие — они проверяют форматы файлов при загрузке, чтобы избежать злоупотребления сервисом. То есть чисто теоретически достаточно обойти эту проверку — и проблема решена. Но как её обойти?
Слишком легко отличить медиафайл от случайного набора бит.
Но что, если использовать методы стеганографии — и внедрять полезную нагрузку непосредственно в нативный медиафайл? И действительно, есть готовые инструменты для решения этой задачи. Вот некоторые из них."
Комментарии добавлять не буду
Thane784
18.07.2022 14:07-10Хорошо, даже если мы признаем что изготовления вредоносного кода в данном случае не происходит. Однако распространение его ведь всё равно имеет место быть ?
Max_JK
19.07.2022 09:49отмычку можно использовать для доступа к своему жилищу от которого был утерян ключ
перехватчики сигнала часто используются полицией в целях борьбы с преступностью
для любой вещи можно найти мирное применение, оружие для самообороны, бомбы для работ в шахте и т.д
tooler
18.07.2022 14:56+1Был POC драйвер для создания в системе виртуального диска, на котором всё хранилось в гуглопочте. Ужас что было, все злоумышленники начали использовать, акции рухнули, биткоин... а он было тогда?
На пороге катастрофы были, почта могла треснуть и открылась бы изнанка! Сейчас мы в такой же ситуации опять.
На гитхабе этому репо уже пять лет. Пять лет мир в опасности.Moraiatw
18.07.2022 16:40+1Помню этот софт. Тогда еще не было облачных файлохранилищ. Софт создавал в системе новый диск, при копировании на/c него, информация копировалась в/на гулопочту. Интересный был концепт.
Wexter
18.07.2022 14:28+1Тогда это видео вам точно не стоит смотреть https://www.youtube.com/watch?v=y2F0wjoKEhg
ermouth
18.07.2022 19:50+4Если каждый начнет делать так
Каждый не начнёт, и вы это прекрасно знаете.
Как и ни одного экспериментатора ваше удушливое морализаторство не остановит – и это вы тоже кстати знаете.
Есть такая детская сказка «Умная Эльза» (которая в самом деле дура) – так, просто вспомнилось.
Astroscope
18.07.2022 22:29+3крайне свободными правилами сервиса
Если вы про youtube, то пометка "сарказм" была бы желательна для тех многих, кто этот самый сарказм не распознал.
sim31r
21.07.2022 01:01Автор наоборот, привлек внимание к Ютубу. Его данные примерно одна миллиардная от содержимого Ютуба и вряд ли такое будет массово. Если будет массово, программисты на Ютубе вычистят такой мусор за 5 минут. Проблемы вами описанной не существуют. Можно подумать сейчас там только шедевры заливают.
Tangaroa
18.07.2022 14:26ютуб, бывает, удаляет файлы, кажущиеся бессмысленными. У них есть что-то насчёт этого в ToS. Мне, например, снесли видеофайл с часом тишины на фоне пустого экрана.. мол, "сомнительное содержание". Потом, правда, восстановили -- уже не помню, как :)
Zangasta
18.07.2022 12:26+3Данный материал способствует распространению мнения, что легальный обман - нормально
Начнем с того, что это называется "злоупотребление сервисом" --- и это действительно проблема. Самый яркий пример --- шведский стол. Количество бесплатной еды ограниченно и посетители, набирая полные тарелки --- и выбрасывая еду --- вредят остальным посетителям и владельцам.
Но именно в этом случае --- злоупотребления нет. Автор статьи увидел возможность злоупотребления и рассказал о ней. В случае, если этот способ перестанет быть курьёзом --- владельцы Тюбика решат проблему.
S1re10k_4f99
19.07.2022 09:07+3Да если бы кто-то существенно этим злоупотреблял. Даже если предположить, что все прочитавшие статью начнут сливать все свои данные таким образом в Ютуб, то всё равно обычный стример, который стримит 4к60 по 2-3 часа по 3-4 раза в неделю, скорее всего переплюнет по объему данных всех этих хранителей.
К тому же, много раз видел утверждение, что трафик обходится ютубу куда дороже чем хранение. А какой будет трафик у таких хранителей? Да около нулевой, так-как они явно не будут выкачивать эти данные туда сюда очень часто. Да даже если предположить, что будут выкачивать по 10 раз в день - это всё равно ничто по сравнению с количеством просмотров у стримеров.
Плюс, есть вероятность, что Ютуб хранит все загруженные видосы в оригинале или почти в оригинале, и только для просмотра выдаёт пошакаленное. Это предположение основано на том, что некоторые видосы 10 летней давности, перекодированные в av1, имеют качество лучше, чем в других кодеках, а чтобы так сделать нужно иметь оригиналы. Значит объемы хранения для него совсем не критичны и как бы вы не старались, всё равно не сможете как либо повлиять на Ютуб.
JPEGEC
18.07.2022 11:57+9Я правильно понимаю что перекодировка видео самим ютубом не мешает восстановить первоначальную информацию?
momoru_kun
18.07.2022 12:14-2Верно, потому что инфа пишется в RGB значения пикселей
Skigh
18.07.2022 12:45+14А перекодировка разве не меняет RGB значения пикселей?
Вообще, вопрос ютубовской перекодировки, её влияния на доступную пропускную способность, совместимость с различными способами кодирования и т.д. не раскрыт.Static_electro
18.07.2022 13:06+6да, интересней было бы с рассказом про перекодировку, контроль целостности и вотэтовсё
HappyGroundhog
18.07.2022 12:39+1Очень напоминает загрузку Spectrum с кассеты) Наверняка можно в качестве аудиодорожки положить к роликам привычный цифровой шум.
dravor
18.07.2022 13:13+5Потом видеохостинг пережмет видео в другой кодек и прощай бекап всех данных!
hogstaberg
18.07.2022 14:36+1Так тут же явно генерируются здоровенные квадраты, имеющие по осям RGB четко либо максимальное, либо минимальное значения. Это нужно чрезвычайно шакально пережимать для потери возможности раскодировать назад.
follow_the_wr
18.07.2022 15:10Это про 18 КБ массив данных говорите про здоровенные квадраты?
Я думаю выше имелся ввиду масштаб позначительней
dravor
18.07.2022 17:05+1ToneMapping, улучшение с помощью новоизобретенного AI (чик-чик и в продакшн — что может пойти не так?), добавление-убирание эффекта Motion Blur, еще один умник налепил стеганографией скрытые логотипы ТыТруба по всему видео «чтоб не воровали» — причин ой как много. Это только если дублировать данные в кадре по 2-3 раза, для защиты от подобных возможных потерь.
CoolCmd
18.07.2022 13:21раньше вроде ютуба хранила исходный файл видео. сейчас это не так?
chupasaurus
18.07.2022 13:51С 2009 года как минимум всё сами пережимают.
CoolCmd
18.07.2022 14:25+2пережимают для показа, но исходный файл гугл хранит, и его можно скачать, например в google takeout (название по памяти пишу)
chupasaurus
18.07.2022 14:41Название правильное, на счёт исходника большие сомнения, знакомый в субботу вытаскивал из Photos содержимое и там всё отшакалено, возможно какое-то время исходники таки хранятся. При переезде на VP9 пережимали из своих h264, а не исходников.
S1re10k_4f99
19.07.2022 09:31Странно, каким образом вы заметили, что пережимали из своих h264? Я например видел много видов, у которых в vp9 лучше качество чем в h264, значит в vp9 пережимали всё таки из исходников, ну или близкого к ним качества. Так же сейчас с av1 тоже самое. Есть видосы 10 летней давности, пережатые в av1 с лучшим качеством чем в vp9.
Но конечно таких видосов мало, в основном это исключения, потому что в основном у vp9 и av1 битрейт меньше чем у h264 и за счёт меньшего битрейта и качество хуже. Например такие соотношения размеров довольно часто встречаются: h264 - 100мб, vp9 - 75мб, av1 - 60мб. Конечно в таком случае vp9, с большой вероятностью хуже чем h264, а av1 хуже чем vp9. А когда соотношения например такие: h264 -100мб, vp9 - 85мб, av1 - 76мб, тогда ситуация обратная.
t38c3j
18.07.2022 20:08Кажется оригиналы они не хранят, я загружал ролик размером 2гб в одном кодеке а в бекапе данных он уже в другом и весит 9гб, с фото так же, как ниже подметил человек, даже по программе для первых пикселей хранение оригинала не совсем оригинал , оно да в высоком качестве но это не оригинал байт в байт
Alexsey
19.07.2022 04:16Во времена когда ютуб только-только запускал 720p/1080p/4k они автоматически делали эти разрешения доступными для видео, которые были загружены в них до того как ютуб начал официально их поддерживать, то есть оригиналы для перекодирования в новые поддерживаемые разрешения у них оставались. А вот давали ли они когда-либо скачивать эти файлы я уже сказать не могу.
Думаю что с текущими объемами от идеи хранения оригинальных файлов все же отказались.
CoolCmd
19.07.2022 13:47только что скачал весь свой ютубовский канал, всего 13 гб, самый большой файл 2,8 гб. видео оригинальное, не пережато. такие дела...
Didimus
20.07.2022 18:13Причём для обычных пользователей очень шакалистое пережатие, все детали съедает. А у топовых блогеров такого не происходит
dimka11
20.07.2022 18:52От популярности видео зависит. Если видео не 4K/2K, то пока не наберётся какое-то количество просмотров, оно будет в h.264, а не VP9. Имеет смысл в видеоредактор делать апскейл с 1080p до 4k и уже в таком виде загружать.
dimka11
20.07.2022 18:54Со стримами ещё хуже, live идёт в 1440p VP9, а запись 1080p h.264, притом, что сначала VP9 доступно, а потом пропадает
follow_the_wr
18.07.2022 14:17+2В идеале хотелось бы добавить туда следующие функции:
...
Но это в идеале. В минимальном варианте хватит и простого скрипта, который в пакетном режиме просто кодирует через YouBit пару сотен файлов в формат MP4 — и заливает видеофайл на несколько видеохостингов.
Автор, в идеале хотелось бы для чего? И хватит в минимальном формате для чего?
Вы же теоретически проверяете работоспособность инструментов и не призываете к действиям, нарушающим условия сервиса
Raja55
18.07.2022 15:44-2Формально, после трансляции карты звездного неба, можно делать вставки с видами природы. Т.о. исключается нарушение пункта правил: Загрузка автоматически созданного некачественного контента.
Так приятно будет осознавать, что после заставки с котиками идет трансляция второй серии любимого кинофильма от бразерс, представленной в виде картинки с далекими звездами.
Alexsey
18.07.2022 16:01+1Игрался с чем-то подобным ради интереса. Просто конвертировал поток бит в квадраты на поле 640x480. Но у меня максимально неэффективно было - квадраты сделаны достаточно большими чтобы пережимание особо ничего не сломало так что 1.7мб кодировались в 12 минут видео.
ALexhha
18.07.2022 16:05+1А что будет, когда прилетит страйк на подобного рода видео ? Я так понимаю заблокируют все видео на аккаунте, не уверен дают ли их скачивать в таком случае
RalphMirebs
18.07.2022 20:07+20Первые двадцать секунд видео: приходит мужик в офис, показывает флешку и говорит — сейчас будем проводить сеанс цветотерапии. Вокруг компа расставляются кресла, народ садится, флешка вставляется в комп, камера наезжает на экран, после чего начинается два часа цветного мельтешения. Последнее двадцать секунд: камера отьезжает назад, мужик и зрители спят в креслах. Короткие титры.
(при декодировке начало и конец ролика просто не анализируются)
1MK-Ultra
19.07.2022 10:43+1Зря вы все спорите. Уже давно есть дармовые файлохранилища. И хранить там можно гораздо больше чем 250Гб * X. Человек привел, как пример, ради эксперименту.
ciuafm
19.07.2022 12:06"дармовые файлохранилища" - А с этого места пожалуйста поподробнее.
Кстати удивлен что никто не подумал о том, что сжатие видео начинается с конвертации в YUV 4:2:2 или что-то подобное. Поэтому картинки нужно генерировать опираясь на это , а не RGB 8:8:8.
Balling
19.07.2022 19:14Все видео на youtube 4:2:0. Как и везде, на Netflix, на Apple TV+, все Blu-ray. 422 и 444 это тоьбко некоторые спутниковые фиды (т.е. между двумя спутниками, а не для конечного пользователя) и камеры не в телефонах.
Можно обойти, кодируя в 4k 420. Это как раз 444 1080p если отбросить 3/4 Y plane.
KrivisKrivaitis
20.07.2022 08:36Покупка шары в безлимитном Google Teams Drive, цена вопроса раньше была $1, сейчас повыше. Это работает до сих пор, как ни странно.
Все сказанное про "из-за таких как вы", конечно же применимо к этому способу. :)
ViktorYar
20.07.2022 15:13Признак мастерства или...? Пилить буравчиком и сверлить ножовкой...
Я бы ещё вспомнил про передачу скрытых сообщений. Помню для фото: фото1+файл сообщения = фото2. При этом, если сообщение << (значительно меньше) фото1, то котик на фото2 похож на котика на фото1. Обратно: сообщение = котик2 "вычесть" котик1. Для того чтобы вскрыть сообщение надо а) догадаться, что фото содержит сообщение б) знать правила сложения/вычитание т. Е. Шифрования в) владеть ключом (фото1). При переносе этой концепции к видео ещё попутно достигаются аксиомы криптографии об абсолютной устойчивости ко взлому (длинна ключа больше длинны сообщения + ключи не повторяются)..
P. S. For example - Gifshuffle
Thane784
Вот из-за таких, как вы, в Бургер Кинге и убрали автомат с безлимитными напитками.
GenkaOk
Убрали? У нас в городе наоборот появился несколько лет назад, только теперь там Байкал и дюшес.
pehat
Солонки с кодовыми замками сделали, ага.
myhambr
Один стаканчик и точка.
И вообще, не хватает звука загрузки с ленты ZX Spectrum :)
Ndochp
В нашем фудкорте — объявления нет, долив через продавцов.