Сегодня мы займемся богомерзким не совсем этичным, но порой таким нужным делом — раскодировкой шаблонов wordpress.
Многие из вас видели в файлах шаблонов строки вида eval (base64_decode('тра-ля-ля')и задумывались- что там может быть?
Да всё, что угодно автору шаблона — от ссылок в футере, позволяющих автору иметь лишнюю копеечку на хлеб с икрой маслом, до вредоносного кода.
Поэтому хотя бы проанализировать, привести эти строчки в читаемый вид — будет полезно.
Начнем, как всегда, с азов, и да поможет нам К.О. Википедия...
Base64 — позиционная система счисления с основанием 64. Здесь 64 — это наибольшая степень двойки (2 в 6 степени), которая может быть представлена с использованием печатных символов ASCII.
Base64 — это схема, по которой произвольная последовательность байт преобразуется в последовательность печатных ASCII символов. Используются только символы латинского алфавита в верхнем и нижнем регистре — символы (A—Z, a—z), цифры (0—9), и символы «+» и «/», с символом «=» в качестве специального кода суффикса.
Чаще всего эта схема используется в электронной почте для так называемого транспортного кодирования.
В веб-дизайне такое кодирование несет скорее психологическую (отпугивающую новичков) функцию — раскодировать такие данные не составляет большого труда.
Рассмотрим практический пример раскодировки шаблонов от американского (во всяком случае, так показывает whois) сайта newwpthemes[точка]com.
Всем хороши шаблоны, созданные на основе Blueprint CSS Framework 0.8 , но выпущены они под лицензией Creative Commons и футер шаблона содержит 3-4 ссылки на неизвестные нам забугорные сайты.
Оставлю все морально-этически-лицензионные размышления на вашу совесть и просто покажу — что же пытался спрятать под кодом автор...
— всё что вы делаете, вы делаете на свой страх и риск, автор статьи не несёт абсолютно никакой ответственности за возможный ущерб.
— и вообще — проводить подобные «эксперименты» на рабочем сайте — невиданная глупость — используйте для этого специально созданный сайт на локалхосте.
— для правок используйте текстовые редакторы, позволяющие сделать «откат» исправлений, например Notepad++
Действуем просто — открываем каждый файл шаблона в текстовом редакторе, набираем в поиске base64 и ищем...
Подробный просмотр файлов шаблона iBusiness выявил 4 закодированных строки в файле functions.php, две таких строки в header.php и предупреждение на расовом английском языке «не менять ссылки в футере, иначе сайт не будет работать».
И действительно, поменяв хотя бы букву в ссылках внизу футера, получаем вместо сайта белый экран:
![]()
Понятно, что каждый (ну почти каждый))) получивший такое вот непотребство, сразу же загорается желанием «насолить» автору )))
Для этого, тщательно копируем все закодированные строчки в Блокнот (лучше Notepad++) и пытаемся разобраться.
В декодировании нам поможет неплохой ресурс Free online base64 encoder and decoder .
Просто копируем буквенную абракадабру, следующую после eval (base64_decode (' и до ')); в форму на сайте и жмём decode.
Еще раз- дабы избежать лишних вопросов...
Есть строчка:
eval (base64_decode ('Y2hlY2tfdGhlbWVfaGVhZGVyKCk7'));
копируем
Y2hlY2tfdGhlbWVfaGVhZGVyKCk7
Вставляем в форму, жмём decode, получаем результат:
check_theme_header (); — потренируйтесь, если получилось нечто иное — значит- не так скопировали.
Ремарка — онлайн-декодеров в интернетах много, поэтому если вы пользуетесь другим сервисом — внимательно читайте правила пользования.
Теперь полученной раскодированной строчкой можно заменить исходную в шаблоне. Не забываем ставить теги <?php и ?> там, где это уместно.
Проверяем новую редакцию шаблона — всё должно работать.
В онлайн-декодере жмём reset data и повторяем всё вышеописанное с новой строчкой.
Для этого пункта нам необходимо знание хотя бы азов PHP или, на худой конец, просто английского...
Нам важен сейчас смысл и действие, а не знания синтаксиса.
Смотрим, читаем, пытаемся понять...
/*functions.php*/
1)
eval(base64_decode('aWYgKCFlbXB0eSgkX1JFUVVFU1RbInRoZW1lX2xpY2Vuc2UiXSkpIHsgdGhlbWVfdXNhZ2VfbWVzc2FnZSgpOyBleGl0KCk7IH0gZnVuY3Rpb24gdGhlbWVfdXNhZ2VfbWVzc2FnZSgpIHsgaWYgKGVtcHR5KCRfUkVRVUVTVFsidGhlbWVfbGljZW5zZSJdKSkgeyAkdGhlbWVfbGljZW5zZV9mYWxzZSA9IGdldF9ibG9naW5mbygidXJsIikgLiAiL2luZGV4LnBocD90aGVtZV9saWNlbnNlPXRydWUiOyBlY2hvICI8bWV0YSBodHRwLWVxdWl2PVwicmVmcmVzaFwiIGNvbnRlbnQ9XCIwO3VybD0kdGhlbWVfbGljZW5zZV9mYWxzZVwiPiI7IGV4aXQoKTsgfSBlbHNlIHsgZWNobyAoIjxwIHN0eWxlPVwicGFkZGluZzoxMHB4OyBtYXJnaW46IDEwcHg7IHRleHQtYWxpZ246Y2VudGVyOyBib3JkZXI6IDJweCBkYXNoZWQgUmVkOyBmb250LWZhbWlseTphcmlhbDsgZm9udC13ZWlnaHQ6Ym9sZDsgYmFja2dyb3VuZDogI2ZmZjsgY29sb3I6ICMwMDA7XCI+VGhpcyB0aGVtZSBpcyByZWxlYXNlZCBmcmVlIGZvciB1c2UgdW5kZXIgY3JlYXRpdmUgY29tbW9ucyBsaWNlbmNlLiBBbGwgbGlua3MgaW4gdGhlIGZvb3RlciBzaG91bGQgcmVtYWluIGludGFjdC4gVGhlc2UgbGlua3MgYXJlIGFsbCBmYW1pbHkgZnJpZW5kbHkgYW5kIHdpbGwgbm90IGh1cnQgeW91ciBzaXRlIGluIGFueSB3YXkuIFRoaXMgZ3JlYXQgdGhlbWUgaXMgYnJvdWdodCB0byB5b3UgZm9yIGZyZWUgYnkgdGhlc2Ugc3VwcG9ydGVycy48L3A+Iik7IH0gfQ==')); if (!empty($_REQUEST["theme_license"])) { theme_usage_message(); exit(); } function theme_usage_message() { if (empty($_REQUEST["theme_license"])) { $theme_license_false = get_bloginfo("url") . "/index.php?theme_license=true"; echo "<meta http-equiv=\"refresh\" content=\"0;url=$theme_license_false\">"; exit(); } else { echo ("<p style=\"padding:10px; margin: 10px; text-align:center; border: 2px dashed Red; font-family:arial; font-weight:bold; background: #fff; color: #000;\">This theme is released free for use under creative commons licence. All links in the footer should remain intact. These links are all family friendly and will not hurt your site in any way. This great theme is brought to you for free by these supporters.</p>"); } }
Эта строчка при выполнении/невыполнении некоторых условий выводит лицензионное сообщение вместо сайта.
2)
eval(base64_decode('ZnVuY3Rpb24gY2hlY2tfdGhlbWVfZm9vdGVyKCkgeyAkdXJpID0gc3RydG9sb3dlcigkX1NFUlZFUlsiUkVRVUVTVF9VUkkiXSk7IGlmKGlzX2FkbWluKCkgfHwgc3Vic3RyX2NvdW50KCR1cmksICJ3cC1hZG1pbiIpID4gMCB8fCBzdWJzdHJfY291bnQoJHVyaSwgIndwLWxvZ2luIikgPiAwICkgeyAvKiAqLyB9IGVsc2UgeyAkbCA9ICdCdXkgRnJlZSA8YSBocmVmPSJodHRwOi8vd3d3LmJlc3RpbmNlbGxwaG9uZXMuY29tL3QtbW9iaWxlLmFzcCIgdGl0bGU9IlQtTW9iaWxlIFBob25lcyI+VC1Nb2JpbGUgUGhvbmVzPC9hPiB3aXRoIFBsYW5zLiB8IFRoYW5rcyB0byA8YSBocmVmPSJodHRwOi8vd3d3LmljZWxscGhvbmVkZWFscy5jb20vYnV5LXZlcml6b24tcGhvbmVzLXdpdGhvdXQtY29udHJhY3Qtbm8tcGxhbi8iIHRpdGxlPSJWZXJpem9uIFBob25lcyB3aXRob3V0IENvbnRyYWN0Ij5WZXJpem9uIFBob25lcyB3aXRob3V0IENvbnRyYWN0PC9hPiwgPGEgaHJlZj0iaHR0cDovL21tb2h1dC5jb20iPkZyZWUgTU1PUlBHIEdhbWVzPC9hPiBhbmQgPGEgaHJlZj0iaHR0cDovL2luY2luZXJhZG9yZGVncmFzYWVzcGVjaWFsLmNvbSI+SW5jaW5lcmFkb3IgRGUgR3Jhc2EgUmV2aXNpw7NuPC9hPic7ICRmID0gZGlybmFtZShfX2ZpbGVfXykgLiAiL2Zvb3Rlci5waHAiOyAkZmQgPSBmb3BlbigkZiwgInIiKTsgJGMgPSBmcmVhZCgkZmQsIGZpbGVzaXplKCRmKSk7IGZjbG9zZSgkZmQpOyBpZiAoc3RycG9zKCRjLCAkbCkgPT0gMCkgeyB0aGVtZV91c2FnZV9tZXNzYWdlKCk7IGRpZTsgfSB9IH0gY2hlY2tfdGhlbWVfZm9vdGVyKCk7')); function check_theme_footer() { $uri = strtolower($_SERVER["REQUEST_URI"]); if(is_admin() || substr_count($uri, "wp-admin") > 0 || substr_count($uri, "wp-login") > 0 ) { /* */ } else { $l = 'Buy Free <a href="http://www.bestincellphones.com/t-mobile.asp" title="T-Mobile Phones">T-Mobile Phones</a> with Plans. | Thanks to <a href="http://www.icellphonedeals.com/buy-verizon-phones-without-contract-no-plan/" title="Verizon Phones without Contract">Verizon Phones without Contract</a>, <a href="http://mmohut.com">Free MMORPG Games</a> and <a href="http://incineradordegrasaespecial.com">Incinerador De Grasa RevisiA?n</a>'; $f = dirname(__file__) . "/footer.php"; $fd = fopen($f, "r"); $c = fread($fd, filesize($f)); fclose($fd); if (strpos($c, $l) == 0) { theme_usage_message(); die; } } } check_theme_footer();
Проверяет соответствие ссылок в футере заданным, если — нет, то DIE (думаю, в переводе не нуждается)))
3)
eval(base64_decode('Y2hlY2tfdGhlbWVfaGVhZGVyKCk7')); check_theme_header();
Вызывает функцию check_theme_header
4)
eval(base64_decode('ZnVuY3Rpb24gY2hlY2tfdGhlbWVfaGVhZGVyKCkgeyBpZiAoIShmdW5jdGlvbl9leGlzdHMoImZ1bmN0aW9uc19maWxlX2V4aXN0cyIpICYmIGZ1bmN0aW9uX2V4aXN0cygidGhlbWVfZm9vdGVyX3QiKSkpIHsgdGhlbWVfdXNhZ2VfbWVzc2FnZSgpOyBkaWU7IH0gfQ==')); function check_theme_header() { if (!(function_exists("functions_file_exists") && function_exists("theme_footer_t"))) { theme_usage_message(); die; } }
А вот и эта функция) Проверяет наличие функций functions_file_exists и theme_footer_t (обе находятся в хэдере), если — нет, то — DIE.
/*header.php*/
5)
eval(base64_decode('ZnVuY3Rpb24gdGhlbWVfZm9vdGVyX3QoKSB7IGlmICghKGZ1bmN0aW9uX2V4aXN0cygiY2hlY2tfdGhlbWVfZm9vdGVyIikgJiYgZnVuY3Rpb25fZXhpc3RzKCJjaGVja190aGVtZV9oZWFkZXIiKSkpIHsgdGhlbWVfdXNhZ2VfbWVzc2FnZSgpOyBkaWU7IH0gfSB0aGVtZV9mb290ZXJfdCgpOw==')); function theme_footer_t() { if (!(function_exists("check_theme_footer") && function_exists("check_theme_header"))) { theme_usage_message(); die; } } theme_footer_t();
Проверяет наличие функций check_theme_footer и check_theme_header (находятся в functions.php), если — нет, то — DIE.
6)
echo get_theme_option("head") . "\n"; eval(base64_decode('ZnVuY3Rpb24gZnVuY3Rpb25zX2ZpbGVfZXhpc3RzKCkgeyBpZiAoIWZpbGVfZXhpc3RzKGRpcm5hbWUoX19maWxlX18pIC4gIi9mdW5jdGlvbnMucGhwIikgfHwgIWZ1bmN0aW9uX2V4aXN0cygidGhlbWVfdXNhZ2VfbWVzc2FnZSIpICkgeyBlY2hvICgiPHAgc3R5bGU9XCJwYWRkaW5nOjEwcHg7IG1hcmdpbjogMTBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJvcmRlcjogMnB4IGRhc2hlZCBSZWQ7IGZvbnQtZmFtaWx5OmFyaWFsOyBmb250LXdlaWdodDpib2xkOyBiYWNrZ3JvdW5kOiAjZmZmOyBjb2xvcjogIzAwMDtcIj5UaGlzIHRoZW1lIGlzIHJlbGVhc2VkIGZyZWUgZm9yIHVzZSB1bmRlciBjcmVhdGl2ZSBjb21tb25zIGxpY2VuY2UuIEFsbCBsaW5rcyBpbiB0aGUgZm9vdGVyIHNob3VsZCByZW1haW4gaW50YWN0LiBUaGVzZSBsaW5rcyBhcmUgYWxsIGZhbWlseSBmcmllbmRseSBhbmQgd2lsbCBub3QgaHVydCB5b3VyIHNpdGUgaW4gYW55IHdheS4gVGhpcyBncmVhdCB0aGVtZSBpcyBicm91Z2h0IHRvIHlvdSBmb3IgZnJlZSBieSB0aGVzZSBzdXBwb3J0ZXJzLjwvcD4iKTsgZGllOyB9IH0gZnVuY3Rpb25zX2ZpbGVfZXhpc3RzKCk7')); wp_head(); function functions_file_exists() { if (!file_exists(dirname(__file__) . "/functions.php") || !function_exists("theme_usage_message") ) { echo ("<p style=\"padding:10px; margin: 10px; text-align:center; border: 2px dashed Red; font-family:arial; font-weight:bold; background: #fff; color: #000;\">This theme is released free for use under creative commons licence. All links in the footer should remain intact. These links are all family friendly and will not hurt your site in any way. This great theme is brought to you for free by these supporters.</p>"); die; } } functions_file_exists();
Еще проверки: наличие файла functions.php, функции theme_usage_message — если нет, то — лицензионное сообщение.
Подведем итоги: из шести закодированных строк только (2) проверяет ссылки в футере, остальные же проверяют друг друга «на наличие» и если хотя бы одной не будет — отключают сайт и и грозят анальной карой судом Божьим.
Строка (3) просто вызывает функцию проверки и может быть сразу безболезненно удалена.
Решение, что же делать с ссылками в футере, нарушать или нет лицензию и прочее — оставляю лично вам.
Приведу просто возможные варианты:
1) Если изменить ссылки в строчке (2) на нужные вам, то теперь можно (и даже нужно!) заменить ссылки в футере на аналогичные. Остальные строчки можно тогда не трогать.
2) Если же вы решили избавиться от ссылок в футере, то все 6 строчек нужно удалить, единственное замечание — в строке (6) нужно удалить только закодированную часть — остальное оставить.
Вот как будет выглядеть строка (6) после удаления «лишнего»:
php echo get_theme_option("head") . "\n"; wp_head();
Честно говоря — данный пример декодирования шаблонов — простейший.
Рассказать о всех видах кодирования в рамках одной статьи просто невозможно.
Так что я показал лишь методику, а дальше вы уж сами, благо — ресурсов для раскодировки множество да и Гугл никто пока не закрыл)))
Огромная просьба — не присылайте в комментарии куски кода для расшифровки. Такие комменты будут удаляться.
Если уж не справляетесь сами — помогу, но за некоторое вознаграждение в вебманях (5 WMZ) по факту.
Мой e-mail — на страничке «об авторе», присылать следует весь архив шаблона, а не отдельные файлы или куски кода.
Не обессудьте, если кому откажу — свободного времени не так уж и много.
P.S. Еще один хороший ресурс для раскодировки, на этот раз eval (gzinflate (base64_decode - Eval - Gzip - Base64 Decoder — читайте внимательно описание — на этом сайте в форму копируется полная строчка.
Рад, что смог вам помочь
Нравятся мне шаблоны от NewWPThemes, а кодируются все однотипно...
Николай спасибо, а то меня замучали уже закодированые футеры
сурово блин, нудно... на мой взгляд уж проще самому шаблон написать, или переделать не закодированный...
azovfan
Да ничего нудного, в основном только футер кодируют. Даже девчонки уже влегкую его раскодируют...скоро мы вообще власть в интернете захватим
ИМХО, если некто способен написать шаблон с нуля, то раскодировать футер для него — плёвое дело
Здравствуйте. Подскажите пожалуйста на сайте NewWPThemes, у всех шаблонов футер закодирован. С чем это связано? Вредоносный код или ссылки и копирайты?
Alina, вредоносного кода в темах NewWPThemes не замечено
Обычные ссылки на продвигаемые автором сайты.
Спасибо, у Вас замечательный блог
Блог отличный, буду посещать регулярно!
Да,мануал хороший! Только я столкнулся с такой вот проблемой
как раскодировать вот такое?
Сразу хочу сказать перепробовал разные варианты:
________________________________________________
_________________________________________________
т.е. ве что касается base64 я расскодировал, но не могу связать это с
может кто нибудь сталкивался с такой вот проблемкой...
Заранее всем спасибо за ответы.
а код нельзя сюда вставлять?
Dennis, вставка кода в комменты не предусмотрена, да и бесполезно смотреть на кусочек кода — часто обращения к нему идут совсем из других файлов. Пришлите мне на мыло (kotello1971@gmail.com) весь шаблон — постараюсь помочь. Вам, как первому, кто попросил о раскодировке, постараюсь помочь безвозмездно, тоесть даром...
Или пришлите в комменты хотя бы название шаблона...
Архиполезная фишка! Жаль раньше не знал. у меня на сайте висело 2 ссылки на чужие сайты
Спасибо, все получилось! Только теперь застряля на простом, немогу поменять цвет по бокам шаблона
Barbie, если вы имеете в виду именно шаблоны от NewWPThemes, то в файле style.css, обратите внимание на строчку
body { background: #c4d1e1 url(images/background.png) top left repeat-x; }
(взял из первого попавшегося шаблона NewWPThemes).
Нужно поменять цвет, плюс прийдётся править фоновое изображение в фотошопе. Будьте осторожны — это изображение используется и как фон для шапки сайта.
PS Хе-хе... всё-таки можно вставлять код и в комменты)
Да, именно это я и имела в виду, спасибо! Я немного умею пользоваться фотошопом поэтому получилось что надо. Теперь мой сайт преобразился в моих глазах! Спасибо, Спасибо!!!
спасибо за подробную инструкцию, как раз себе приглядел шаблон, поставил на Денвер, а там не пойми что за ссылки внизу. Добро бы на сайт создателя темы, а то совсем левые какие-то ссылки.
Увы, декодеры не всесильны!
не могу понять, что ж тут мучительного и ужасного в закодированном футере то... кушать не просит, не беспокоит, единственная радость автору за его труды, и той лишаете...)) не хорошо!..
а материал — неоценимый!! спс.
Далеко не факт, что в зашифрованном коде действительно ссылки на разработчика, а не какой-нибудь вредоносный код с sql инъекциями.
Респектую!
Спасибо. Раскодировал. Сейчас буду выжигать ненужное.
Цуко. Ну нафиг так борзеть — по три линка толкать
Спасибо!! А то весь инет перерыл и уже было отчаялся
Комментирование закрыто.
17:44
Спасибо за мануал, разблокировал себе шаблончик «Mina»