Показать сообщение отдельно

  #226  
Старый 16.11.2007, 20:10
~!DoK_tOR!~
Banned
Регистрация: 10.11.2006
Сообщений: 829
Провел на форуме:
2634544

Репутация: 1559


По умолчанию

Javascript Encoder

Код:
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<meta name="Author" content="Brian Gosselin">
<title>Javascript Encoder</title>

<link href="encdec.css" rel="stylesheet" type="text/css">

<style type="text/css">

table{
background-color:#BBE6FF;
border-width:2px;
border-style:outset;
border-color:gray;
}

.outp{
background-color:#EAEAEA;
width:100%;
text-align:left;
border-color:lightgrey;
border-style:outset;
border-width:2px;
font-family:verdana;
font-size:8pt;
font-weight:normal;
}

</style>


</head>
<body>

<center><h2>Javascript Encoder</h2></center>
<br>
This script will encode javascript to make it more difficult for people to read and/or steal. Just follow the directions below.<br>

<center>
<form name="fa">
<br>
<table cellpadding="5" cellspacing=0 border=0 width="575">
<tr align="left"><td class="tblc" colspan="2">
<ol><li>Enter your javascript (no HTML) in the box below.
<li>Select the <b>Code Key</b> you want.
<li>Press the <b>Encode</b> button.
</ol></td></tr>
<tr valign="top" align="center">
<td class="tblc" width="500">
<textarea id="f2" cols=80 rows=15 wrap="off">
<SCRIPT LANGUAGE="javascript">
// SAMPLE SCRIPT #1
alert('Hello World');
</SCRIPT>

<SCRIPT LANGUAGE="javascript" SRC="your_js_file.js">
// SAMPLE SCRIPT #2 - CALLING AN EXTERNAL JS FILE
</SCRIPT>
</textarea>
</td>
<td>
<br><br>
Code Key:<br>
<select name="et" onchange="encN=this.selectedIndex+1">
<option selected>1
<option>2
<option>3
<option>4
<option>5
</select>
<br><br>
<input type="button" value="Encode" onclick="writeOut()"><br><br>
<input type="reset" value="Reset">
</td>
</tr>
</table>
<br><br>
</center>

<ol>
<li>Add your javascript code to the textarea box above.
<li>Select the "Code Key" you wish to use.
<li>Click the "Encode" button.
<li>Select all the text that appears in the box below and paste it into your HTML page where you would want the script to be. The pasted code should appear all on one line in your editor, unless you have word-wrap on. Do <b>not</b> add any linebreaks (by pressing "Enter") or the script may not work.
</ol>
<a href="javascript:document.fa.output.focus();document.fa.output.select();">Select All...</a><br>
<textarea name="output" class="outp" rows="15">
Encoded output will be displayed here...
</textarea>

</form>


<script language="javascript">

var encN=1;

// ENCODES, IN UNICODE FORMAT, ALL TEXT AND THEN ESCAPES THE OUTPUT
function encodeTxt(s){
s=escape(s);
var ta=new Array();
for(i=0;i<s.length;i++)ta[i]=s.charCodeAt(i)+encN;
return ""+escape(eval("String.fromCharCode("+ta+")"))+encN;
}


// WRITES THE DECODED OUTPUT, ALONG WITH THE ESCAPED DECODER FUNCTION TO THE DIV
function writeOut(){
document.forms["fa"].output.value="<"+"script language=javascript"+">document.write(unescape('%3C%73%63%72%69%70%74%20%6C%61%6E%67%75%61%67%65%3D%22%6A%61%76%61%73%63%72%69%70%74%22%3E%66%75%6E%63%74%69%6F%6E%20%64%46%28%73%29%7B%76%61%72%20%73%31%3D%75%6E%65%73%63%61%70%65%28%73%2E%73%75%62%73%74%72%28%30%2C%73%2E%6C%65%6E%67%74%68%2D%31%29%29%3B%20%76%61%72%20%74%3D%27%27%3B%66%6F%72%28%69%3D%30%3B%69%3C%73%31%2E%6C%65%6E%67%74%68%3B%69%2B%2B%29%74%2B%3D%53%74%72%69%6E%67%2E%66%72%6F%6D%43%68%61%72%43%6F%64%65%28%73%31%2E%63%68%61%72%43%6F%64%65%41%74%28%69%29%2D%73%2E%73%75%62%73%74%72%28%73%2E%6C%65%6E%67%74%68%2D%31%2C%31%29%29%3B%64%6F%63%75%6D%65%6E%74%2E%77%72%69%74%65%28%75%6E%65%73%63%61%70%65%28%74%29%29%3B%7D%3C%2F%73%63%72%69%70%74%3E'));dF('"+encodeTxt(document.forms['fa'].f2.value)+"')<"+"/script>";
}


</script>

</body>
</html>

HTML-Crypter

Код:

<head>
</head>

<p align=center><b>Кодировщик&nbsp;<br>
<br>
<font color="#FF0000">ВНИМАНИЕ!</font>
</b><p align=center><b><i><font color="#0000FF">Советуем вам
сохранить кодируемую страничку под другим
именем прежде чем кодировать.
Раскодировать ее потом будет практически
невозможно, и соответственно вы не сможете
в случае необходимости редактировать ее. Но
лучше все таки кодировать не всю страницу,а
только неоходимую информацию.</font></i></b><br>
<table border=0>
 <tr><td><form name=conv_form>
<TEXTAREA style="BACKGROUND: img/fon3.gif;"
name=src_text COLS=35 ROWS=10 WRAP=VIRTUAL>Вставьте сюда любой текст (или файл-HTML), который нужно закодировать</TEXTAREA></td>
<td><textarea style=";" name=dest_text cols=35 rows=10 wrap=virtual>А здесь появится результат, который нужно записать в файл с расширением html (или htm) и загрузить в браузере. 
Если вы кодируете скрипт, то вставьте результат как HTML-код.</textarea></td>
</tr>
</table>

<center>

<input style="background-color: #008080; background-repeat: repeat; background-attachment: scroll; color: #FFFFFF; font-style: normal; font-variant: normal; font-weight: normal; background-position: 0% 50%" value="Кодируем!" onclick="Code();return 0;" type="button">
<input style="background-color: #008080; background-repeat: repeat; background-attachment: scroll; color: #FFFFFF; font-style: normal; font-variant: normal; font-weight: normal; background-position: 0% 50%" value=" Очистить" onclick="ClearForm();return 0;" type="button">
</center>
</form>
<SCRIPT LANGUAGE="JavaScript">
<!--
function ClearForm()
{
 document.conv_form.dest_text.value="";
 document.conv_form.src_text.value="";
}
function Code()
{
 var temp="",i,l,c=0,out="";
 var str=document.conv_form.src_text.value;
 l=0;
 if(str=="")return;
 while(l<=str.length-1)
 {
 out=out+str.charCodeAt(l)+'!';
 l++;
 }
 document.conv_form.dest_text.value="<SCRIPT LANGUAGE=\"JavaScript\">\n<!--\nfunction Decode(){var temp=\"\",i,c=0,out=\"\";var str=\""+out+"\";l=str.length;while(c<=str.length-1){while(str.charAt(c)!=\'!\')temp=temp+str.charAt(c++);c++;out=out+String.fromCharCode(temp);temp=\"\";}document.write(out);}\n//-->\n<\/SCRIPT><SCRIPT LANGUAGE=\"JavaScript\">\n<!--\nDecode();\n//-->\n<\/SCRIPT>";  
}
//-->
</SCRIPT>
Код:
<?

//функция для генерирования всяких рндомных данных типа имен функций-переменных, учитывается правило что первый символ не может быть цифрой
function gen_rnd($len) {
        $rnd_text=null;
        for ($i=0;$i<$len;$i++){
                $temp=rand(1,3);
                if ($i==0){
                        $temp2=rand(1,2);
                        if ($temp2==1) {
                                $rnd_text.=chr(rand(65,90));
                        } else {
                                $rnd_text.=chr(rand(97,122));
                        }
                } else {
                        if ($temp==1) {
                                $rnd_text.=chr(rand(65,90));
                        } elseif ($temp==2) {
                                $rnd_text.=chr(rand(97,122));
                        } else {
                                $rnd_text.=chr(rand(48,57));
                        }
                }
        }
        return $rnd_text;
}

//функция RC4 шифрование текста
function rc4Encrypt($key, $pt) {
        $s = array();
        for ($i=0; $i<256; $i++) {
                $s[$i] = $i;
        }
        $j = 0;
        $x;
        for ($i=0; $i<256; $i++) {
                $j = ($j + $s[$i] + ord($key[$i % strlen($key)])) % 256;
                $x = $s[$i];
                $s[$i] = $s[$j];
                $s[$j] = $x;
        }
        $i = 0;
        $j = 0;
        $ct = '';
        $y;
        for ($y=0; $y<strlen($pt); $y++) {
                $i = ($i + 1) % 256;
                $j = ($j + $s[$i]) % 256;
                $x = $s[$i];
                $s[$i] = $s[$j];
                $s[$j] = $x;
                $ct .= $pt[$y] ^ chr($s[($s[$i] + $s[$j]) % 256]);
        }
        return $ct;
}


//для шифрования конечного HTML кода, просто включите данный файл в свой проект (include("lib.php")) например
function encrypt($content,$type="default"){

        //сообщение выводимое браузером в случае отключенного JS, что-бы отключить вывод установите флаг $error_msg_show в положение false
        $error_msg=null;
        $error_msg_show=true;
        if ($error_msg_show){
                if ($type=="image"){
                        $error_msg='для отображения рисунков включите JavaScript';
                } elseif($type=="url"){
                        $error_msg='для отображения ссылок включите JavaScript';
                }else{
                        $error_msg='Для отображения текста включите JavaScript';
                }
        }
        $error_msg='<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
                                  <noscript>
                                            '.$error_msg.'
                                  </noscript><br>';


        //вычисляем время затраченное на генерацию скрипта
        list($msec,$sec)=explode(chr(32),microtime());
        $HeadTime=$sec+$msec;


        //генерим рандомные имена ява функций отвечающих за разшифровку текста дабы исклбчить создание дешифраторов
        $js_decode_name=gen_rnd(rand(5,15));
        $js_decrypt_name=gen_rnd(rand(5,15));



        //генерим рандомный ключ шифрования для каждой сессии шифрование
        $key=gen_rnd(rand(10,30));
        $key2=base64_encode($key);

        $js_decrypt="function ".$js_decrypt_name."(key,pt){s=new Array();for(var i=0;i<256;i++){s[i]=i;}var j=0;var x;for(i=0;i<256;i++){j=(j+s[i]+key.charCodeAt(i%key.length))%256;x=s[i];s[i]=s[j];s[j]=x;}i=0;j=0;var ct = '';for(var y=0;y<pt.length;y++){i=(i+1)%256;j=(j+s[i])%256;x=s[i];s[i]=s[j];s[j]=x;ct+=String.fromCharCode(pt.charCodeAt(y)^s[(s[i]+s[j])%256]);}return ct;}";
        $js_decode="function ".$js_decode_name."(data){data=data.replace(/[^a-z0-9\+\/=]/ig,'');if(typeof(atob)=='function')return atob(data);var b64_map='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';var byte1,byte2,byte3;var ch1,ch2,ch3,ch4;var result=new Array();var j=0;while((data.length%4)!=0){data+='=';}for(var i=0;i<data.length;i+=4){ch1=b64_map.indexOf(data.charAt(i));ch2=b64_map.indexOf(data.charAt(i+1));ch3=b64_map.indexOf(data.charAt(i+2));ch4=b64_map.indexOf(data.charAt(i+3));byte1=(ch1<<2)|(ch2>>4);byte2=((ch2&15)<<4)|(ch3>>2);byte3=((ch3&3)<<6)|ch4;result[j++]=String.fromCharCode(byte1);if(ch3!=64)result[j++]=String.fromCharCode(byte2);if(ch4!=64)result[j++]=String.fromCharCode(byte3);}return result.join('');}";
        $crypted=base64_encode(rc4Encrypt($key, $content));

        //выводим время затраченное на выполение скрипта
        list($msec,$sec)=explode(chr(32),microtime());
        $s=null;
        //$s="Страница сгенерировалась за ".round(($sec+$msec)-$HeadTime,4)." сек."; //что-бы отменить вывод времени генерации, закоментируйте эту строку

        //return '<pre>'.htmlspecialchars('<script Language="JavaScript">'.$js_decrypt.';'.$js_decode.'; document.write('.$js_decrypt_name.'('.$js_decode_name.'("'.$key2.'"),'.$js_decode_name.'("'.$crypted.'")));</Script>'.$error_msg.$s);
        //return '<script Language="JavaScript">'.$js_decrypt.';'.$js_decode.'; document.write('.$js_decrypt_name.'('.$js_decode_name.'("'.$key2.'"),'.$js_decode_name.'("'.$crypted.'")));</Script>'.$error_msg.$s;
        $str='<script Language="JavaScript">'.$js_decrypt.';'.$js_decode.'; document.write('.$js_decrypt_name.'('.$js_decode_name.'("'.$key2.'"),'.$js_decode_name.'("'.$crypted.'")));</Script>'.$error_msg.$s;
        $str2=null;
        for ($i=0;$i<strlen($str);$i++){
                $str2.="%".dechex(ord($str[$i]));
        }
        //return '<script Language="JavaScript">document.write(unescape("'.$str2.'"));</script>';
        return $str;
        flush;
}

//перехват буфера выполняющегося скрипта и передача его функции шифрования
ob_start("encrypt");
?>
Base16 implementation in JavaScript

Код:
/* Base16(Hexadecimal) conversion methods.
 * Copyright (c) 2006 by Ali Farhadi.
 * released under the terms of the Gnu Public License.
 * see the GPL for details.
 *
 * Email: ali[at]farhadi[dot]ir
 * Website: http://farhadi.ir/
 */

//Encodes data to Base16(hex) format
function base16Encode(data){
	var b16_digits = '0123456789abcdef';
	var b16_map = new Array();
	for (var i=0; i<256; i++) {
		b16_map[i] = b16_digits.charAt(i >> 4) + b16_digits.charAt(i & 15);
	}
	
	var result = new Array();
	for (var i=0; i<data.length; i++) {
		result[i] = b16_map[data.charCodeAt(i)];
	}
	
	return result.join('');
}

//Decodes Base16(hex) formated data
function base16Decode(data){
	var b16_digits = '0123456789abcdef';
	var b16_map = new Array();
	for (var i=0; i<256; i++) {
		b16_map[b16_digits.charAt(i >> 4) + b16_digits.charAt(i & 15)] = String.fromCharCode(i);
	}
	data = data.replace(/[^a-f0-9]/ig, '');// strip none base16 characters
	
	if (data.length % 2) data = '0'+data;
		
	var result = new Array();
	var j=0;
	for (var i=0; i<data.length; i+=2) {
		result[j++] = b16_map[data.substr(i,2)];
	}

	return result.join('');
}

Base64 implementation in JavaScript

Код:
/* Base64 conversion methods.
 * Copyright (c) 2006 by Ali Farhadi.
 * released under the terms of the Gnu Public License.
 * see the GPL for details.
 *
 * Email: ali[at]farhadi[dot]ir
 * Website: http://farhadi.ir/
 */

//Encodes data to Base64 format
function base64Encode(data){
	if (typeof(btoa) == 'function') return btoa(data);//use internal base64 functions if available (gecko only)
	var b64_map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
	var byte1, byte2, byte3;
	var ch1, ch2, ch3, ch4;
	var result = new Array(); //array is used instead of string because in most of browsers working with large arrays is faster than working with large strings
	var j=0;
	for (var i=0; i<data.length; i+=3) {
		byte1 = data.charCodeAt(i);
		byte2 = data.charCodeAt(i+1);
		byte3 = data.charCodeAt(i+2);
		ch1 = byte1 >> 2;
		ch2 = ((byte1 & 3) << 4) | (byte2 >> 4);
		ch3 = ((byte2 & 15) << 2) | (byte3 >> 6);
		ch4 = byte3 & 63;
		
		if (isNaN(byte2)) {
			ch3 = ch4 = 64;
		} else if (isNaN(byte3)) {
			ch4 = 64;
		}

		result[j++] = b64_map.charAt(ch1)+b64_map.charAt(ch2)+b64_map.charAt(ch3)+b64_map.charAt(ch4);
	}

	return result.join('');
}

//Decodes Base64 formated data
function base64Decode(data){
	data = data.replace(/[^a-z0-9\+\/=]/ig, '');// strip none base64 characters
	if (typeof(atob) == 'function') return atob(data);//use internal base64 functions if available (gecko only)
	var b64_map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
	var byte1, byte2, byte3;
	var ch1, ch2, ch3, ch4;
	var result = new Array(); //array is used instead of string because in most of browsers working with large arrays is faster than working with large strings
	var j=0;
	while ((data.length%4) != 0) {
		data += '=';
	}
	
	for (var i=0; i<data.length; i+=4) {
		ch1 = b64_map.indexOf(data.charAt(i));
		ch2 = b64_map.indexOf(data.charAt(i+1));
		ch3 = b64_map.indexOf(data.charAt(i+2));
		ch4 = b64_map.indexOf(data.charAt(i+3));

		byte1 = (ch1 << 2) | (ch2 >> 4);
		byte2 = ((ch2 & 15) << 4) | (ch3 >> 2);
		byte3 = ((ch3 & 3) << 6) | ch4;

		result[j++] = String.fromCharCode(byte1);
		if (ch3 != 64) result[j++] = String.fromCharCode(byte2);
		if (ch4 != 64) result[j++] = String.fromCharCode(byte3);	
	}

	return result.join('');
}
Код:
<?php
/* RC4 symmetric cipher encryption/decryption
 * Copyright (c) 2006 by Ali Farhadi.
 * released under the terms of the Gnu Public License.
 * see the GPL for details.
 *
 * Email: ali[at]farhadi[dot]ir
 * Website: http://farhadi.ir/
 */

/**
 * Encrypt given plain text using the key with RC4 algorithm.
 * All parameters and return value are in binary format.
 *
 * @param string key - secret key for encryption
 * @param string pt - plain text to be encrypted
 * @return string
 */
function rc4Encrypt($key, $pt) {
	$s = array();
	for ($i=0; $i<256; $i++) {
		$s[$i] = $i;
	}
	$j = 0;
	$x;
	for ($i=0; $i<256; $i++) {
		$j = ($j + $s[$i] + ord($key[$i % strlen($key)])) % 256;
		$x = $s[$i];
		$s[$i] = $s[$j];
		$s[$j] = $x;
	}
	$i = 0;
	$j = 0;
	$ct = '';
	$y;
	for ($y=0; $y<strlen($pt); $y++) {
		$i = ($i + 1) % 256;
		$j = ($j + $s[$i]) % 256;
		$x = $s[$i];
		$s[$i] = $s[$j];
		$s[$j] = $x;
		$ct .= $pt[$y] ^ chr($s[($s[$i] + $s[$j]) % 256]);
	}
	return $ct;
}

/**
 * Decrypt given cipher text using the key with RC4 algorithm.
 * All parameters and return value are in binary format.
 *
 * @param string key - secret key for decryption
 * @param string ct - cipher text to be decrypted
 * @return string
*/
function rc4Decrypt($key, $ct) {
	return rc4Encrypt($key, $ct);
}
?>
 
Ответить с цитированием