<SCRIPT language=JavaScript>
<!--
/**//**//**//**
**
==============================================================
====================================
** Class name: CLASS_CONFUSION
** Function: JS obfuscation
** Example:
---------------------------------------------------------
------------------------------------------
var xx = new CLASS_CONFUSION(code);
("display").innerHTML =
();
---------------------------------------------------------
------------------------------------------
** Author: ttyp
** Email: ttyp@
** Date: 2006-3-20
** Version: 0.12
**
==============================================================
====================================
**/
function CLASS_CONFUSION(code){
//Hash table class
function Hashtable(){
this._hash = new Object();
= function(key,value){
if(typeof(key)!="undefined"){
if((key)==false){
this._hash[key]=typeof
(value)=="undefined"?null:value;
return true;
} else {
return false;
}
} else {
return false;
}
}
= function(key){delete this._hash
[key];}
= function(){var i=0;for(var k in
this._hash){i++;} return i;}
= function(key){return this._hash
[key];}
= function(key){return typeof
(this._hash[key])!="undefined";}
= function(){for(var k in
this._hash){delete this._hash[k];}}
}
function VariableMap(parent){
= new Hashtable();
= parent?+1:0;
= parent;
= function(key,value){
(key,value)};
= function(key){return
(key)};
= function(){return ()};
= function(key){return
(key);}
= false;
}
this._caseSensitive = true;
//Convert string to hash table
this.str2hashtable = function(key,cs){
var _key = (/,/g);
var _hash = new Hashtable();
var _cs = true;
if(typeof(cs)=="undefined"||cs==null){
_cs = this._caseSensitive;
} else {
_cs = cs;
}
for(var i in _key){
if(_cs){
_hash.add(_key[i]);
} else {
_hash.add((_key[i]+"").toLowerCase());
}
}
return _hash;
}
//Get the code that needs to be converted
this._codetxt = code;
if(typeof(syntax)=="undefined"){
syntax = "";
}
this._deleteComment = false;
//Is it case sensitive
this._caseSensitive = true;
//Get keyword hash table
this._keywords = this.str2hashtable
("switch,case,delete,default,typeof,for,in,function,void,this,
boolean,while,if,return,new,true,false,try,catch,throw,null,el
se,do,var");
this._function = this.str2hashtable("function");
this._var = "var";
this._beginBlock = "{";
this._endBlock = "}";
this._window = this.str2hashtable
("alert,escape,unescape,document,parseInt,parseFloat");
//Get the built-in object hash table
this._commonObjects = this.str2hashtable
("String,Number,Boolean,RegExp,Error,Math,Date,Object,Array,Gl
obal");
//Get split characters
this._wordDelimiters= " ,.?!;:\\/<>(){}[]\"'\r\n\t=+-
|*%@#$^&";
//Quoted characters
this._quotation = this.str2hashtable("\",'");
//Line comment characters
this._lineComment = "//";
//Escape characters
this._escape = "\\";
//Multi-line reference starts
this._commentOn = "/*";
// End of multi-line reference
this._commentOff = "*/";
this._execute = "eval";
//Quotation call characters
this._call = ".";
this._varPause = "=";
this._varContinue = ",";
//Number of variables
this._varNum = 0;
= function() {
var codeArr = new Array();
var word_index = 0;
var htmlTxt = new Array();
//Get split character array (word participle)
for (var i = 0; i < this._codetxt.length; i++) {
if (this._wordDelimiters.indexOf
(this._codetxt.charAt(i)) ==-1) { //The keyword cannot be found
if (codeArr[word_index] == null || typeof
(codeArr[word_index]) == 'undefined') {
codeArr[word_index] = "";
}
codeArr[word_index] += this._codetxt.charAt
(i);
} else {
if (typeof(codeArr[word_index]) != 'undefined'
&& codeArr[word_index].length > 0)
word_index++;
codeArr[word_index++] = this._codetxt.charAt
(i);
}
}
var quote_opened �
var slash_star_comment_opened = false; //Multiple line notes
Release mark
var slash_slash_comment_opened = false; //Single-line note
Release mark
var line_num �
var quote_char
Tag type
var call_opened = false;
var call_string = "";
var var_opened = false;
var var_pause = false;
var function_opened = false;
var parameter_opened = false;
var var_map = new VariableMap
();
var cur_var_map = var_map;
var execute_opened = false;
//Display by split words and chunks
for (var i=0; i <=word_index; i++){
//handle pointer reference separately
if(call_opened&&typeof(codeArr[i])!="undefined"){
if(call_string.length==0){
if((codeArr[i])){
call_string +=codeArr[i];
}else{
htmlTxt[] = "[\"" +
(call_string) + "\"]";
if(codeArr[i]!=this._call){
htmlTxt[] = codeArr
[i];
call_opened = false;
}
call_string = "";
}
} else {
if(!(codeArr[i])){
htmlTxt[] = "[\"" +
(call_string) + "\"]";
if(codeArr[i]!=this._call){
htmlTxt[] = codeArr
[i];
call_opened = false;
}
call_string = "";
}else{
htmlTxt[] = "[\"" +
(call_string) + "\"]";
}
}
continue;
}
// Handle blank lines (due to escape)
if(typeof(codeArr[i])=="undefined"||codeArr
[i].length==0){
continue;
} else if(codeArr[i]==" "){
htmlTxt[] = " ";
} else if(codeArr[i]=="\n"){
// Handle line breaks
} else if (codeArr[i] == "\r"){
slash_slash_comment_opened = false;
quote_opened = false;
var_opened = false;
htmlTxt[] = "\r\n";
line_num++;
//Processing parameter marks in function
} else if (!slash_slash_comment_opened&&!
slash_star_comment_opened && !quote_opened &&
(codeArr[i])){
htmlTxt[] = codeArr[i];
function_opened = true;
} else if (!slash_slash_comment_opened&&!
slash_star_comment_opened && !quote_opened &&codeArr[i]=="("){
htmlTxt[] = codeArr[i];
if(function_opened == true){
function_opened =false;
var_opened = true;
cur_var_map = new VariableMap
(cur_var_map);
cur_var_map.isParameter = true;
}
} else if (!slash_slash_comment_opened&&!
slash_star_comment_opened && !quote_opened &&codeArr[i]==")"){
htmlTxt[] = codeArr[i];
//Processing var a = new Class(),b=new Date(); Similar
question
if(cur_var_map.isParameter){
var_opened = false;
var_pause = false;
}
} else if (!slash_slash_comment_opened&&!
slash_star_comment_opened && !quote_opened &&codeArr[i]==";"){
htmlTxt[] = codeArr[i];
var_opened = false;
var_pause = false;
if(execute_opened){
execute_opened = false;
}
} else if (!slash_slash_comment_opened&&!
slash_star_comment_opened && !quote_opened &&codeArr[i]
==this._var){
htmlTxt[] = codeArr[i];
var_opened = true;
var_pause = false;
} else if(!slash_slash_comment_opened&&!
slash_star_comment_opened && !quote_opened &&codeArr[i]
==this._varPause){
htmlTxt[] = codeArr[i];
var_pause = true;
} else if(!slash_slash_comment_opened&&!
slash_star_comment_opened && !quote_opened &&codeArr[i]
==this._varContinue){
htmlTxt[] = codeArr[i];
var_pause = false;
} else if(!slash_slash_comment_opened&&!
slash_star_comment_opened && !quote_opened &&codeArr[i]
==this._beginBlock){
cur_var_map = new VariableMap(cur_var_map);
var_opened = false;
htmlTxt[] = codeArr[i];
} else if(!slash_slash_comment_opened&&!
slash_star_comment_opened && !quote_opened &&codeArr[i]
==this._endBlock){
cur_var_map = cur_var_map.parent;
if(cur_var_map.isParameter){
cur_var_map = cur_var_map.parent;
}
htmlTxt[] = codeArr[i];
//Processing reference calls
} else if (!slash_slash_comment_opened&&!
slash_star_comment_opened && !quote_opened &&codeArr[i]
==this._call){
//Document whether the first one after the quote (.) is a letter_$
if(i<word_index-1){
if((codeArr[i+1])){
if(call_opened){
htmlTxt[] =
(call_string);
}
call_opened = true;
}else{
htmlTxt[] = this._call;
}
}else{
htmlTxt[] = this._call;
}
//Processing keywords
} else if (!slash_slash_comment_opened&&!
slash_star_comment_opened && !quote_opened &&
(codeArr[i])){
htmlTxt[] = codeArr[i];
// Process the string after eval
} else if (!slash_slash_comment_opened&&!
slash_star_comment_opened && !quote_opened && codeArr[i]
==this._execute){
htmlTxt[] = "window[\"" +
(codeArr[i]) + "\"]";
execute_opened = true;
//Window built-in objects
} else if (!slash_slash_comment_opened&&!
slash_star_comment_opened && !quote_opened &&
(codeArr[i])){
htmlTxt[] = "window[\"" +
(codeArr[i]) + "\"]";
// Handle ordinary objects
} else if (!slash_slash_comment_opened&&!
slash_star_comment_opened && !quote_opened &&
(codeArr[i])){
htmlTxt[] = "window[\"" +
(codeArr[i]) + "\"]";
//Processing double quotes (the quotation marks cannot be escaped characters)
} else if (!slash_star_comment_opened&&!
slash_slash_comment_opened&&this._quotation.contains(codeArr
[i])){
if (quote_opened){
//is the corresponding quotes
if(quote_char==codeArr[i]){
htmlTxt[] = codeArr[i];
quote_opened = false;
quote_char = "";
} else {
htmlTxt[] =
(codeArr[i]);
}
} else {
htmlTxt[] = codeArr[i];
quote_opened = true;
quote_char = codeArr[i];
}
//Processing escaped characters
} else if(codeArr[i] == this._escape){
htmlTxt[] = codeArr[i];
if(i<word_index-1){
if(codeArr[i+1].charCodeAt(0)
>=32&&codeArr[i+1].charCodeAt(0)<=127){
htmlTxt[] = codeArr
[i+1].substr(0,1);
htmlTxt[] =
(codeArr[i+1].substr(1));
i=i+1;
}
}
//The beginning of processing multi-line comments
} else if (!slash_slash_comment_opened && !
slash_star_comment_opened&&!quote_opened&&
(this._commentOn,codeArr,i)){
slash_star_comment_opened = true;
htmlTxt[] = this._commentOn;
i = i + (this._commentOn);
//Processing single line comments
} else if (!slash_slash_comment_opened && !
slash_star_comment_opened&&!quote_opened&&
(this._lineComment,codeArr,i)){
slash_slash_comment_opened = true;
if(!this._deleteComment){
htmlTxt[] =
this._lineComment;
}
i = i + (this._lineComment);
//Processing ignorant words
} else if (!slash_slash_comment_opened && !
slash_star_comment_opened&&!quote_opened&&
(this._ignore,codeArr,i)){
slash_slash_comment_opened = true;
htmlTxt[] = this._ignore;
i = i + (this._ignore);
//The process of multi-line comments ends
} else if (!quote_opened&&!
slash_slash_comment_opened&&
(this._commentOff,codeArr,i)){
if (slash_star_comment_opened) {
slash_star_comment_opened = false;
if(!this._deleteComment){
htmlTxt[] =
this._commentOff;
}
i = i +
(this._commentOff);
}
} else {
//Not in the string
if(!quote_opened){
//If it is not a comment
if(!slash_slash_comment_opened && !
slash_star_comment_opened){
//Not when defining variables
if(!var_opened){
if(
(cur_var_map,codeArr[i])==""){
htmlTxt[] =
codeArr[i];
}else{
htmlTxt[] =
(cur_var_map,codeArr[i]);
}
}else{
//Not when pausing the variable definition
if(var_pause){
if(
(cur_var_map,codeArr[i])==""){
htmlTxt[] =
codeArr[i];
}else{
htmlTxt[] =
(cur_var_map,codeArr[i]);
}
}else{
//Variables comply with the naming rules and (variables)
Before it is a space or tab character or comma such as: var a;var a;var a,b; and if so
Function parameters, such as: function(a,b,c)
if((codeArr[i])&&
(i>0&&codeArr[i-1]==" "||codeArr[i-1]=="\t"||codeArr[i-1]
==this._varContinue||cur_var_map.isParameter)){
var name =
();
cur_var_map.add(codeArr
[i],name);
htmlTxt[] =
(cur_var_map,codeArr[i]);
}else{
htmlTxt[] =
codeArr[i];
}
}
}
//In the comments
}else{
if(!this._deleteComment){
htmlTxt[] = codeArr
[i];
}
}
}else{
if(execute_opened){
if(
(cur_var_map,codeArr[i])==""){
htmlTxt[] = codeArr
[i];
}else{
htmlTxt[] =
(cur_var_map,codeArr[i]);
}
}else{
htmlTxt[] =
(codeArr[i]);
}
}
}
}
return ("");
}
= function(str,code,index){
if(typeof(str)!="undefined"&&>0){
var cc = new Array();
for(var i=index;i<index+;i++){
cc[] = code[i];
}
var c = ("");
if(this._caseSensitive){
if(>=code[index].length&&
(str)==0){
return true;
}
}else{
if(>=code
[index].length&&().indexOf(())
==0){
return true;
}
}
return false;
} else {
return false;
}
}
= function(val){
return this._function.contains(this._caseSensitive?
val:());
}
= function(val) {
return this._keywords.contains(this._caseSensitive?
val:());
}
= function(val) {
return this._window.contains(this._caseSensitive?
val:());
}
= function(val) {
return this._commonObjects.contains
(this._caseSensitive?val:());
}
= function(val){
var count = 0;
for(var i=0;i<;i++){
if(this._wordDelimiters.indexOf((i))
>=0){
count++;
}
}
if(count>0){
count=count-1;
}
return count;
}
//Convert string to hexadecimal form
= function(val){
var str = new Array();
for(var i=0;i<;i++){
var c = (i);
if(c>=0&&c<256){
str[] = "\\x" +
(i).toString(16);
}else{
str[] = "\\u" +
(i).toString(16);
}
}
return ("");
}
//Get the random name of the variable
= function(){
var style = parseInt(()*4);
var len = parseInt(()*9)+1;
var n = [];
this._varNum++;
var c =
"abcdefghijklmnopqrstuvwsyzABCDEFGHIJKLMNOPQRSTUVWXYZ_$";
for(var i=0;i<len;i++){
n[] = (parseInt(()
*54));
}
return ("")+this._varNum;
}
//Does it comply with the first rule of variable naming
= function(val){
return /^[a-zA-Z_\$].*$/.test(val);
}
//Translation variable, if the return is empty, this variable does not exist
= function(node,key){
if((key)){
return (key);
}
var cn = ;
while(cn!=null){
if((key)){
return (key);
}
cn = ;
}
return "";
}
}
function doConfusion(o){
var htmltxt = "";
if (o == null){
alert("domNode is null!");
return;
}
var _codetxt = "";
if(typeof(o)=="object"){
switch(){
case "TEXTAREA":
case "INPUT":
_codetxt = ;
break;
case "DIV":
case "SPAN":
_codetxt = ;
break;
default:
_codetxt = ;
break;
}
}else{
_codetxt = o;
}
var _syn = new CLASS_CONFUSION(_codetxt);
htmltxt = _syn.confusion();
return htmltxt;
}
function go()
{
var code = ("code").value;
var xx = new CLASS_CONFUSION(code);
var a = new Date();
("display").value = ();
alert("Total flowers:"+ (new Date().getTime()-())+
"ms");
}
//-->
</SCRIPT>