011-AES:深证信

练习网站:深证信AES

找加密参数和定位

本网站找加密参数要争分夺秒哈,因为他的密文有时效性,过一段儿时间就会失效,所以要尽快测试,先找到它的接口:

这次接口触发不是下面翻页,而是导航栏:

然后copy它的bash转成py,通过注释来测试:

这些没注释,没删除的参数都需要带,逆向的就是Accept-EncKey参数,然后我们搜索关键字:

太多了,不想看,咱就直接xhr吧:

这里有的,直接看异步后第一个栈:

啥也没有,向后跟栈:

这个也没有,然后就在异步前找了一辈子发现一个东西:

那就在这里打上断点,注意:这里是在ajax前打上断点,因为异步里面可能断不进去,断下来后步入进去:

被我找到了,咱们进入此方法看看:

挖去,混淆,别慌,发现关键字没有:

救命稻草啊,咱们看看是不是标准的AES:

方法齐全且没有FunctionLocation,百分之九十九概率是标准,咱再看看密钥长度:

key长度为16位,然后加密模式是CBC:

CBC加密模式key为16位,很标准

手搓AES复现逻辑

很标准的AES,直接手搓:

iv直接在函数中找即可:

然后有一点点需要动脑的就是明文:

这样逻辑就复现完成了

py调用

py调用没什么特殊的,代码如下:

python 复制代码
import requests
import os
import execjs

class JSExecutor:
    def __init__(self, file_path):
        if not os.path.exists(file_path):
            print('NotFoundFile')
        with open(file_path, 'r', encoding='utf-8')as f:
            self.js_file = f.read()

        self.js_file = execjs.compile(self.js_file)

    def call(self, func_name, *args):
        return self.js_file.call(func_name, *args)

def get_data(EncKey):
    cookies = {

    }

    headers = {
        # 'Accept': '*/*',
        'Accept-EncKey': EncKey,
        # 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
        # 'Cache-Control': 'no-cache',
        # 'Connection': 'keep-alive',
        # 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
        # 'Origin': 'https://webapi.cninfo.com.cn',
        # 'Pragma': 'no-cache',
        'Referer': 'https://webapi.cninfo.com.cn/',
        # 'Sec-Fetch-Dest': 'empty',
        # 'Sec-Fetch-Mode': 'cors',
        # 'Sec-Fetch-Site': 'same-origin',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0',
        # 'X-Requested-With': 'XMLHttpRequest',
        # 'sec-ch-ua': '"Microsoft Edge";v="143", "Chromium";v="143", "Not A(Brand";v="24"',
        # 'sec-ch-ua-mobile': '?0',
        # 'sec-ch-ua-platform': '"Windows"',
    }

    data = {
        'scode': '000001-SZE',
        'sdate': '2024-12-17',
        'edate': '2025-12-17',
        'ctype': '0',
    }

    return requests.post('https://webapi.cninfo.com.cn/api/sysapi/p_sysapi1008', cookies=cookies, headers=headers, data=data).json()
    # print(response)

if __name__ == '__main__':
    js_executor = JSExecutor('11.js')
    en_ckey = js_executor.call('getResCode')
    print(get_data(en_ckey))

result:

ok拿下

小结

文章到此就结束了,如有问题请及时提出,一起学习,加油加油

相关推荐
Hgfdsaqwr18 小时前
Django全栈开发入门:构建一个博客系统
jvm·数据库·python
开发者小天18 小时前
python中For Loop的用法
java·服务器·python
老百姓懂点AI19 小时前
[RAG实战] 向量数据库选型与优化:智能体来了(西南总部)AI agent指挥官的长短期记忆架构设计
python
喵手21 小时前
Python爬虫零基础入门【第九章:实战项目教学·第15节】搜索页采集:关键词队列 + 结果去重 + 反爬友好策略!
爬虫·python·爬虫实战·python爬虫工程化实战·零基础python爬虫教学·搜索页采集·关键词队列
Suchadar21 小时前
if判断语句——Python
开发语言·python
ʚB҉L҉A҉C҉K҉.҉基҉德҉^҉大21 小时前
自动化机器学习(AutoML)库TPOT使用指南
jvm·数据库·python
喵手21 小时前
Python爬虫零基础入门【第九章:实战项目教学·第14节】表格型页面采集:多列、多行、跨页(通用表格解析)!
爬虫·python·python爬虫实战·python爬虫工程化实战·python爬虫零基础入门·表格型页面采集·通用表格解析
0思必得01 天前
[Web自动化] 爬虫之API请求
前端·爬虫·python·selenium·自动化
莫问前路漫漫1 天前
WinMerge v2.16.41 中文绿色版深度解析:文件对比与合并的全能工具
java·开发语言·python·jdk·ai编程
木头左1 天前
Backtrader框架下的指数期权备兑策略资金管理实现与风险控制
python