随波逐流工作室—-探索前沿科技,分享最新软件。点击标题下蓝字“长弓三皮”关注,我们将为您提供有深度、有价值、有意思的阅读。
朋友们,现在只对常读和星标的公众号才展示大图推送,建议大家把长弓三皮“设为星标”,否则可能就看不到了啦!
作者:随波逐流
生活如梦,我愿随风起,随波流,享受每一刻的自在与轻盈。
字密1 菜单
JJEncode是一种把JS代码转换为只有符号的编码方式。
JJEncode解密:
执行路径:[随波逐流]CTF编码工具--字密1--JJEncode解密
文本框输入密文,结果区输出明文。
密文:$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$__:++$,$_$:++$,$$__:({}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+($._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$$_])+($.$=(!""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$.$;$.$$=$.$+(!""+"")[$._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$($.$($.$$+"""+"\"+$.__$+$.__$+$.__$+"\"+$.__$+$.__$+$.$__+"\"+$.__$+$.__$+$.$$$+"\"+$.__$+$._$_+$.$$_+"\"+$.__$+$.___+$.$_$+"\"+$.__$+$._$_+$._$$+"\"+$.__$+$.___+$._$_+"\"+$.__$+$._$$+$._$_+"\"+$.__$+$.__$+$.$__+""")())();
明文:ILOVESBZL
解密结果:ILOVESBZL
JJEncode是一种JavaScript代码混淆技术,主要用于将字符串转换成不易被识别的形式,以防止某些安全问题,如XSS(跨站脚本攻击)或者数据窃取。下面详细介绍JJEncode编码的工作原理和过程:
编码过程:
JJEncode通过一个函数 jjencode(gv, text)
实现编码,其中gv
是一个全局变量,用于在编码后的字符串中引用,text
是要编码的原始字符串。编码函数使用一个数组 b
,包含16个不同的字符串组合,用于后续编码过程中字符的替换。
字符处理:
对于每个字符,首先获取其ASCII码值 n
。如果n
是双引号(0x22
)或反斜杠(0x5c
),将其转换为对应的16进制转义序列。对于ASCII码值在一定范围内的字符(如 0x21
至0x2f
,0x3A
至0x40
等),直接将字符添加到结果字符串s
中。对于数字和特定字母( 0x30
至0x39
,0x61
至0x66
),使用全局变量gv
和数组b
中的字符串进行替换。对于 'l'
(0x6c
)、'o'
(0x6f
)、'u'
(0x74
和0x75
),有特定的替换规则。对于ASCII值小于128的字符,将其8进制表示替换为对应的 gv
和b
中的字符串。对于ASCII值大于127的字符,将其16进制表示替换为对应的 gv
和b
中的字符串。
编码结果:
编码后的字符串 r
由多个部分组成,包括全局变量gv
的定义和初始化,以及编码后的字符串本身。最终, r
被构建为一个完整的JavaScript表达式,该表达式在执行时会还原原始字符串。
使用方式:
通过调用 jjencode('$', 'alert("Hello, JavaScript")')
,可以将原始的JavaScript代码'alert("Hello, JavaScript")'
编码为JJEncode格式。
JJEncode编码的代码通常只包含字母、数字和部分特殊字符,这使得它在某些情况下难以被识别和拦截,从而提高了代码的安全性。然而,这种编码方式也可能被恶意利用,因此在处理来自不可信源的JavaScript代码时需要格外小心。
jjencode源代码:
functionjjencode( gv, text )
{
var r="";
var n;
var t;
var b=[ "___", "__$", "_$_", "_$$", "$__", "$_$", "$$_", "$$$", "$___", "$__$", "$_$_", "$_$$", "$$__", "$$_$", "$$$_", "$$$$", ];
var s = "";
for( var i = 0; i < text.length; i++ ){
n = text.charCodeAt( i );
if( n == 0x22 || n == 0x5c ){
s += "\\\" + text.charAt( i ).toString(16);
}elseif( (0x21 <= n && n <= 0x2f) || (0x3A <= n && n <= 0x40) || ( 0x5b <= n && n <= 0x60 ) || ( 0x7b <= n && n <= 0x7f ) ){
//}elseif( (0x20 <= n && n <= 0x2f) || (0x3A <= n == 0x40) || ( 0x5b <= n && n <= 0x60 ) || ( 0x7b <= n && n <= 0x7f ) ){
s += text.charAt( i );
}elseif( (0x30 <= n && n <= 0x39 ) || (0x61 <= n && n <= 0x66 ) ){
if( s ) r += """ + s +""+";
r += gv + "." + b[ n < 0x40 ? n - 0x30 : n - 0x57 ] + "+";
s="";
}elseif( n == 0x6c ){ // 'l'
if( s ) r += """ + s + ""+";
r += "(![]+"")[" + gv + "._$_]+";
s = "";
}elseif( n == 0x6f ){ // 'o'
if( s ) r += """ + s + ""+";
r += gv + "._$+";
s = "";
}elseif( n == 0x74 ){ // 'u'
if( s ) r += """ + s + ""+";
r += gv + ".__+";
s = "";
}elseif( n == 0x75 ){ // 'u'
if( s ) r += """ + s + ""+";
r += gv + "._+";
s = "";
}elseif( n < 128 ){
if( s ) r += """ + s;
else r += """;
r += "\\"+" + n.toString( 8 ).replace( /[0-7]/g, function(c){ return gv + "."+b[ c ]+"+" } );
s = "";
}else{
if( s ) r += """ + s;
elser += """;
r += "\\"+" + gv + "._+" + n.toString(16).replace( /[0-9a-f]/gi, function(c){ returngv + "."+b[parseInt(c,16)]+"+"} );
s = "";
}
}
if( s ) r += """ + s + ""+";
r =
gv + "=~[];" +
gv + "={___:++" + gv +",$$$$:(![]+"")["+gv+"],__$:++"+gv+",$_$_:(![]+"")["+gv+"],_$_:++"+
gv+",$_$$:({}+"")["+gv+"],$$_$:("+gv+"["+gv+"]+"")["+gv+"],_$$:++"+gv+",$$$_:(!""+"")["+
gv+"],$__:++"+gv+",$_$:++"+gv+",$$__:({}+"")["+gv+"],$$_:++"+gv+",$$$:++"+gv+",$___:++"+gv+",$__$:++"+gv+"};"+
gv+".$_="+
"("+gv+".$_="+gv+"+"")["+gv+".$_$]+"+
"("+gv+"._$="+gv+".$_["+gv+".__$])+"+
"("+gv+".$$=("+gv+".$+"")["+gv+".__$])+"+
"((!"+gv+")+"")["+gv+"._$$]+"+
"("+gv+".__="+gv+".$_["+gv+".$$_])+"+
"("+gv+".$=(!""+"")["+gv+".__$])+"+
"("+gv+"._=(!""+"")["+gv+"._$_])+"+
gv+".$_["+gv+".$_$]+"+
gv+".__+"+
gv+"._$+"+
gv+".$;"+
gv+".$$="+
gv+".$+"+
"(!""+"")["+gv+"._$$]+"+
gv+".__+"+
gv+"._+"+
gv+".$+"+
gv+".$$;"+
gv+".$=("+gv+".___)["+gv+".$_]["+gv+".$_];"+
gv+".$("+gv+".$("+gv+".$$+"\""+" + r + ""\"")())();";
returnr;
}
使用方式即是:
jjencode( '$', 'alert("Hello, JavaScript" )' )
参数1,就类似于混淆代码中的一个全局变量,参数2就是具体要进行混淆的原JS代码。
在CTF中一般使用浏览器控制台进行解码
jsfuck、jjencode、aaencode可以被很轻易的还原:第一步:首先打开谷歌浏览器,进入浏览器控制台。第二步:去掉最后一行末尾的(),复制加密后的代码;第三步:在console控制台粘贴你第二步复制的代码;第四步:回车,达到便能得到解密后的代码。
你若喜欢,为“长弓三皮”点个赞和在看哦
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...