zoukankan      html  css  js  c++  java
  • 兄弟,你爬虫基础这么好,需要研究js逆向了,一起吧(有完整JS代码)

    这几天的确有空了,看更新多快,专门研究了一下几个网站登录中密码加密方法,比起滑块验证码来说都相对简单,适合新手js逆向入门,大家可以自己试一下,试不出来了再参考我的js代码。篇幅有限,完整的js代码在这里:从今天开始种树

    前戏

    今天要碰的是汽车之家,关于这个网站网上大多都再研究其字体反爬,如果想研究字体反爬的话直接搜一下就有很多。
    在这里插入图片描述
    今天主要是研究汽车之家在登录时的password加密方法,并通过python调用js的方式运行出加密结果。

    开始

    老规矩,打开登录页面,长下面这样,与大多网站一样的布局,切换到账号密码登录。
    在这里插入图片描述
    接下来应该知道怎么做了吧(花5秒钟假装思考一下),跟长颈鹿装进冰箱里一样,一共4步:

    • 把冰箱门打开:F12,切到Network页签(一般默认就是这个页签,建议大家都用chrome);
    • 把大象拿出来:输入账号密码,可别输入正确的哦;
    • 把长颈鹿放进去:在请求列表里查询关于登录发起的请求;
    • 把冰箱门关上:找到请求,查看POST(一般都是post请求,暂时还没见过其它方式的) url,还有FormData里的参数。

    把冰箱门打开

    按F12打开工具
    在这里插入图片描述

    把大象拿出来

    输入错误的账号密码。
    在这里插入图片描述

    把长颈鹿放进去

    找到请求,一般这种就需要就经验了,有时候这种请求名称会带login等字眼,通常都是ajax请求(切到XHR可以只看ajax请求,如果实在找不到可以切换到XHR),这样就不会有乱七八糟的图片、css、js请求干扰你。
    在这里插入图片描述

    把冰箱门关上

    这里只截取了部分数据,后面没截的大都是滑块验证码相关参数,这个后续再进行研究,今天只看这个pwd参数。
    在这里插入图片描述

    分析

    有了前面查看的结果,我们可以直接拿这个pwdsourecs里查找相关的js文件,从下图看有两个文件包含pwd关键字,第一个看着都不像,不信你可以点进去看看,第二个包含了login关键字,八九不离十就是它,点进去。
    在这里插入图片描述
    进行来后继续搜索pwd关键字,幸运的是只有一个结果:
    在这里插入图片描述
    那可以确定加密函数就是hex_md5了,一般我们会碰到的就是带有rsaMD5encrypt之类的函数,可以作为经验留意一下。

    调试

    整一个断点,我整在了413行,大家看自己的在第几行。
    在这里插入图片描述
    输入账号密码,点击登录然后应该就会跳转到413行,点击右侧下一步箭头,就是下面这个:
    在这里插入图片描述

    hex_md5函数

    一步一步运行进入hex_md5函数,函数长这样:

    function hex_md5(s) {
        return binl2hex(core_md5(str2binl(s), s.length * chrsz));
    }
    

    s是我们的密码,可以看出调用了binl2hexcore_md5,还有一个chrsz变量,往上看一点就发现了chrsz
    在这里插入图片描述
    hex_md5函数返回的就是最终加密的结果。

    binl2hex函数

    function binl2hex(binarray) {
        var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
        var str = "";
        for (var i = 0; i < binarray.length * 4; i++) {
            str += hex_tab.charAt((binarray[i >> 2] >> ((i % 4) * 8 + 4)) & 0xF) + hex_tab.charAt((binarray[i >> 2] >> ((i % 4) * 8)) & 0xF);
        }
        return str;
    }
    

    hexcase 在前面那个图里有,binarray先不用管,这是core_md5返回的值,函数相对简单,内部也没有继续调用小函数,我们也不用知道干了啥,到时候抠出来直接调用即可。

    str2binl函数

    function str2binl(str) {
        var bin = Array();
        var mask = (1 << chrsz) - 1;
        for (var i = 0; i < str.length * chrsz; i += chrsz)
            bin[i >> 5] |= (str.charCodeAt(i / chrsz) & mask) << (i % 32);
        return bin;
    }
    

    这个函数也没有内部小函数了。

    core_md5函数

    这个函数就长了,内部也调用了很多,这里只截部分了,建议分别去看看调用的这些小函数,比如md5_ff等,这样后面好扣代码:

    function core_md5(x, len) {
        /* append padding */
        x[len >> 5] |= 0x80 << ((len) % 32);
        x[(((len + 64) >>> 9) << 4) + 14] = len;
        var a = 1732584193;
        var b = -271733879;
        var c = -1732584194;
        var d = 271733878;
        for (var i = 0; i < x.length; i += 16) {
            var olda = a;
            var oldb = b;
            var oldc = c;
            var oldd = d;
            a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936);
            d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586);
            c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819);
            b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);
            a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897);
            .....
            省略
            .....
    

    抠出来python运行

    前面已经把js代码加密思路理了一下,大家可以自己试着抠一下,实在抠不出来的点击这里从今天开始种树参考完整js代码,接下来使用python运行,使用的依然是execjs库。

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

    结果对比

    FormData里的加密结果:
    在这里插入图片描述
    python运行的结果:
    在这里插入图片描述
    看看的确是一模一样,一方面说明没问题,另外一方面说明加密方法跟时间戳没什么关系,有些网站加密结果还会跟时间戳、useragent等有关。

    结束

    整个过程并不难,又是一个适合js逆向入门练手级网站,可以通过这个例子练习一下调试技巧,完整代码点击这里从今天开始种树,关注下面的公众号,获取更多内容,当然不关注也无所谓。
    在这里插入图片描述

  • 相关阅读:
    leetcode 190 Reverse Bits
    vs2010 单文档MFC 通过加载位图文件作为客户区背景
    leetcode 198 House Robber
    记忆化搜索(DP+DFS) URAL 1183 Brackets Sequence
    逆序数2 HDOJ 1394 Minimum Inversion Number
    矩阵连乘积 ZOJ 1276 Optimal Array Multiplication Sequence
    递推DP URAL 1586 Threeprime Numbers
    递推DP URAL 1167 Bicolored Horses
    递推DP URAL 1017 Staircases
    01背包 URAL 1073 Square Country
  • 原文地址:https://www.cnblogs.com/luohua13950/p/13551042.html
Copyright © 2011-2022 走看看