Декодирование php кода, методом ROT13
Вторник, Апрель 28, 2009 11:43
Из-за большого количества разногласий, которы Вы написали мне в ICQ и на E-mail я немного перефразирую суть данной статьи.
Если Вам нужно раскодировать какой-либо кусок кода, который зашифрован при помощи ROT13 [преобразование ROT13 заключается в простом сдвиге каждой латинской буквы на 13 позиций в алфавите, остальные символы не изменяются] так же, это пособие подойдет для тех, кто хочет закодировать свой кусок кода от несанкционированного изменения авторских прав.
В качестве примера, декодирования кода, я буду использовать шаблон для WordPress, после чего, я все удалю и авторские права остануться защищены, а буду делать лишь это в качестве своего удовольствия.
Итак, файл footer.php -который и содержит наш злополучный код с ссылками. Если просто удалить его, получаем вот это:
This theme is released under creative commons licence, all links in the footer should remain intact
Да... очень не приятно.
В этом файле меняем текст на нужный нам. Я ограничился своим доменным именем.
Открываем файл functions.php.
Видим там, например вот это:
eval(str_rot13('shapgvba purpx_urnqre(){vs(!(shapgvba_rkvfgf("purpx_shapgvbaf")&&shapgvba_rkvfgf("purpx_s_sbbgre"))){rpub(\'Guvf gurzr vf eryrnfrq haqre perngvir pbzzbaf yvprapr, nyy yvaxf va gur sbbgre fubhyq erznva vagnpg\');qvr;}}'));
Обратное преобразование выполняется той же функцией.
function rotate($string, $n) {
$length = strlen($string);
$result = '';
for($i = 0; $i < $length; $i++) {
$ascii = ord($string{$i});
$rotated = $ascii;
if ($ascii > 64 && $ascii < 91) {
$rotated += $n;
$rotated > 90 && $rotated += -90 + 64;
$rotated < 65 && $rotated += -64 + 90;
} elseif ($ascii > 96 && $ascii < 123) {
$rotated += $n;
$rotated > 122 && $rotated += -122 + 96;
$rotated < 97 && $rotated += -96 + 122;
}
$result .= chr($rotated);
}
return $result;
}
$enc = rotate('shapgvba purpx_sbbgre(){$y=\'uers="uggc://serrjbeqcerffgurzrf.eh/" gvgyr="\';$s=qveanzr(__SVYR__).\'/sbbgre.cuc\';$sq=sbcra($s,\'e\');$p=sernq($sq,svyrfvmr($s));spybfr($sq);vs(fgecbf($p,$y)==0){rpub \'Guvf gurzr vf eryrnfrq haqre perngvir pbzzbaf yvprapr, nyy yvaxf va gur sbbgre fubhyq erznva vagnpg\';qvr;}}purpx_sbbgre();', 13);
echo "Encoded: $enc
\n";
echo 'Decoded: ' . rotate($enc, -13);
?>
На выходе в итоге получаем примерно следующее:
Decoded: shapgvba purpx_sbbgre(){$y='uers="uggc://serrjbeqcerffgurzrf.eh/" gvgyr="';$s=qveanzr(__SVYR__).'/sbbgre.cuc';$sq=sbcra($s,'e');$p=sernq($sq,svyrfvmr($s));spybfr($sq);vs(fgecbf($p,$y)==0){rpub 'Guvf gurzr vf eryrnfrq haqre perngvir pbzzbaf yvprapr, nyy yvaxf va gur sbbgre fubhyq erznva vagnpg';qvr;}}purpx_sbbgre();
Заменяем преобразованные функции в файле на их нормальный вид и убираем строчку
{echo 'This theme is released under creative commons licence, all links in the footer should remain intact'; die;}
stromen сообщил:
Апрель 28th, 2009 16:47
И Насколько это законно?
booblik сообщил:
Апрель 28th, 2009 18:19
у нас все законно =)
Kitich сообщил:
Апрель 28th, 2009 21:55
А насколько красиво? В смысле, из морально-этических соображений.
Человек старался, вкладывал труд и время, а пользователей жаба давит имя в футере оставить?
Кстати, насколько мне известно, по законам РФ (и международным) «Право авторства является неотчуждаемым» и автор имеет право на указание имени.
При всем уважении к автору и после огромного количества замечательных статей фраза «был неприятно удивлен...» неприятно удивила (
vanoID сообщил:
Апрель 29th, 2009 7:43
C кем не бывает, творческий кризис и т.д.
А по поводу статьи — «ОК!» используйте ее в качестве пособия для кодирования php кода, чтобы оставлять свои копирайты.
Сергей М. сообщил:
Май 1st, 2009 19:50
Ну, вообще, как показывает практика, кодируют футера обычно не нормальные авторы, которым, в общем-то приятно то, что их бесплатные темы используют, а мудаки, которые берут чужое (редко пишут свое) и вставляют туда линки на сплоги и дорвеи. Так что все правильно ^^
Arti сообщил:
Май 7th, 2009 7:56
Правильно то оно правильно, но вот декодируется это ещё проще
Открывается редактор шаблона, открывается страница блога. Ищешь место нестыковки, а дальше просто заменяешь место с кодом на часть со страницы.
И никаких ROT13,ROT14,ROT15...
Andrei сообщил:
Июнь 16th, 2009 19:54
Спасибо, помогло нашел в куске «шифровки» условие «==0» и заменил нолик на единицу