京东post登陆参数js分析,密码加密的RSA加密实现

JavaScript030

京东post登陆参数js分析,密码加密的RSA加密实现,第1张

老规矩先用错误信息登陆一下抓一下包,看看有那些post字段:

大概我们就知道我们要分析的字段有nloginpwd其余字段还不清楚,就在上下在看看其他数据包,根据pubkey我们猜测加密方式大概是RSA,继续查看其他数据包,找到一个有价值的get包

信息是:

没有发现明确的关键字,但是可以猜想bg、challenge、patch应该和我们的加密参数相关,但是不确定,只有继续分析加密的js片段:

其中好几个字段都是$("#??")格式,这种表示是来自页面的,那在看看网页源码

果然发现了很多有价值的东西在post表单中的,其中只有两个参数是需要单独获取的,其余都是从html源码里面解析出来的

authcode来源

是获取的源码中的一个值,再看源码

看样子是在验证码操作的时候触发的一个请求,返回的authcode的值,查看authcode请求的数据包

这个请求看起来不是那么友好,有好几个疑似加密字段,这个参数暂时放放,继续分析我们的passWord的加密。

继续深入getEntryptPwd($('#nloginpwd').val()),查看源码

核心的就两行

encrypt.setPublicKey(pubKey)return encrypt.encrypt(pwd)这必定是RSA加密无疑了,继续查看源码,单独的一个源码文件,一共3300多行,删减版如下

JSEncrypt是前端使用的实现RSA加密的库,看样子应该比较标准,那就试试能不能改写了,复制全部源码到node.js,会提示navigator、window未定义,这个问题很简单,在文件头定义

var navigator = this

var window = this

然后在文件尾部写个调用程序试试

是可以成功返回RSA加密结果的

京东的post请求不是太难,参数也能在源码中找到,但是他的难度在发出post请求之前的一个get请求,这个get请求和验证有关,和用户名相关,简单看了一下感觉有点复杂,留在第二篇讲获取authcode参数的其他参数是怎么来的。

ID:Python之战

|作|者|公(zhong)号:python之战

专注Python,专注于网络爬虫、RPA的学习-践行-总结

喜欢研究和分享技术瓶颈,欢迎关注

独学而无友,则孤陋而寡闻!

找代码是一件繁琐的事情,用IE的开发工具比较容易懂,分析当前页面的密码输入框的名称ID什么的,然后找JS代码中搜索这个文本框的名称或ID 在此处下断点调试 然后就一步一步的来了 反正是繁琐的 要每个页面都要找,各种对象的分析等,多下断点,分析各个函数的调用 然后复制这些JS代码到易语言常量,执行JS代码,借用各种JS调试工具调试,大概就是这样的!

如果那段代码是用来处理数据可以用ajax来实现。我简单举个例子比如这个函数functioncount(a){returna+=10}参数a返回值+10,但是我们不想让别人知道函数内部是怎么处理的我们可以把处理的过程移到后台,这里我后台用php举例test1.php然后在前端用ajax传参数到后台,得到计算的返回值,我这里用jquery的post运行这段代码,就可发现alert(count(num))与post回传的alert(s)值是一样的,但是用post别人是看不到+=10这段后台处理过程的原理就是这么简单