文章目录
- 概要
- 整体架构流程
- 技术细节
- 小结
概要
x粒纯算(js逆向)
提示:仅供学习,不得用做商业交易,如有侵权请及时联系!
URL:aHR0cHM6Ly93d3cuemFubGkuY29tLw==
逆向参数:
登录form:cipher_password、client_identifier
请求头header:x-client-id、x-nonce、x-timestamp、X-Authentication-Signature
整体架构流程
提示:进入网址-分析js代码-验证加密算法-实现python代码
- 进入网址-打开开发者工具-登录
2、直接跟堆栈
找到form表单加密–》cipher_password、client_identifier
开始分析cipher_password
进入函数内部分析
具体代码实现
iv = ''.join(random.sample('qwertyuiopasdfghjklzxcvbnm1234567890QWERTYUIOPASDFGHJKLZXCVBNM', 16))
key = 'kEUrAT0ppPXByzCPw35WY3I44NP6n8Jo'
clientIdentifier = ''.join(random.sample('qwertyuiopasdfghjklzxcvbnm1234567890QWERTYUIOPASDFGHJKLZXCVBNM', 16))
nonce = ''.join(random.sample('qwertyuiopasdfghjklzxcvbnm1234567890QWERTYUIOPASDFGHJKLZXCVBNM', random.randint(21,22)))
def getPwd(pwd):
return base64.b64encode(iv.encode('utf-8') + encrypt(pwd)).decode()
def encrypt(text):
cipher = AES.new(key.encode('utf-8'), AES.MODE_CBC, iv.encode('utf-8'))
pad = 16 - len(text) % 16
text = text + pad * chr(pad)
encrypted_text = cipher.encrypt(text.encode('utf-8'))
return encrypted_text
client_identifier参数分析
跟栈
到此处form表单参数分析完成
找到header请求头加密–》x-client-id、x-nonce、x-timestamp、X-Authentication-Signature
分析参数
x-client-id我们分析知道是写死的:
kEUrAT0ppPXByzCPw35WY3I44NP6n8Jo
那么这最后一个参数位置在:
传递的参数为
我们跟进去看一眼
这里水一下,各位自行定位拼接参数 ^ - ^
到这里所有参数分析完成!!!
技术细节
提示:有需要可加v:wzwzwz0613
例如:
- API
- 支持模型类型
小结
提示:挺简单,都是标准加密-AES+MD5
学习交流群:可联系v:wzwzwz0613拉进群
最后,就是python实现效果了!