目录
- 前言
- 1. 加密
- 2. 解密
前言
原先写过另外一篇,推荐阅读:逆向 解密接口信息(附Demo)
下文以 https://login1.scrape.center/ 进行讲解,
1. 加密
登录过程中可以使用断点进行一步一步排查
或者在js文件中搜索encode、onsubmit、decrypt等关键字,查找相关的加密解密字眼,还可以通过hook文件进行捕捉!
正式定义到加密的函数如下:
控制台输出其this.form的相关信息:
之后断点往下一步,再次输出查看其信息:
控制台也可查看其相关的信息输出
这说明已经定位到相关的加密函数了
将其翻译成Js 的Demo,具体如下:
// 模拟的加密函数
function encode(data) {
// 使用 btoa 来进行 Base64 编码
return btoa(data);
}
// 数据对象
const formData = {
username: "123",
password: "123"
};
// 加密函数
function encryptAndOutput() {
// 将表单数据转换为 JSON 字符串
const jsonString = JSON.stringify(formData);
// 加密数据
const encodedData = encode(jsonString);
// 输出结果
console.log("Encoded Data:", encodedData);
}
// 执行加密并输出
encryptAndOutput();
截图如下:
2. 解密
对应的解密函数,同样可以在该文件中输入decode或者decrypt关键字 进行定位:
最终定位到如下:
将其翻译成Js Demo查看是否可以还原回去:
// Base64 编码的字符串
const encodedString = "eyJ1c2VybmFtZSI6IjEyMyIsInBhc3N3b3JkIjoiMTIzIn0=";
// Base64 解码函数
function base64Decode(encodedStr) {
// 替换 URL 安全字符并解码
const base64Str = encodedStr.replace(/-/g, '+').replace(/_/g, '/');
// 使用 atob 解码,并返回 JSON 对象
return JSON.parse(atob(base64Str));
}
// 解码字符串
const decodedObject = base64Decode(encodedString);
// 输出解码结果
console.log(decodedObject);
截图如下: