js 逆向调试初学笔记
1目标网站:https://sk.open.com.cn/stuspace-auth/#/login?redirect=%2Fchoose-business1.登录控制台抓包 密码一般输入123456方便猜是什么加密比如MD5是16位 49开头32位是e10开头 sha1 是 7c4a8d09ca3762af61e59520943dc26494f8941b
2.发现password加密了
密文是8EFC459F5837CCE06914D8C41AFDBC47A5B2AD5D分析是40位可能是sha1加密了 但不是7c4a8d09ca3762af61e59520943dc26494f8941b可能是往里面加了东西
比如123456后面加ABC其他什么之类的或者其他的处理
3.通过search搜索 password
4.jqueryvueaxios(ajax的一个发包工具) 这些框架的min.js先过滤掉
如果搜索结果太多可以password=,password:,或者.password (类方法调用)
因为要给password赋值多半是password=赋值或者password:对象赋值
5.在觉得可疑的地方打上断点
发现是明文的123456我们需要的是密文 往下继续运行知道找到加密的密文
很大概率就是在这里加密的我们就追栈看下是那个栈调用了加密方法加密了password
上一个栈变成明文的了
很大概率就是在这里加密的我们就追栈看下是那个栈调用了加密方法加密了password
分析Object(l.h)(t.username, Object(d.a)(t.password), "password").then(function(a)
Object(l.h)这种类型的我们只需要观察后面是否是()如果有Object(l.h)就是个对象
还可以在console控制台输出l.h验证他是否是对象通过分析Object(l.h)就是l.h起到一个迷惑作用
LoginByUsername: function(e, t) {
这里下断点 var n = e.commit;
return new Promise(function(e, a) {
Object(l.h)(t.username, Object(d.a)(t.password), "password").then(function(a) {
var o = a.data;
运行到这里已经是明文了 我们就看下这个方法哪里调用了加密在方法开始的位置下断点
重新运行断点一步一步往下执行
进入d.a
发现e=123456进过c方法调用后加密成立"E10ADC3949BA59ABBE56E057F20F883E"e10开头32位 猜测是32位md5加密点进c进去看一下也是MD5加密
然后把加密后的t作为参数交给r方法执行运行结果发现r是sha1加密n="7698946764209BE8D1AE96CF1D7DF46391184AFE"
最后一句是把2次加密后n再进行一次sha1加密 返回结果是"8EFC459F5837CCE06914D8C41AFDBC47A5B2AD5D"和我们开头的加密后的密码是相同的
所以这个登录是md5+sha1+sha1 文中格式太丑了,不是代码就不要放代码框了,图片插入正文看这个学习下https://www.52pojie.cn/misc.php?mod=faq&action=faq&id=29&messageid=36 ,然后编辑下主题吧。 shayu2021 发表于 2021-8-2 19:48
大神能不能解密一下网易音乐搜索功能啊,谢谢了
https://music.163.com/#/search/m/?id=1413142894&s=%E5%A4%A7%E7%9C%A0
id是歌曲编号s=%E5%A4%A7%E7%9C%A0是歌名的urlencode转码你自己拼接一下就好了 你以为写了这么多,我就看懂了吗?不好意思,小白菜。感谢分享,会多多学习。 感谢分享 字好多,慢慢看 想学习的话可以看一下https://www.bilibili.com/video/BV1Kh411r7uR?p=38&t=574的视频 干货满满,学习中 经典永不过时,需要学习 写的详细一点啊哥 function Md5(t) 一脸懵逼