网页抓取解密(简单的js逆向:该页面只有code参数进行了加密 )

优采云 发布时间: 2022-01-31 13:07

  网页抓取解密(简单的js逆向:该页面只有code参数进行了加密

)

  简单的js逆向:

  只有本页的code参数加密,比较适合刚学js逆向的同学

  解决方法:抓取数据加载界面 老办法,直接按F12打开开发者工具(这里使用chrome)。清除原创数据信息。点击市值列表。点击查看今日收益。点击进入加载的连接。

  

  寻找参数加密方法

  1.这里多次重复加载页面,发现有两个变量1:timestamp,2:code。可以看出,一个是13位的时间戳,另一个是前端的加密参数。

  

  2.老方法ctrl+shift+f,搜索code,一般加密入口是第一个,我们点击格式化,然后继续搜索code参数。

  

  3.我找到了55,别急着慢慢找,嘿嘿,好像是这个,连其他参数都显示出来了

  

  4. 下断点,重新加载页面,可以看到code参数是由o生成的,生成方式为r()(e + “9527” + e.substr(0, 6)),那么这个e是什么,当然不难看出是时间戳,然后我们要找到r()方法,只要找到这个方法,然后代码解密可以解决的。

  

  5.选择r(),然后点击进入这个函数,可能会卡住,耐心等待。

  

  6.加载后可以看到生成的方法,那我们用python写是不可能的,所以扣掉他的js代码。

  

  7.我知道你很懒,我帮你剪掉,但是直接用不行,需要稍微改一下。

  function s(t, e) {

t.constructor == String ? t = e && "binary" === e.encoding ? stringToBytes(t) : i_stringToBytes(t) : o(t) ? t = Array.prototype.slice.call(t, 0) : Array.isArray(t) || (t = t.toString());

for (var r = bytesToWords(t), u = 8 * t.length, f = 1732584193, c = -271733879, l = -1732584194, h = 271733878, d = 0; d 24) | 4278255360 & (r[d] > 8);

r[u >>> 5] |= 128 > 9 0,

c = c + g >>> 0,

l = l + _ >>> 0,

h = h + w >>> 0

}

return endian([f, c, l, h])

}

function _ff(t, e, r, n, i, o, a) {

var s = t + (e & r | ~e & n) + (i >>> 0) + a;

return (s > 32 - o) + e

}

function _gg(t, e, r, n, i, o, a) {

var s = t + (e & n | r & ~n) + (i >>> 0) + a;

return (s > 32 - o) + e

}

function _hh(t, e, r, n, i, o, a) {

var s = t + (e ^ r ^ n) + (i >>> 0) + a;

return (s > 32 - o) + e

}

function _ii(t, e, r, n, i, o, a) {

var s = t + (r ^ (e | ~n)) + (i >>> 0) + a;

return (s > 32 - o) + e

}

function rotl(t, e) {

return t > 32 - e

}

function endian(t) {

if (t.constructor == Number)

return 16711935 & rotl(t, 8) | 4278255360 & rotl(t, 24);

for (var e = 0; e > 5] |= t[r] >> 24 - r % 32 & 255);

return e

}

function bytesToString(t) {

for (var e = [], r = 0; r > 4).toString(16)),

e.push((15 & t[r]).toString(16));

return e.join("")

}

function outcode(t, e) {

var r = wordsToBytes(s(t, e));

return e && e.asBytes ? r : e && e.asString ? bytesToString(r) : bytesToHex(r)

}

function get_code() {

var e = Date.now().toString(), o = outcode(e + "9527" + e.substr(0, 6));

return [e,o];

}

console.log(get_code())

  8.执行一下看看效果,好像还可以,至于怎么获取数据,我有一点,明白了!

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线