JS混淆使用了什么?

时间:2015-04-25 14:21:34

标签: javascript obfuscation

你们有没有想过使用什么样的JS混淆?

解码器:

<script type="text/javascript">
function a(data){
  return unescape(atob(data));
}
</script>

混淆:

<script type='text/javascript'>document.write(a('JTNjJTY5JTY2JTcyJTYxJTZkJTY1JTIwJTY5JTY0JTNkJTI3JTZkJTZmJTc2JTY5JTY1JTI3JTIwJTYzJTZjJTYxJTczJTczJTNkJTI3JTY1JTZkJTYyJTY1JTY0JTJkJTcyJTY1JTczJTcwJTZmJTZlJTczJTY5JTc2JTY1JTJkJTY5JTc0JTY1JTZkJTI3JTIwJTYxJTZjJTZjJTZmJTc3JTY2JTc1JTZjJTZjJTczJTYzJTcyJTY1JTY1JTZlJTNkJTI3JTc0JTcyJTc1JTY1JTI3JTIwJTc3JTY1JTYyJTZiJTY5JTc0JTYxJTZjJTZjJTZmJTc3JTY2JTc1JTZjJTZjJTczJTYzJTcyJTY1JTY1JTZlJTNkJTI3JTc0JTcyJTc1JTY1JTI3JTIwJTZkJTZmJTdhJTYxJTZjJTZjJTZmJTc3JTY2JTc1JTZjJTZjJTczJTYzJTcyJTY1JTY1JTZlJTNkJTI3JTc0JTcyJTc1JTY1JTI3JTIwJTczJTcyJTYzJTNkJTI3JTY4JTc0JTc0JTcwJTNhJTJmJTJmJTc2JTY5JTY0JTY1JTZmJTYxJTcwJTY5JTJlJTZkJTc5JTJlJTZkJTYxJTY5JTZjJTJlJTcyJTc1JTJmJTc2JTY5JTY0JTY1JTZmJTczJTJmJTY1JTZkJTYyJTY1JTY0JTJmJTZkJTYxJTY5JTZjJTJmJTYyJTY1JTZjJTZjJTczJTYxJTczJTJmJTc2JTY5JTY0JTY1JTZmJTJmJTVmJTZkJTc5JTc2JTY5JTY0JTY1JTZmJTJmJTM3JTMwJTMwJTJlJTY4JTc0JTZkJTZjJTI3JTIwJTY2JTcyJTYxJTZkJTY1JTYyJTZmJTcyJTY0JTY1JTcyJTNkJTI3JTMwJTI3JTIwJTczJTY1JTYxJTZkJTZjJTY1JTczJTczJTNlJTNjJTJmJTY5JTY2JTcyJTYxJTZkJTY1JTNl'))</script>

样本:

jsbin:http://jsbin.com/cunefiwiti

感谢您的回答。

2 个答案:

答案 0 :(得分:4)

atob是base64编码。您可以使用btoa将其撤消。

在内容上添加运行btoa似乎会产生一个uri编码的字符串。这有点傻。

结果是:

 <iframe id='movie' class='embed-responsive-item' allowfullscreen='true' webkitallowfullscreen='true' mozallowfullscreen='true' src='[kind dangerous looking url]' frameborder='0' seamless></iframe>

已使用:decodeURIComponent(atob(string));

答案 1 :(得分:0)

经过多次实践,我得到了自己的答案。

<?php
function mb_rawurlencode($url){
    $encoded='';
    $length=mb_strlen($url);
    for($i=0;$i<$length;$i++){
    $encoded.='%'.wordwrap(bin2hex(mb_substr($url,$i,1)),2,'%',true);
    }
    return $encoded;
}

function jso_encode($data) {
    return base64_encode(mb_rawurlencode($data));
}
?>

示例用法:

<!DOCTYPE html>
  <html>
  <head>
    <meta charset="utf-8">
    <title>Sandbox</title>
    <script>
    function a(data){
        return unescape(atob(data));
    }
    </script>
  </head>
  <body>
    <script type='text/javascript'>document.write(a('<?php echo jso_encode("code_goes_here");?>'));</script>
    </body>
</html>