Всем привет сегодня расскажу как убрать из footer или как его еще называют подвал, ссылки в шаблоне на WordPress.
Вчера возился с одним шаблончиком, который нашел на забугорном сайте. Я вообще с wordpress'ом познакомился недавно (наконец-то руки до него дошли), но уже успел пару раз услышать про закодированные футеры. Что они из себя представляют и зачем их кодируют - не знал, но на заметку взял - надо проверять footer.php в шаблонах (так.. на всякий случай). Вот вчера мне такой шаблон и попался, с закодированным подвалом.
Открыв файл footer.php я опытным глазом увидел текст в кодировке Base64. Текст закодированный в этой кодировке обычно заканчивается символами "==".
Вот код, если кому интересно:
<?php $_F=__FILE__;$_X='Pz48ZDR2IDRkPSJmMjJ0NXIiPgkNCgk8Z DR2IGNsMXNzPSJmMjJ0NXJsNG5rcyI+IA0KCQkNCgkJRDVzNGduNWQgYnk6IDwx IGhyNWY9Imh0dHA6Ly93d3cucDJ3NXJuNXRzaDJwLjF0LzFkMXB0NXIvZjFocno1 M2c1L2YycmQvIiB0NHRsNT0iRjJyZCI+RjJyZDwvMT4gOjogDQoJCQ0KCQkgSW4 gQzJsbDFiMnIxdDQybiB3NHRoIDwxIGhyNWY9Imh0dHA6Ly93d3cuZjRyNWMxcz RuMnMuYzJtIiB0NHRsNT0iT25sNG41IEMxczRuMnMiPk9ubDRuNSBDMXM0bjJzPC 8xPiwgPDEgaHI1Zj0iaHR0cDovL3d3dy5jaDUxcC1jMXItNG5zM3IxbmM1LXQ0cHM uYzJtIiB0NHRsNT0iQzFyIEluczNyMW5jNSI+QzFyIEluczNyMW5jNTwvMT4sIDwxI GhyNWY9Imh0dHA6Ly93d3cuaDJtNTRtcHIyIiB0NHRsNT0iSDJtNSBJbXByMnZtN W50Ij5IMm01IEltcHIydm01bnQ8LzE+DQoJCQ0KCTwvZDR2Pg0KPC9kNHY+DQo 8L2Q0dj4NCjwvYjJkeT4NCjwvaHRtbD4NCg0K';eval(base64_decode('JF9YP WJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcxMjM 0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GS UxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?>
Следующий шаг: декодировать этот текст. Вводим в гугле "online base64 decode" и попадаем сюда: www.motobit.com/util/base64-decoder-encoder.asp .
Присмотревшись к коду, копируем первую часть зашифрованного подвала:
Pz48ZDR2IDRkPSJmMjJ0NXIiPgkNCgk8ZDR2IGNsMXNzPSJmMjJ0NXJsNG5rcyI+IA0KCQkNCgkJR DVzNGduNWQgYnk6IDwxIGhyNWY9Imh0dHA6Ly93d3cucDJ3NXJuNXRzaDJwLjF0LzFkMXB0NX IvZjFocno1M2c1L2YycmQvIiB0NHRsNT0iRjJyZCI+RjJyZDwvMT4gOjogDQoJCQ0KCQkgSW4gQ zJsbDFiMnIxdDQybiB3NHRoIDwxIGhyNWY9Imh0dHA6Ly93d3cuZjRyNWMxczRuMnMuYzJtIiB0N HRsNT0iT25sNG41IEMxczRuMnMiPk9ubDRuNSBDMXM0bjJzPC8xPiwgPDEgaHI1Zj0iaHR0cDovL3 d3dy5jaDUxcC1jMXItNG5zM3IxbmM1LXQ0cHMuYzJtIiB0NHRsNT0iQzFyIEluczNyMW5jNSI+QzF yIEluczNyMW5jNTwvMT4sIDwxIGhyNWY9Imh0dHA6Ly93d3cuaDJtNTRtcHIyIiB0NHRsNT0iSDJ tNSBJbXByMnZtNW50Ij5IMm01IEltcHIydm01bnQ8LzE+DQoJCQ0KCTwvZDR2Pg0KPC9kNHY+D Qo8L2Q0dj4NCjwvYjJkeT4NCjwvaHRtbD4NCg0K
Тыкаем на сайте "decode the data from a Base64 string (base64 decoding)" - тоесть говорим что мы хотим из кодировки получить текст, а не наоборот. И жмем кнопку "Convert the Data source"
В результате видим следующее:
?><d4v 4d="f22t5r"> <d4v cl1ss="f22t5rl4nks"> D5s4gn5d by: <1 hr5f="http://www.p2w5rn5tsh2p.1t/1d1pt5r/f1hrz53g5/f2rd/" t4tl5="F2rd">F2rd</1> :: In C2ll1b2r1t42n w4th <1 hr5f="http://www.f4r5c1s4n2s.c2m" t4tl5="Onl4n5 C1s4n2s">Onl4n5 C1s4n2s</1>, <1 hr5f="http://www.ch51p-c1r-4ns3r1nc5-t4ps.c2m" t4tl5="C1r Ins3r1nc5">C1r Ins3r1nc5</1>, <1 hr5f="http://www.h2m54mpr2" t4tl5="H2m5 Impr2vm5nt">H2m5 Impr2vm5nt</1> </d4v> </d4v> </d4v> </b2dy> </html>
Посмотрев на эту абракадабру и на слова t4tl5 и d4v, можно заметить что заместо "4" должна быть буква "i". Ага, значит некоторые символы заменены.
JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcxMjM0NTZhb3VpZS csJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0Y uIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw==
Декодируем так же, как я написал выше и получаем:
$_X=base64_decode($_X);$_X=strtr($_X,'123456aouie','aouie123456');$_R=ereg_replace ('__FILE__',"'".$_F."'",$_X);eval($_R);$_R=0;$_X=0;
Опять-таки, опытный глаз замечает то, что нам нужно: "strtr($_X,'123456aouie','aouie123456')".
Тут функция заменяет "1" на "а", "2" на "о", "3" на "u", "4" на "i", и так далее.
Запускаем блокнот, вставляем
?><d4v 4d="f22t5r"> <d4v cl1ss="f22t5rl4nks"> D5s4gn5d by: <1 hr5f="http://www.p2w5rn5tsh2p.1t/1d1pt5r/f1hrz53g5/f2rd/" t4tl5="F2rd">F2rd</1> :: In C2ll1b2r1t42n w4th <1 hr5f="http://www.f4r5c1s4n2s.c2m" t4tl5="Onl4n5 C1s4n2s">Onl4n5 C1s4n2s</1>, <1 hr5f="http://www.ch51p-c1r-4ns3r1nc5-t4ps.c2m" t4tl5="C1r Ins3r1nc5">C1r Ins3r1nc5</1>, <1 hr5f="http://www.h2m54mpr2" t4tl5="H2m5 Impr2vm5nt">H2m5 Impr2vm5nt</1> </d4v> </d4v> </d4v> </b2dy> </html>
Жмем "Правка"->"Заменить". Говорим что "1" заменить на "а", ну а дальше, думаю Вы поняли.
?><div id="footer"> <div class="footerlinks"> Designed by: <a href="http://www.powernetshop.at/adapter/fahrzeuge/ford/" title="Ford">Ford</a> :: In Collaboration with <a href="http://www.firecasinos.com" title="Online Casinos">Online Casinos</a>, <a href="http://www.cheap-car-insurance-tips.com" title="Car Insurance">Car Insurance</a>, <a href="http://www.homeimpro" title="Home Improvment">Home Improvment</a> </div> </div> </div> </body> </html> v> </bjdy> </html>
Из полученного видно, что кроме пары лишних ссылок в зашифрованном подваленичего страшного не хранилось. Осталось только удалить лишние ссылки и добавить свои.
UPD: unphp.net - сервис по декодированию и деобфускации php-кода
Мне понравилась еще одна идея как легко избавляться от закодированного подвала. Бывают слишком "умные" темы, которые проверяют не изменялся ли файл подвала footer.php, и если вдруг подвал изменялся - будут каким-то образом ругаться. Но можно сделать финт ушами: создать свой файл footer2.php который и отображать в шаблоне, а footer.php не отображать. В результате и волки сыты и овцы целы =)