hasegawa
This tag recreates the EPIC non-alpha JavaScript that Yosuke Hasegawa discovered on the slackers forum.
Created by: hackvertor
Installed 1 times
Category: XSS
Created on: Thursday, October 17, 2024 at 11:47:48 AM
Updated on: Thursday, October 17, 2024 at 5:30:04 PM
Tag arguments
[
{
"type": "string",
"help": "This provides symbols to use for the non-alpha code.",
"defaultValue": "ªÀÁÂÃÄÆÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþ$_"
}
]
Code
class hasegawa {
encode(code, symbolsStr) {
var symbols = (symbolsStr + "").split("");
var func = "";
var symbol = "$";
var symbol1 = "$";
var symbol2 = "$$";
var symbol3 = "$$$";
var symbol4 = "$$$$";
var symbol5 = "$$$$$";
var symbol6 = "$$$$$$";
for (var i = 0; i < 6; i++) {
if (symbols.length > 0) {
var pos = Math.floor(Math.random() * symbols.length - 1);
var symbol = symbols[pos];
symbols.splice(pos, 1);
} else {
symbol += symbol;
}
switch (i) {
case 0:
symbol1 = symbol;
break;
case 1:
symbol2 = symbol;
break;
case 2:
symbol3 = symbol;
break;
case 3:
symbol4 = symbol;
break;
case 4:
symbol5 = symbol;
break;
case 5:
symbol6 = symbol;
break;
}
}
var nums = [
symbol1 + "-" + symbol1,
symbol1 + "-" + symbol2,
symbol2,
symbol1,
symbol2 + "+" + symbol2,
symbol2 + "+" + symbol1,
symbol1 + "+" + symbol1,
symbol3,
symbol4,
symbol1 + "*" + symbol1,
];
func +=
symbol2 +
"=-~-~[]," +
symbol1 +
"=-~" +
symbol2 +
"," +
symbol4 +
"=" +
symbol2 +
"<<" +
symbol2 +
"," +
symbol3 +
"=" +
symbol4 +
"+~[];";
func +=
symbol5 +
"=(" +
nums[0] +
")[" +
symbol6 +
"=(''+{})[" +
nums[5] +
"]+(''+{})[" +
nums[1] +
"]+([]." +
symbol1 +
"+'')[" +
nums[1] +
"]+(!!''+'')[" +
nums[3] +
"]+({}+'')[" +
nums[6] +
"]+(!''+'')[" +
nums[1] +
"]+(!''+'')[" +
nums[2] +
"]+(''+{})[" +
nums[5] +
"]+({}+'')[" +
nums[6] +
"]+(''+{})[" +
nums[1] +
"]+(!''+'')[" +
nums[1] +
"]][" +
symbol6 +
"]";
code = code.replace(/.+/, function (c) {
var output = [];
c = c + "";
for (var j = 0; j < c.length; j++) {
var cc = c.charCodeAt(j).toString(8).split("");
for (var i = 0; i < cc.length; i++) {
cc[i] = "(" + nums[cc[i]] + ")";
}
output.push("'\\\\'+" + cc.join("+"));
}
return (
"+" +
symbol5 +
"((!''+'')[" +
nums[1] +
"]+(!''+'')[" +
nums[3] +
"]+(!''+'')[" +
nums[0] +
"]+(!''+'')[" +
nums[2] +
"]+((!''+''))[" +
nums[1] +
"]+([].$+'')[" +
nums[1] +
"]" +
"+'\\''" +
"+" +
"''+" +
output.join("+") +
"+'\\'')()"
);
});
return func + ";" + "" + symbol5 + "(" + code.replace(/^\+/, "") + ")()";
}
}