Немного копнуть
Перед тем как исследовать чужие файлы, стоит изучить систему поближе, поэтому я закачал видеоролик на вконтакте, сделал его публичным, а урл на видео скормил сервису videosaver.ru. Сервис хороший, потому как любезно предоставил мне прямую ссылку на мой файл.
Далее, свое публичное видео я сделал крайне приватным (только для себя), и попробовал снова скачать файл напрямую с завершенной сессией. Ага, качается. Это значит, что сервера на раздаче видео не производят проверки на приватность (и правильно делают, потому как это надо делать в другом месте).
Thumbnail это все
Ссылка на мой публичный, а ныне приватный ролик выглядит как:
551.gt3.vkadre.ru/assets/videos/08e8e26a100647241.vk.flv
в которой самая интересная часть — 08e8e26a100647241. Это явно хеш и вычислить его врядли получится, а значит необходимо найти этот хеш на сайте — в исходниках, в коментах, где угодно. Просмотр исходных кодов страниц со списком моего видео и при просмотре видео ничего не дало, но при этом видно, что thumbnail видеоролика генерируется скриптом:
vkadre.ru/get_thumbnail?vkid=100647241&vtag=08e8e26a&size=160
id ролика и прочее нас не интересует. Главное, что этот скрипт выдал нам прямой линк к картинке:
551.gt3.vkadre.ru/assets/thumbnails/08e8e26a100647241.160.vk.jpg
и да, вот он наш хеш (08e8e26a100647241), который мы наблюдали в ссылке на видео. Понятное дело, теперь можно связать любой thumbnail с частью полного пути к flv файлу.
Путь к файлу
Если название файла можно получить из названия картинки можно, то теперь необходимо достроить остальной путь — название сервера и субдиректории. Субдиректории все одинаковые и отличия в ссылках только в хостах. Вцелом, все ссылки на видео можно описать как
http://[0-9]+.gt(2|3).vkadre.ru/assets/videos/[0-9a-z]{,16}.vk.flv
Нас интересует часть до vkadre.ru, потому как с хешем все ясно. Предположив, что на выдаче видео 2000 серверов (с крутым запасом) сканируем все хосты xxx.gt2.vkadre.ru и xxx.gt3.vkadre.ru на предмет ip адреса, где xxx от 1 до 1000.
Оказалось, что у вконтакте около 250 серверов (уникальных ip) на выдачу видео (возможно также они хостят и аудио, не проверял). Имея эти 250 серверов делаем простой перебор на скачивания файла:
http://[айпиадрес из пула]/assets/videos/[хеш из картинки].vk.flv
Если файл физически не найден, сервер выдаст дефолтный flv ролик на 300 килобайт с какой-то стремной музыкой. То есть, любой файл отличный по размеру от дефолтного и есть искомый ролик, а файл находится не больше чем через ~250 запросов.
Как это исправить
сделать проверку на доступ в скрипте /get_thumbnail.php и если прав нет, то показывать дефолтную картинку, мол тут дела личные и нечего смотреть превью. В дополнение к этому не стоит вообще показывать видео в списках, если его невозможно посмотреть.
update
Спасибо kabachok
более простой способ получения хеша
/get_thumbnail?vkid=100647241&vtag=08e8e26a&size=160 = 08e8e26a 100647241
это значит, что хеш впринципе публиковать нельзя.

