本文主要是介绍第58篇-某看准招聘参数分析-AES加密【2023-10-31】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
声明:该专栏涉及的所有案例均为学习使用,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!如有侵权,请私信联系本人删帖!
文章目录
- 一、前言
- 二、网站分析
- 1.参数kiv
- 2.参数b
- 3.响应加密
一、前言
网址:
aHR0cHM6Ly93d3cua2Fuemh1bi5jb20vZmlybS9yZWNydWl0LzBueF8zZ35+Lmh0bWw/a2E9Y29tLXJlY3J1aXQtbW9kdWxlLWV4cG9zZQ==
二、网站分析
查看招聘信息,向下翻页,抓包。
发现参数中的kiv和b加密
响应数据加密
全局搜索kiv,然后再搜索找到这里
a就是kiv,t就是b,这里可以看到b和kiv的生成
1.参数kiv
先看kiv,即a参数,进入M._A
,就是一个随机数
2.参数b
参数b,即t
t = M.mA(n, { iv: a}).replace(/\//g, "_").replace(/\+/g, "-").replace(/=/g, "~")
其中的n和页数有关系
再进入M.mA
再进入l,可以看到是个AES加密,其中iv就是我们kiv
key经过测试是固定值
python实现
import base64
from Crypto.Cipher import AES# 密钥和IV
AES_SECRET_KEY = 'G$$QawckGfaLB97r' # 此处16|24|32个字符,分别对应AES-128、AES-192和AES-256
IV = 'riGSUvXa1YWwtogp' # 和密钥等长# padding算法
BS = len(AES_SECRET_KEY)
pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS)
unpad = lambda s: s[0:-ord(s[-1:])]class AES_ENCRYPT:def __init__(self):self.key = AES_SECRET_KEYself.mode = AES.MODE_CBC# 加密函数def encrypt(self, text):cryptor = AES.new(self.key.encode("utf8"), self.mode, IV.encode("utf8"))self.ciphertext = cryptor.encrypt(bytes(pad(text), encoding="utf8"))# AES加密时候得到的字符串不一定是ascii字符集的,输出到终端或者保存时候可能存在问题,使用base64编码return base64.b64encode(self.ciphertext).decode("utf-8")# 解密函数def decrypt(self, text):decode = base64.b64decode(text)cryptor = AES.new(self.key.encode("utf8"), self.mode, IV.encode("utf8"))plain_text = cryptor.decrypt(decode)return unpad(plain_text).decode("utf-8")def chinese_to_ascii(text):text2 = base64.b64encode(text.encode('utf-8')).decode('ascii')return text2if __name__ == '__main__':aes_encrypt = AES_ENCRYPT()text = "{\"encCompanyId\":\"0nx_3g~~\",\"pageIndex\":2}"e = aes_encrypt.encrypt(text)print(text)print(e)
结果相同,最后别忘了替换
问下文心一言
3.响应加密
既然加密是AES,那么解密大概率也是,搜索.decrypt
,找到这里,刷新页面
这篇关于第58篇-某看准招聘参数分析-AES加密【2023-10-31】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!