js逆向实战之某龙贷登录参数加密
声明:本篇文章仅用于知识分享,不得用于其他用途
网址:aHR0cHM6Ly93d3cuZWxvYW5jbi5jb20v
加密逻辑
- 点击登录,输入用户名和密码看触发的数据包。
password
经过加密处理,由于这几个参数名都比较常见,全局搜索肯定会有很多结果,不好定位,所有这里选择搜索url。
- 只有一处,并将
/pcgway/login/v1/02
赋值给了login_url_
,如果后面想要调用这个接口会使用login_url_
,全局搜索,只有2处。
- 打断点,触发。
- 可以看到运行到这里的时候
password
已经被加密了,所以得通过调用栈一步一步往上找。
- 在运行到
login
函数后参数被加密完成,在它附近能看到明显的加密算法了。
- 打断点,看触发的是哪一个。
- 找到加密的地方了,关键函数
r.PUBLIC.encryptByDES
,看下它的实现。
encryptByDES
需要两个参数,一个是需要加密的内容,一个是DESkey
。
看着像个定值,在encryptByDES
函数的上方也能看到定义。
- 逻辑就很清晰了,写代码实现
password
参数的加密(由于是个借贷软件,就没注册账户,只搞懂了加密逻辑)。
运行结果与数据包中的一致。var CryptoJS = require("crypto-js") var e = "e9284d45-cf2a-4e46-9367-f122413ca6b0" function encryptByDES(t, e) { var a = CryptoJS.enc.Utf8.parse(e); try { var s = CryptoJS.DES.encrypt(String(t), a, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }) } catch (t) { console.log(t) } return s.toString() } console.log(encryptByDES("123456", e));