aHR0cHM6Ly9xYWMtcXVwb3N0LnF1dG91dGlhby5uZXQvbWVtYmVyL2xvZ2lu
注意:文章内容仅用于学习和技术交流,如有侵权请联系我删除。
学者应洁身自好,切勿做出违法的事情。
➣➣欢迎关注本人微信公众号:Anonymous NoteBook➣➣
分享好玩有趣的网络资源&软件工具~
分享各种技术性PDF资源/付费查询PDF资源~
分享各种编程语言、开发技术、分布式事务、大数据与云计算技术~
分享有关网络爬虫(Web爬虫逆向 | 安卓逆向)案例、数据挖掘、技术心得等~
开始分析:
[ Ps: 手机号为随意填写,请勿当真!!! ]
我们看下请求得接口:
请求参数均为加密参数,所以我们第一步要破解这两个加密参数才能在后续的模拟请求中使用。
逆向开始:
我们进行全局搜索(Ctrl+shift+f), 我们先搜索下 " telephone "这个参数,看下结果:
在搜索的结果项中,返现了一条与加密相关的语句,我们点进去看下,不出意外,加密逻辑就在此处。
加密逻辑一下子就清晰起来了,一般懂点js语法的都能看出其中的逻辑判断语句,这里不多做讲解。
我们在其中看到了加密关键词 “encryptDes” ,另外仔细观察的话,可以看到“telephone”和“password”使用的是同一个加密函数 ---encryptDes,这里可以打个断点进行动态调试看下:
这里的变量 ‘e’ 是 ‘pwdForm’的值,而变量‘pwdForm’是一个事先声明的字典对象,在后面逻辑判断中动态的设置字段:
根据调试的结果,e.password 就是我们传进来的 “密码/手机号”,被当作匿名函数的参数,我们跟进去匿名函数后发现,这是一个典型的AES加密:
接下来,就很好办了,把加密逻辑代码拷贝下来粘贴到js文件中,稍加改进后,就可以进行测试了,最后结果与网页数据一毛一样:
完整代码:
var CryptoJS = require('crypto-js')
//账号、密码加密
function encryptDesPwd(t) {
var e = CryptoJS.enc.Utf8.parse("625202f9149e061d");
return CryptoJS.DES.encrypt(t, e, {
mode: CryptoJS.mode.ECB,
padding:CryptoJS.pad.Pkcs7
}).toString()
}
console.log(encryptDesPwd('15864566545'))
console.log(encryptDesPwd('123456789'))