12

兄弟们,我打算抠100个网站JS加密代码来召唤神龙,支持的点个赞,这次轮到小虎牙

 3 years ago
source link: http://www.happyhong.cn/ni-xiang/pa-chong/10027.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
兄弟们,我打算抠100个网站JS加密代码来召唤神龙,支持的点个赞,这次轮到小虎牙 | 从今天开始种树

本次研究虎牙登录密码加密JS代码,难度不大,依然建议各位读者参考文章独自完成,实在抠不出来再参考这里的完整代码:从今天开始种树

打开网站虎牙,点击登录标签,跳到登录界面:

在这里插入图片描述
在这里插入图片描述

按下F12,输入错误的账号密码,查看发送的网络请求,从名字就能确定是哪个请求,看下图:

在这里插入图片描述
在这里插入图片描述
看一下都提交了哪些参数,查看Formdata,可以看粗来password已经被加密了:
在这里插入图片描述
在这里插入图片描述

好了,那就通过调用栈进去直接查找password关键字,查看调用栈:

在这里插入图片描述
在这里插入图片描述
依然通过名字来判断点到哪个js文件。进去以后查找password,我找的适合password一共有13处,慢慢翻,翻到酷似加密的地方,打上断点:
在这里插入图片描述
在这里插入图片描述

接下来激活断点(即输入账号密码,点击登录按钮)就跳到下面的环节:

在这里插入图片描述
在这里插入图片描述

点击下一步就跳到下面这里:

在这里插入图片描述
在这里插入图片描述
一步一步运行,上下拉一下看看,SHA1代码并不多,直接抠出来能找到结尾的地方的吧:
      SHA1: prototype = {
            hexEncode: function(e) {
                return this.toHex(this.core(this.toArray(e)))
            },
            toArray: function(e) {
                for (var t = (e.length + 8 >> 6) + 1, o = new Array(16 * t), n = 0; 16 * t > n; n++)
                    o[n] = 0;
                for (n = 0; n < e.length; n++)
                    o[n >> 2] |= e.charCodeAt(n) << 24 - 8 * (3 & n);
                return o[n >> 2] |= 128 << 24 - 8 * (3 & n),
                o[16 * t - 1] = 8 * e.length,
                o
            },
            toHex: function(e) {
                for (var t = "0123456789abcdef", o = "", n = 0; n < 4 * e.length; n++)
                    o += t.charAt(e[n >> 2] >> 8 * (3 - n % 4) + 4 & 15) + t.charAt(e[n >> 2] >> 8 * (3 - n % 4) & 15);
                return o
            },
            core: function(e) {
                for (var t = e, o = new Array(80), n = 1732584193, a = -271733879, s = -1732584194, i = 271733878, r = -1009589776, c = 0; c < t.length; c += 16) {
                    for (var d = n, l = a, u = s, p = i, m = r, h = 0; 80 > h; h++) {
                        o[h] = 16 > h ? t[c + h] : this.rol(o[h - 3] ^ o[h - 8] ^ o[h - 14] ^ o[h - 16], 1);
                        var g = this.add(this.add(this.rol(n, 5), this.ft(h, a, s, i)), this.add(this.add(r, o[h]), this.kt(h)));
                        r = i,
                        i = s,
                        s = this.rol(a, 30),
                        a = n,
                        n = g
                    }
                    n = this.add(n, d),
                    a = this.add(a, l),
                    s = this.add(s, u),
                    i = this.add(i, p),
                    r = this.add(r, m)
                }
                return new Array(n,a,s,i,r)
            },
        ...
        篇幅有限,省略了
        ...
        }
Javascript

python运行

老掉牙的代码来了

import execjs
with open('..//js//huya.js', encoding='utf-8') as f:
    huya= f.read()
js = execjs.compile(huya)
logid = js.call('hexEncode', "123456")
print(logid)
Javascript

运行结果:

在这里插入图片描述
在这里插入图片描述
抠成功。

由于代码放在一篇文章的话太多,所以完整代码放在了这里从今天开始种树,更多内容关注下面的公众号,当然不关注也无所谓。

在这里插入图片描述
在这里插入图片描述

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK