Тема: Извлечение значений Codec_a и codec_b из файла uppod.swf
Эта тема была создана специально для подробного объяснения, как именно доставать значения таблиц замен из файла флеш плеека uppod. Была выделена из темы про uppod по просьбе читателей.
Чтобы подсмотреть значения таблиц замен в самом файле флеш плеера uppod нам понадобятся:
1) Sothink SWF Decompiler или Flash Decompiler Trillix (для декомпиляции файлов swf)
2) Установленный плагин Adobe Flash Player ActiveX (нужен для работы вышеуказанных программ)
3) Любой современный браузер.
План действий:
1) На странице фильма, где мы знаем, что используется uppod плеер и ссылки выглядят ну очень зашифрованными, скачиваем сам флеш-плеер (файл .swf), который используется на сайте. Обычно он может быть в блоках object или video:
<object type="application/x-shockwave-flash" data="/modules/uppod/uppod.swf" width="100%" height="500" id="flash"...
Если в исходниках страницы по Ctrl-U вы не находите нужные строки, всегда можно сделать это через клик правой клавишей мышки на элементе рядом с окном плеера и выбрав пункт "Посмотреть код" (Chrome) или "Проверить элемент" (Internet Explorer) или подобный пункт вашего любимого браузера.
После чего, перемещаясь по дереву html кода найти эти данные и саму ссылку на плеер (в примере выше это "/modules/uppod/uppod.swf").
Можно также скопировать эту ссылку и вставить её как ссылку какого-либо элемента (например кнопки или ссылки на другую страницу), нажать правой кнопкой мышки на этом элементе и выбрать "Скачать как".
2) Открыть скачанный файл uppod.swf в программе декомпилятора флеш файлов (Sothink SWF Decompiler или Flash Decompiler Trillix) и там искать файлы скриптов.
Обычно значения codec_a и codec_b находятся по пути: "Действие" (что означает скрипты) -> com -> uppod -> Uppod.
client.codec_a = new Array("s", "a", "L", "3", "2", "k", "c", "t", "p", "8", "D", "n", "5", "g", "N", "y", "4", "R", "Z", "M", "1", "H", "e", "B", "0", "=");
client.codec_b = new Array("Q", "d", "z", "W", "V", "T", "u", "7", "o", "6", "9", "x", "J", "Y", "X", "I", "b", "U", "m", "w", "v", "f", "l", "i", "G", "E");
Если эти значения там не находим, то через поиск пытаемся их найти в других файлах скриптов.
Если поиски codec_a и codec_b успехов не принесли, то скорее всего там используется шифровка функцией с использованием hash. Находится он обычно по пути: "Действие" -> com -> uppod -> FlashVars и выглядит следующим образом:
private var hash:String = "0123456789WGXMHRUZID=NQVBLihbzaclmepsJxdftioYkngryTwuvihv7ec41D6GpBtXx3QJRiN5WwMf=ihngU08IuldVHosTmZz9kYL2bayE";
Вот собственно и всё что нужно знать, для того, чтобы вытащить данные для раскодировки ссылок uppod плеера. Функции и примеры скриптов для дешифровки есть в этой теме.
Помните, что в этом быстро меняющемся мире, приведённые примеры сайтов и значения могут отличатся от того, что вы будете проделывать. Сайты постоянно меняются, меняют дизайн и даже логику работы с плеером. Поэтому то, что сегодня показано в примере и работает, завтра уже может быть неактуально. И в каждом конкретном случае бывают нюансы.
Например, бывали случаи нахождения codec_a и codec_b, но плеер работал с расшифровками по hash.
Напоминаю, что функции с codec_a и hash работают немного по-разному. В hash "зашиты" две таблицы замен, разделённые знаками "ih". И использование первой таблицы, вместо второй может зависеть от вида зашифрованной ссылки. Более подробно о работе функций дешифровки можно посмотреть на примере скриптов в этом посте.