【2023-10-31】某看准招聘参数分析-AES加密

声明:该专栏涉及的所有案例均为学习使用,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!如有侵权,请私信联系本人删帖!

文章目录

  • 一、前言
  • 二、网站分析
    • 1.参数kiv
    • 2.参数b
    • 3.响应加密

一、前言

【2023-10-31】某看准招聘参数分析-AES加密_第1张图片

网址:

aHR0cHM6Ly93d3cua2Fuemh1bi5jb20vZmlybS9yZWNydWl0LzBueF8zZ35+Lmh0bWw/a2E9Y29tLXJlY3J1aXQtbW9kdWxlLWV4cG9zZQ==

二、网站分析

查看招聘信息,向下翻页,抓包。
发现参数中的kiv和b加密
【2023-10-31】某看准招聘参数分析-AES加密_第2张图片

响应数据加密

在这里插入图片描述

全局搜索kiv,然后再搜索找到这里

【2023-10-31】某看准招聘参数分析-AES加密_第3张图片

a就是kiv,t就是b,这里可以看到b和kiv的生成

【2023-10-31】某看准招聘参数分析-AES加密_第4张图片

【2023-10-31】某看准招聘参数分析-AES加密_第5张图片

1.参数kiv

先看kiv,即a参数,进入M._A,就是一个随机数

【2023-10-31】某看准招聘参数分析-AES加密_第6张图片

2.参数b

参数b,即t

t = M.mA(n, { iv: a}).replace(/\//g, "_").replace(/\+/g, "-").replace(/=/g, "~")

其中的n和页数有关系

在这里插入图片描述

再进入M.mA
在这里插入图片描述

再进入l,可以看到是个AES加密,其中iv就是我们kiv
【2023-10-31】某看准招聘参数分析-AES加密_第7张图片

key经过测试是固定值

【2023-10-31】某看准招聘参数分析-AES加密_第8张图片
python实现

import base64
from Crypto.Cipher import AES

# 密钥和IV
AES_SECRET_KEY = 'G$$QawckGfaLB97r'  # 此处16|24|32个字符,分别对应AES-128AES-192AES-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_KEY
        self.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 text2


if __name__ == '__main__':
    aes_encrypt = AES_ENCRYPT()
    text = "{\"encCompanyId\":\"0nx_3g~~\",\"pageIndex\":2}"
    e = aes_encrypt.encrypt(text)
    print(text)
    print(e)

【2023-10-31】某看准招聘参数分析-AES加密_第9张图片

【2023-10-31】某看准招聘参数分析-AES加密_第10张图片
结果相同,最后别忘了替换
【2023-10-31】某看准招聘参数分析-AES加密_第11张图片
问下文心一言
【2023-10-31】某看准招聘参数分析-AES加密_第12张图片

【2023-10-31】某看准招聘参数分析-AES加密_第13张图片

3.响应加密

既然加密是AES,那么解密大概率也是,搜索.decrypt,找到这里,刷新页面

【2023-10-31】某看准招聘参数分析-AES加密_第14张图片

你可能感兴趣的:(爬虫,python)