OpenAI облажались: как я получил доступ к видео Sora без водяных знаков за один вечер

Специальный корреспондент
Собака

Собака

Пресс-служба
Ветеран пробива
Private Club
Регистрация
13/10/15
Сообщения
61.369
Репутация
64.540
Реакции
295.298
USDT
0




(ссылка на гитхаб и на готовый продукт - в конце статьи.) OpenAI добавляет водяной знак на все видео из Sora. Типа защита. Только вот оригиналы без водяных знаков лежат на тех же серверах — и забрать их может любой авторизованный пользователь. Я написал расширение, которое это делает в один клик. Рассказываю, как нашёл и почему это вообще работает.



С чего все началось:​




Я не такой частый юзер Sora, но когда увидел, что люди ПРОДАЮТ доступ к видео без водяных знаков — сначала подумал, что они сделали машинное обучение и фотошопом каждый кадр обрабатывают. Но когда я попробовал - результат был готов за 1 секунду. В тот момент я осознал: ЗНАЧИТ ВИДЕО ЛЕЖАТ НА СЕРВЕРАХ. Во мне проснулся инстинкт хакера, и я начал искать ДЫРУ.



Первым делом я полез изучать вкладку Network, пробуя различные методы тыка туда-сюда. Всё что удалось оттуда получить - это подтверждение, что да, оригинал видео без водяных знаков есть на сервере.



Например, при открытии видео мы видим запрос на получение медиафайла: /backend/project_y/post/s_69491ee99e408191addbc9b74004ebca/tree?limit=20&max_depth=1

Который и отдаёт URL для видео с водяным знаком, но в том же ответе присутствуют и другие поля:



"encodings": {
"source": {
"path": " "
},
"source_wm": {
"path": " "
},
"endcard_wm": null,
"thumbnail": {
"path": " "
},
"unfurl": {
"path": " "
},
"md": {
"path": " "
},
"gif": {
"path": " "
}
},



Нас интересует поля source и source_wm, URL на видео без водяного знака и с водяным знаком соответственно. Проблема в том, что OpenAI в оба поля вставляют одинаковый URL. Но само наличие поля source указывает на то, что изначально оригинал там был - а значит, вероятно, до сих пор где-то есть.

Первым делом я подумал - ха, так можно просто попробовать подобрать URL, вставляя нужный gen_id/task_id/post_id. OpenAI использует целых три идентификатора для обозначения видео. Но ничего из этого не получилось, потому что в каждом URL присутствует параметр подписи (signature), который генерируется на стороне сервера и который невозможно брутфорсить.

Значит проблема где-то в другом месте...



Возвращение к истокам​




Спустя пару часов безуспешных попыток я вдруг вспоминаю: стоп, у них же был другой сайт! Не зря этот называется Sora2 - на первом я что-то не припомню водяных знаков, а аккаунт тот же!

И вот я иду на старый сайт Sora, открываю старое видео - запрос уже другой: /backend/generations/gen_01kbk5p1s5f9pb63q81sx9atax



В нем используется gen_id вместо post_id. Я подумал - это оно! Но когда я получил gen_id для видео из новой Sora и попытался выполнить запрос с ним - получил ошибку. Хм, значит снова мимо, едем дальше.

Дальше я начал смотреть - а что еще всплывает во вкладке network?
Я при открытии сайта я увидел странный запрос: /backend/notif?limit=10



Который возвращает всю нашу библиотеку (и Sora1, и Sora2) во всех возможных качествах, включая тот самый source, который Sora2 не хотела отдавать:



"encodings": {
"source": {
"path": " ",
"size": 5938502,
"width": 1280,
"height": 704,
"duration_secs": 10.1,
"ssim": 0.9935621,
"az_path": null,
"codec": "h264"
},
"source_c2pa": null,
"md": {...},
"ld": null,
"thumbnail": {...},
"link_thumbnail": {...},
"spritesheet": {...},
"gif": {...},
"mp3": {...},
"source_wm": {
"path": " ",
"size": 5929815,...
},



То есть endpoint для уведомлений отдаёт то, что основной API прячет. Классика.



Открываем видео по ссылке - да, это оно. Видео, сгенерированное на новом сайте Sora2 без водяного знака!








Ссылки​




Chrome Web Store:



GitHub:








Источник
 
  • Теги
    sora
  • Назад
    Сверху Снизу