58同城登陆参数password值,js解密

该文章主要提供交流学习使用,请勿利用其进行不当行为!
如本篇文章侵犯了贵公司的隐私,请联系我立刻删除!

个人博客:http://www.feastawlisao.com/
欢迎关注个人公众号:pythonORjs

今天分享一下58同城的登陆参数password的解密过程。
首先我们打开58同城,打开开发者工具,输入账号密码,可以先输入错误的,进行抓包。然后进行查找,如下图所示。
在这里插入图片描述
开始分析参数,username是账号,password就是密码,token是非固定的,其他参数都是一些正常的参数,携带即可,这里就不过多讲解,为什么这些参数携带即可,如有兴趣可以留言。
我们呢就开始找password藏在哪个js当中,经过搜索排查后发现在藏在mobileLoginxxxxx.js当中,里面有很多n.encrypt(e.password),经过调试,加密是从这里开始进行的,我们下断点,发现,e.password就是我们输入的密码,encrypt这个函数,经常搞加密的,一眼就能看出来这是个rsa加密,哈哈哈,所以,我们进入encrypt函数里进行调试。
在这里插入图片描述
进入函数后,里面就显示了加密过程,我们一一分析即可。经过调试,我们可以写成这样。

e_prototype_encrypt = function (e) {
    var rsaExponent = "010001"
    var rsaModulus = "008baf14121377fc76eaf7794b8a8af17085628c3590df47e6534574efcfd81ef8635fcdc67d141c15f51649a89533df0db839331e30b8f8e4440ebf7ccbcc494f4ba18e9f492534b8aafc1b1057429ac851d3d9eb66e86fce1b04527c7b95a2431b07ea277cde2365876e2733325df04389a9d891c5d36b7bc752140db74cb69f"
    r = 1411093327735 - (new Date).getTime(),
        o = (new Date).getTime() + r;
    encryptString(o + e, rsaExponent, rsaModulus)
}

在这里插入图片描述
这里说一下,调试工具有很多,wt-js,乐易助手,WebStorm ,都可以进行调试。
此处,修改完代码后,我们进入encryptString函数里面。然后把代码抠出来,因为里面只有600行代码,我们全部抠出来。然后运行,发现未定义,其实不是这个函数未定义,因为代码里面可以搜到,其实是window未定义,,我们加上window = this;即可,全局意思。
在这里插入图片描述
然后我们函数传入密码,运行。可以发现,我们用js运行出来的,可网站的一模一样。大功告成撒。
在这里插入图片描述
有人说,我把rsa的rsaExponent和rsaModulus参数写死了,会不会有问题,这个可以直接搜索一下,这两个参数是一直都不会变的。
在这里插入图片描述
至于token参数,也是接口返回的。和上面的rsa参数一样,都是通过刷新login页面返回的,可以试一下。
在这里插入图片描述
用python调用一下js代码,然后post传入参数即可。
完整代码,需要python or js代码可以留言撒。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章