【WP】猿人学2_js混淆_动态cookie
https://match.yuanrenxue.cn/match/2
抓包分析
根据发包加密参数在cookie
中
删除cookie带的m参数,重新点击其他页面,然后使用Fiddler
抓包
第一个包请求没有携带m,但是后面的请求是附带了m了,所以m就是在此之间生成
查看不带m请求的返回数据,发现返回是一段js代码,很有可能就是这段代码生成了需要的m参数
调试找入口
回到浏览器,删除cookie
中的m参数,然后刷新页面
会出现一个无限debugger
,点到上层堆栈
[$dbsm_0x4847('\x30\x78\x34\x63', '\x58\x23\x32\x39') + $dbsm_0x4847('\x30\x78\x31\x62\x31', '\x4d\x70\x54\x59') + $dbsm_0x4847('\x30\x78\x31\x65\x31', '\x6a\x35\x4b\x51') + '\x6f\x72'](_0x280c63[$dbsm_0x4847('\x30\x78\x33\x38\x34', '\x24\x71\x37\x75') + '\x61\x50'](_0x280c63['\x50\x4b\x44' + '\x41\x6b'], _0x280c63[$dbsm_0x4847('\x30\x78\x31\x63\x35', '\x55\x21\x35\x74') + '\x54\x68']))['\x63\x61\x6c' + '\x6c'](_0x280c63[$dbsm_0x4847('\x30\x78\x31\x31\x37', '\x33\x26\x51\x25') + '\x74\x68']));
结构是很经典的
对debugger的构成字符置空
这时还需要对cookie
进行hook
,下面是代码,在控制台运行,得到document…就是运行成功
Object.defineProperty(document, 'cookie', {set: function (val) {if (val.indexOf('m') !== -1) {debugger;return val;}},
});
下面F8
跳到下一个断点,就会断在set cookie
的地方
往上追一层,cookie就是在此设置
document['\x63\x6f\x6f' + $dbsm_0x4847('\x30\x78\x34\x63\x66', '\x47\x54\x67\x79')] = _0x3edf8c[$dbsm_0x4847('\x30\x78\x31\x64\x63', '\x42\x6c\x32\x64') + '\x64\x50'](_0x3edf8c[$dbsm_0x4847('\x30\x78\x33\x32\x61', '\x53\x69\x34\x49') + '\x64\x50'](_0x3edf8c[$dbsm_0x4847('\x30\x78\x32\x38\x35', '\x2a\x4c\x75\x7a') + '\x64\x50'](_0x3edf8c[$dbsm_0x4847('\x30\x78\x32\x32\x38', '\x76\x57\x28\x33') + '\x53\x6e'](_0x3edf8c['\x75\x62\x76' + '\x70\x67'](_0x3edf8c[$dbsm_0x4847('\x30\x78\x37\x30', '\x4f\x6b\x35\x62') + '\x47\x5a']('\x6d', _0x3edf8c[$dbsm_0x4847('\x30\x78\x31\x38\x39', '\x67\x6d\x53\x63') + '\x4d\x4d'](_0x3823cf)), '\x3d'), _0x3edf8c[$dbsm_0x4847('\x30\x78\x31\x61\x31', '\x53\x65\x23\x7a') + '\x48\x52'](_0x132a93, _0x50b846)), '\x7c'), _0x50b846), _0x3edf8c['\x76\x55\x45' + '\x6a\x7a']);
根据代码结构一层层在控制台里面输出,根据下面过程就可以发现
- 加密函数为
_0x132a93
- 传入的时间戳格式为
1717640384000
数字类型
记住输入和输出
1717640384000
'4ef8eeb14aa14c728c4ddd25012169e9'
扣代码
下面就是扣代码了。扣代码这一块还是比较麻烦的,我几乎干了整整一天,当然我也是新手,刚开始弄,可能花时间比较多。还是先来分析一下代码结构,不然很难扣下去
- 先把所有代码复制一下,进行解混淆操作
猿人学官方解混淆地址
模式一般我这么用
结构如上图
- 大数组:存放字符,里面的字符作为取值用的键用来混淆操作
搜索加密函数_0x132a93
发现在自执行函数里面
我试过直接把这个函数复制出来,但是他会用到很多自执行函数里面的属性方法等,都扣出来就好烦,不知道能不能在这里面搞个接口出来,我这次也试一下吧, window["encode"] = _0x132a93;
运行试试看
下面的内容是按照这种做法来的,实验成功了,可以通过window存下这个函数
还有另一种做法也是我最开始的做法,下面我没写出,可以自行尝试,就是把两个自执行函数内部的内容直接拉到全局变量中,下面有一个简单示例,这样可以直接调用加密函数,否则会出现找不到函数的情况。
(function f() {var a = "这里是自执行函数内部";function insideFunction() {return "这是内部方法";}
})();// 直接改成var a = "这里是自执行函数内部";
function insideFunction() {return "这是内部方法";
}
var window = global; // 先定义一个全局变量用来放函数
// ...
console.log(window["encode"](1717640384000));
运行发现会被一直卡住,这说明哪里被检测了,大概率是格式化检测,防止调试的,只需要对代码进行压缩。但是压缩之前,需要按照标准格式,需要添加;
的地方必须要有
菜鸟JS压缩工具
压缩之后就可以运行了,提示要补环境
navigator is not defined
var navigator = {};
补充放开头
新的报错,大概意思是在给setInterval
提供的函数参数是不可执行的,既然是setInterval
里面,估计不是什么好东西,加密不可能需要定时加密,一定是干扰手段。在最开始就把setInterval
置空掉。
var setInterval=function(){return 0;};
再次运行提示补环境
ReferenceError: document is not defined
ReferenceError: location is not definedvar document = {};
var location = {};
再次运行提示TypeError: location[($dbsm_0x4847(...) + $dbsm_0x4847(...))] is not a function
这说明用到了location
里面的一个函数。在原来网站查看发现是刷新页面的函数,这里不需要直接删掉了。
把
location[$dbsm_0x4847('\x30\x78\x33\x36\x64','\x2a\x4c\x75\x7a')+$dbsm_0x4847('\x30\x78\x31\x38','\x6a\x35\x4b\x51')]()
整句删除
再次运行又出现报错
这个报错是在console.log
中的,很有可能是对输出函数做了手脚,防止我们输出查看。 解决办法是先备份,然后最后打印也使用备份
var log=console.log;
// ...
log(window["encode"](1717640384000));
再次执行,成果输出加密数据
而且跟之前记录的数据一样
下面构建完整SDK
function getMSdk() {let timestamp = Date.now();timestamp = Math.floor(timestamp / 1000) * 1000;encodeString = window['encode'](timestamp);return encodeString + '|' + timestamp;
};
然后再次压缩代码,注意不要格式化。
var log=console.log;var location={};var document={};var setInterval=function(){return 0};var navigator={};var window=global;
// ...
function getMSdk(){let timestamp=Date.now();timestamp=Math.floor(timestamp/1000)*1000;encodeString=window['encode'](timestamp);return encodeString+'|'+timestamp}
代码太长,完整的放不上来,上面过程写的很清楚。
下面构建Python代码
如果要用的话
cookie
的信息改成自己的
import execjs
import requestsheaders = {"authority": "match.yuanrenxue.cn","accept": "application/json, text/javascript, */*; q=0.01","accept-language": "zh-CN,zh;q=0.9","referer": "https://match.yuanrenxue.cn/match/2","sec-ch-ua": "\"Chromium\";v=\"122\", \"Not(A:Brand\";v=\"24\", \"Google Chrome\";v=\"122\"","sec-ch-ua-mobile": "?0","sec-ch-ua-platform": "\"Windows\"","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/122.0.6261.95 Safari/537.36","x-requested-with": "XMLHttpRequest"
}ret =0for pageIndex in range(1, 6):js_code = open("match2Sdk.js", mode='r', encoding='utf-8').read()js_compile = execjs.compile(js_code)m = js_compile.call('getMSdk')cookies = {"sessionid": "zwy0uz1vd0ge1e42310i34b37584m1lj","Hm_lvt_c99546cf032aaa5a679230de9a95c7db": "1717578931,1717603706","no-alert3": "true","Hm_lvt_9bcbda9cbf86757998a2339a0437208e": "1717578942,1717639423","Hm_lpvt_9bcbda9cbf86757998a2339a0437208e": "1717639423","m": m,"Hm_lpvt_c99546cf032aaa5a679230de9a95c7db": "1717645785"}url = "https://match.yuanrenxue.cn/api/match/2"params = {"page": pageIndex}response = requests.get(url, headers=headers, cookies=cookies, params=params)print(response.json())data = response.json()["data"]for item in data:ret += item['value']print(ret)
相关文章:

【WP】猿人学2_js混淆_动态cookie
https://match.yuanrenxue.cn/match/2 抓包分析 根据发包加密参数在cookie中 删除cookie带的m参数,重新点击其他页面,然后使用Fiddler抓包 第一个包请求没有携带m,但是后面的请求是附带了m了,所以m就是在此之间生成 查看不带…...

基于springboot实现民族婚纱预定系统项目【项目源码+论文说明】
基于springboot实现民族婚纱预定系统的设计演示 摘要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本民族婚纱预定系统就是在这样的大环境下诞生,其可…...

String常用操作
String常用方法 构造字符串 常用的构造字符串有3种: 1.直接赋值String s "abcd"; 2.实例化调用构造方法String s new String("abcd"); 3.实例化传字符数组 char[] ch {a,b,c,d}; String s new String(ch);字符串比较 比较 比较的是两个…...

git: 批量删除分支
环境: window11git version 2.42.0git-bash.exe window环境下: 1. 批量删除本地 git branch |grep xxx |xargs git branch -D比如: 想批量删除本地含有 release 关键字的分支: 2. 批量删除远程 git branch -r | grep xxxx | …...
【第5章】SpringBoot实战篇之登录模式切换
文章目录 前言一、接口扩展1. LoginStorage2. LocalLoginStorage3. RedisLoginStorage4. 参数配置 二、登录相关接口改动1.登录接口2. 登录拦截器 总结 前言 前面分别介绍了本地Map和redis存储用户登录信息,但是第二天我登录就出现问题了,因为我Redis部…...
2024最新华为OD算法题目
在一个机房中,服务器的位置标识在 n*m 的整数矩阵网格中,1表示单元格上有服务器,0 表示没有。如果两台服务器位于同一行或者同一列中紧邻的位置,则认为它们之间可以组成一个局域网。请你统计机房中最大的局域网包含的服务器个数。 输入描述 第一行输入两个正整数,n和m,…...
Redis集群方案有哪些?
今天咱们来聊聊Redis集群方案,想象一下Redis是个超级大的储物柜,里面放满了你各种各样的宝贝(数据)。但随着宝贝越来越多,一个储物柜不够用了,这时候我们就得想方设法扩大空间,还要保证找东西依…...

数字影像产业园的三大赋能:科技、创新与无限可能
数字影像产业园作为文创产业的重要载体,以科技为核心驱动力,不断推动产业的技术革新和升级。 园区内汇聚了最前沿的数字技术资源,高清摄影设备、虚拟现实技术、人工智能应用等尖端科技在这里得到广泛应用,不仅提升了生产效率&…...

枚举(enum)+联合体(union)
枚举联合 一.枚举类型1.枚举类型的声明2.枚举类型的优点3.枚举类型的使用 二.联合体1.联合体类型的声明2.联合体的特点3.相同成员的结构体和联合体对比4.联合体大小的计算5.联合体的练习(判断大小端)6.联合体节省空间例题 一.枚举类型 1.枚举类型的声明…...

postman教程-15-前置脚本
上一小节我们学习了Postman生成随机数的方法,本小节我们讲解一下Postman前置脚本的使用方法。 Postman中的前置脚本(Pre-request Script)允许你在发送请求之前运行JavaScript代码。这可以用于修改请求头、查询参数、请求体等,或者…...

AIGC会带来失业潮吗?紧紧跟时代第一步,如何学习AIGC
会,但AI淘汰的始终是跟不上时代的人。 现在很多公司都有AI培训,不仅GPT,还有Midjourney、Stable DIffusion等一系列AI工具。 像我们公司虽然今年招的少,但也会对新招的应届生统一进行AI培训。 用任正非先生的话来说就是&#x…...

C++第二十四弹---从零开始模拟STL中的list(上)
✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1、基本结构 2、基本函数实现 2.1、默认构造函数 2.2、尾插数据 3、迭代器的封装 3.1、迭代器的基本结构 3.2、迭代器重载函数的实现 4、迭…...
大宋咨询(深圳社情民意调查)关于社情民意调查研究的内容
社情民意调查内容,是一项至关重要的社会研究活动,它涵盖了社会生活的方方面面,通过深入了解民众的需求、态度和看法,为决策提供了宝贵的参考依据。 首先,社会经济状况是社情民意调查不可或缺的一部分。这包括了对当地…...

PID算法在电机速度控制上的应用
目录 概述 1 系统硬件框架 1.1 框架介绍 1.2 硬件实物图 2 STM32Cub生成工程 2.1 软件版本信息 2.2 配置参数 编辑2.3 生成项目 3 PID算法实现 3.1 概念 3.2 代码实现 4 其他功能实现 4.1 设置电机速度 4.2 PID算法控制电机 4.3 功能函数的调用 5 测试 5.1 …...

埃隆·马斯克 - 从梦想家到改变世界的企业家
埃隆马斯克 - 从梦想家到改变世界的企业家 本文内容是埃隆马斯克传的重点章节精华提炼,介绍了马斯克传奇一生 参考资料内容:埃隆马斯克传&造梦者埃隆马斯克 参考资料在文末获取,关注我,分享优质前沿资料(IT、运…...
微信小程序长图片自适应
/*wxss中的代码*/ .image-container { display:flex;width: 100%; /* 或其他需要的宽度 */ /* margin-bottom: 10px; //图片之间的间距 */height: auto; } 核心:要真正自适应,就要在wxml中加入固定宽度style“width:750rpx” /*wxml中的代码*/ &l…...

elasticsearch hanlp 插件安装操作
elasticsearch hanlp 插件安装操作 下载 hanlp 插件上传hanlp插件到elasticsearch服务器安装hanlp插件kibana测试 下载 hanlp 插件 这里大家根据自己对应的 elasticsearch 版本下载匹配版本的 hanlp 插件,由于 hanlp 及 elasticsearch 各个版本之间差别较大&#x…...

为什么进程和线程 ID 总是 4 的倍数?
如果您研究下任务管理器中的的进程 ID (PID),则你会发现这样一个规律:它们都是 4 的倍数。 基于 Windows NT 内核的操作系统上,不止是进程 ID,实际上,线程 ID (TID) 也遵守这样的规律:也即它们都是 4 的倍…...

LabVIEW版本控制
LabVIEW作为一种流行的图形化编程环境,在软件开发中广泛应用。有效地管理版本控制对于确保软件的可靠性和可维护性至关重要。LabVIEW提供了多种方式来管理VI和应用程序的修订历史,以满足不同规模和复杂度的项目需求。 LabVIEW中的VI修订历史 LabVIEW内置…...

不输Kimi的AI插件——Elmo Chat (免费,无需注册)
🌚 前阵子不是写了篇《一分钟上手AI神器——Kimi (附_ 官方提示词)》 嘛,给大伙安利了一波 Kimi Chat 这个AI 神器,不知道是不是用户量上来了,算力一下子跟不上,感觉变笨了不少🤣。在别的推文看到多轮对话后…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...

网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...

零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...
SpringAI实战:ChatModel智能对话全解
一、引言:Spring AI 与 Chat Model 的核心价值 🚀 在 Java 生态中集成大模型能力,Spring AI 提供了高效的解决方案 🤖。其中 Chat Model 作为核心交互组件,通过标准化接口简化了与大语言模型(LLM࿰…...