声明!

本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!

1.RSA算法简介

我就不按照搜索引擎上对RSA进行介绍了,直接讲它的特点吧。

简单来说RSA算法是非对称加密算法,也就是加密的密钥和解密的密钥不是同一个。(同理,对称加密算法(例:DES和AES)则是加密和解密的密钥是同一个)。因此我们在网页上做爬虫时遇到了非对称加密算法(例RSA)我们只能得到它加密的密钥,生成加密的密文而得不到解密的密钥

所以坐RSA算法逆向就是一个找到加密密钥的过程

JS中RSA加密算法的写法

const JSEncrypt = require('jsencrypt')

const publicKey = `
-----BEGIN PUBLIC KEY-----
加密密钥
-----END PUBLIC KEY-----
`;
const encryptor = new JSEncrypt();
encryptor.setPublicKey(publicKey);

const encryptedData = encryptor.encrypt("密码");
console.log(encryptedData);

2.Temu登录密码加密分析

2.1 找到接口位置

我们正常的输入账号密码进行登录,打开开发者工具,点击网络,找到对应的接口,则会发现加密后的密码格式

显然这密码是被加密过的,现在我们来进行对加密的逆向分析

2.2逆向分析

接下来我们进行逆向分析,方法有:

1.搜索里搜索关键字encryptPassword:

2.启动器开始打断点

3.XHR断点

4.技巧断点(别搜了,这个名字是我自创的),例如搜encrypt,parse等方式进行,也可以直接搜加密的必要函数比如setPublicKey

我本次采用适合新手的搜索关键字断点

我们在搜索一栏里搜索encryptPassword:会出现如下情况

直接点击进入原函数的位置,在函数的地方打上断点

再次点击登录就被断住了

用光标分别选中这三个选项会得到如下信息,Object(m.a)是一个函数入口,M.password是我们的密码,N.current是一个带有publickkey的对象。

我们进入Object(m.a)函数的入口,看一下函数的类型

传参有个一个A和e,显然A是我们输入的密码,e则是上述提到的N.current

看函数就结果我们就清楚这是一个RSA加密算法(可见开头JS中RSA算法的写法),由于加密密钥是不会变的,所以我们直接复制e.publicKey当加密密钥即可

3.JS实现

window = global;
const JSEncrypt = require('jsencrypt')

const publicKey = `
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJpaLPONg3qWfi2kdwauqOT3L7AEK6lrMZqKYZv0ikWPZtzTqnVLMeolsE7x3Sc4UxS6ews+WS0ijwIEU8GAbhr2aJh0F+o6bpYQgWosHBts4lMW/IdtKg45DSGgBWg8gWDTK7K+T+zWfTjEQGwEgNHsZ2NbQBtTEZ35CDWUP7iQIDAQAB
-----END PUBLIC KEY-----
`;
const encryptor = new JSEncrypt();
encryptor.setPublicKey(publicKey);

const encryptedData = encryptor.encrypt("admin123!");
console.log(encryptedData);
console.log("加密长度:",encryptedData.length);

`
打印结果
T8GQq/x8n/aI5mEtJoBu4avYYMD3EfJH/iFMZBKQE8Rtl4o8GIcsay7wQnjbqnI1xzSeqTvhbZWoQK2vrcVaPPz6YxtajMQGJnvEQy9Qi6HZ92NA2NjqMp8O7shr9FI0peXVdMqH7gxeWig+FB2etuhXM9mNHOLTRrfJ6onsPPY=
加密长度:172
`

很多读者想这跟网页生成内容也不一样呀,RSA算法每次都是不一样的,我们验证位数即可,这是网页加密后的位数

本次分享到此结束,这是RSA算法,希望对你们有帮助

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐