vmp版本某数后缀(10-6,js逆向)

2023-11-04

看这篇文章的前提是:读者已经成功请求到了200页面
一、抓包分析
这个站在提交验证码的时候会将识别的内容加密放到后缀中,所以分析后缀也是无奈之举。
在这里插入图片描述

二、跟栈分析
下个xhr断点,提交验证码,找到这个地方
在这里插入图片描述
思路:open和send都经过魔改了,所以在这两个地方下断点。再提交验证码,断到open处的时候,进到vm代码里插桩,当在send处断下来时,后缀已生成,这部分的日志就是我们需要分析的。

插桩位置:进到vm层,全局搜length,
找到结构跟这个差不多的就对了,插桩内容JSON.stringify(_$iK)
在这里插入图片描述

三、算法分析(从后往前推)
1、首先是一个大数组(arr_final)经过一个函数转为字符串(后缀)

function get_suffix(arr_final){
    _$hv = ['q', 'r', 'c', 'k', 'l', 'm', 'D', 'o', 'E', 'x', 't', 'h', 'W', 'J', 'i', 'H', 'A', 'p', '1', 's', 'V', 'Y', 'K', 'U', '3', 'R', 'F', 'M', 'Q', 'w', '8', 'I', 'G', 'f', 'P', 'O', '9', '2', 'b', 'v', 'L', 'N', 'j', '.', '7', 'z', 'X', 'B', 'a', 'S', 'n', 'u', '0', 'T', 'C', '6', 'g', 'y', '_', '4', 'Z', 'e', '5', 'd', '{', '}', '|', '~', ' ', '!', '#', '$', '%', '(', ')', '*', '+', ',', '-', ';', '=', '?', '@', '[', ']', '^'];
    _$eZ = 0;
    _$aj = 0;
    _$av = _$ch['length'];
    _$k3 = new Array(Math["ceil"](_$av * 4 / 3));
    _$av = _$ch["length"] - 2;
    while (_$eZ < _$av)  _$c1 = _$ch[_$eZ++], _$k3[_$aj++] = _$hv[_$c1 >> 2], _$ah = _$ch[_$eZ++], _$k3[_$aj++] = _$hv[(_$c1 & 3) << 4 | _$ah >> 4], _$c1 = _$ch[_$eZ++], _$k3[_$aj++] = _$hv[(_$ah & 15) << 2 | _$c1 >> 6],  _$k3[_$aj++] = _$hv[_$c1 & 63];
    if (_$eZ < _$ch["length"]) { _$c1 = _$ch[_$eZ];_$k3[_$aj++] = _$hv[_$c1 >> 2];_$ah = _$ch[++_$eZ];_$k3[_$aj++] = _$hv[(_$c1 & 3) << 4 | _$ah >> 4]};
    if (_$ah !== undefined) { _$k3[_$aj++] = _$hv[(_$ah & 15) << 2];} 
   return  _$k3.join('')
}

2、arr_final = arr_4 + arr_549

//这里的arr_549长度不一定(arr_xxx)
arr_4 = []
_$_f(arr_4, number_549)  
arr_final = arr_4.concat(arr_549)

function _$_f(_$mM, _$$a) {
    if (typeof _$$a !== _$lb[4]) {
        _$$a = 0;
    } 
    _$mM[_$lb[10]](_$$a >> _$mJ[31] & _$mJ[25]);
    _$mM[_$lb[10]](_$$a >> _$mJ[13] & _$mJ[25]);
    _$mM[_$lb[10]](_$$a >> _$mJ[3] & _$mJ[25]);
    _$mM[_$lb[10]](_$$a & _$mJ[25]);
}

3、arr_549 = arr35 + arr512

//这里的arr_512长度不一定(arr_xxx)
//arr_35 = [1,0,32] + 35位数组里面第二位
arr_549 = _$b7(arr_35, arr_512); 
number_549 = _$bo(arr_549) ;

function _$b7(_$mM, _$$a) {  
      _$eW(_$mM, _$$a[_$lb[50]]);
      _$fi(_$mM, _$$a);
      return _$mM
}
function _$bo(_$ch) {
	  var _$hv,_$k3,_$eZ,_$aj;
	  if (typeof _$ch === "string") {_$ch = _$g$(_$ch);} 
	  _$hv = _$cM();
	  _$k3 = -1;
	  _$eZ = _$ch['length'];
	  for (_$aj = 0; _$aj < _$eZ;) {
		_$k3 = _$k3 >>> _$mJ[3] ^ _$hv[(_$k3 ^ _$ch[_$aj++]) & _$mJ[25]];
	  }
	  return (_$k3 ^ -1) >>> 0;
}

4、arr_512 = arr_498 + arr_21

//这里的arr_498长度不一定(arr_xxx)
//arr_21和生成cookie中的arr_20_to_21是一致的
arr_512 = _$kW(arr_498, arr_21); 

function _$kW(_$mM, _$$a) {
    var _$ei;
    if (typeof _$mM === _$lb[32]) {
        _$mM = _$cO(_$mM);
    } 
    _$ei = _$$O(_$$a);
    return _$ei._$ee(_$mM, false);
}

5、arr_498 = arr_cookie + arr_259

//这里的arr_259长度不一定(arr_xxx)
//arr_cookie就是生成cookie的数组
arr_498 = _$b7(arr_cookie,arr_259);

function _$b7(_$mM, _$$a) {  
      _$eW(_$mM, _$$a[_$lb[50]]);
      _$fi(_$mM, _$$a);
      return _$mM
}

6、arr_259由来

//获取关于后缀的259位数组
function get_arr_259(){
    _$mM = [];
    _$_f(_$mM,65592)  
    _$dE(_$mM, 1);  
    _$kk(_$mM, _$dO(_$mJ[43]));//35位数组的第10位运算得来
    _$_f(_$mM, _$_9[22]);  //35位数组的第19位运算得来
    _$li(_$mM, _$hc);  //flag_10_longnum
    _$_f(_$mM, _$iC); //arr_to_longnum(url1.toUpperCase())
    _$hh(_$mM, _$kd);  //_$kd为请求的url
    return _$mM
}

至此 关于后缀的所有算法都已分析完毕

三、请求验证

在这里插入图片描述
最后最后,真心谢谢十一姐的指导与帮助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vmp版本某数后缀(10-6,js逆向) 的相关文章

  • 将 Firebase 云消息传递与 Windows 应用程序结合使用

    我在 Android 和 iOS 应用程序中使用 Firebase Cloud Messaging 但是我还有此应用程序的 Windows Mac OS 版本 我想保留相同的逻辑 我知道 Firebase Cloud Messaging 可
  • Pandas Dataframe 中 bool 值的条件前向填充

    问题 如何转发 fill boolTruepandas 数据框中的值 如果是当天的第一个条目 True 到一天结束时 请参阅以下示例和所需的输出 Data import pandas as pd import numpy as np df
  • 当玩家触摸屏幕一侧时,如何让 pygame 发出警告?

    我使用 pygame 创建了一个游戏 当玩家触摸屏幕一侧时 我想让 pygame 给出类似 你不能触摸屏幕两侧 的错误 我尝试在互联网上搜索 但没有找到任何好的结果 我想过在屏幕外添加一个方块 当玩家触摸该方块时 它会发出警告 但这花了很长
  • 使用 Google 日历源时如何禁用 FullCalendar 中的活动链接?

    我正在使用 FullCalendar 库从 Google 日历加载日历中的事件 不幸的是 事件添加到日历后 它们是可点击的 当您点击该活动时 您会自动重定向到 Google 日历页面以查看该特定活动 或者如果您有足够的访问权限 则可以直接对
  • 循环中断打破tqdm

    下面的简单代码使用tqdm https github com tqdm tqdm在循环迭代时显示进度条 import tqdm for f in tqdm tqdm range 100000000 if f gt 100000000 4 b
  • 聆听 Angular 2 中的元素可见性

    我正在为我的网络应用程序使用 Bootstrap 和 Angular 2 v4 我想监听指令中的元素以了解可见性变化 我的元素有一个可以隐藏其子元素的父元素hidden sm up我需要在每次隐藏或显示时触发一个函数 div hidden
  • Python - 在窗口最小化或隐藏时使用 pywinauto 控制窗口

    我正在尝试做的事情 我正在尝试使用 pywinauto 在 python 中创建一个脚本 以在后台自动安装 notepad 隐藏或最小化 notepad 只是一个示例 因为我将编辑它以与其他软件一起使用 Problem 问题是我想在安装程序
  • 如何从浏览器向服务器发送“页面将关闭”消息?

    我想向每个 html 文档添加一个脚本 JavaScript 该脚本向服务器发送两条消息 页面确实打开了 页面将关闭 此消息包含页面打开的时间 打开消息应在文档加载时 或加载完成时 发送 这是简单的部分 The close message
  • 使用 Jade 评估自定义 javascript 方法 (CircularJSON)

    我想通过 Jade 将一个对象解析为客户端 JavaScript 通常这会起作用 script var object JSON parse JSON stringify object but my object is circular ht
  • 如何在 Django 中使用并发进程记录到单个文件而不使用独占锁

    给定一个在多个服务器上同时执行的 Django 应用程序 该应用程序如何记录到单个共享日志文件 在网络共享中 而不保持该文件以独占模式永久打开 当您想要利用日志流时 这种情况适用于 Windows Azure 网站上托管的 Django 应
  • 检查所有值是否作为字典中的键存在

    我有一个值列表和一本字典 我想确保列表中的每个值都作为字典中的键存在 目前我正在使用两组来确定字典中是否存在任何值 unmapped set foo set bar keys 有没有更Pythonic的方法来测试这个 感觉有点像黑客 您的方
  • 在 Pandas DataFrame Python 中添加新列[重复]

    这个问题在这里已经有答案了 例如 我在 Pandas 中有数据框 Col1 Col2 A 1 B 2 C 3 现在 如果我想再添加一个名为 Col3 的列 并且该值基于 Col2 式中 如果Col2 gt 1 则Col3为0 否则为1 所以
  • glpk.LPX 向后兼容性?

    较新版本的glpk没有LPXapi 旧包需要它 我如何使用旧包 例如COBRA http opencobra sourceforge net openCOBRA Welcome html 与较新版本的glpk 注意COBRA适用于 MATL
  • 使用 Enzyme 测试 `React.createRef` api

    我想测试下面的类 它使用React createRef api 不过 快速搜索并没有发现任何这样做的例子 有人成功过吗 我该如何嘲笑裁判 理想情况下我想使用shallow class Main extends React Component
  • 什么是 WKWebView 中的 WKErrorDomain 错误 4

    fatal error LPWebView encounters an error Error Domain WKErrorDomain Code 4 A JavaScript exception occurred UserInfo 0x7
  • 如何从 json 文件创建模型? (ExtJS)

    这是我想使用 json 文件创建的模型 Ext define Users extend Ext data Model fields name user id type int name user name type string 为了根据服
  • Python - 字典和列表相交

    给定以下数据结构 找出这两种数据结构共有的交集键的最有效方法是什么 dict1 2A 3A 4B list1 2A 4B Expected output 2A 4B 如果这也能产生更快的输出 我可以将列表 不是 dict1 组织到任何其他数
  • 改变字典的哈希函数

    按照此question https stackoverflow com questions 37100390 towards understanding dictionaries 我们知道两个不同的字典 dict 1 and dict 2例
  • 没有输入的 jQuery 日期选择器

    我有一个相当复杂的网络应用程序 我想向其中添加一些日期选择 UI 我遇到的问题是我无法从文档中弄清楚如何真正控制日期选择器的出现方式和时间 不涉及任何表单元素 不 我不会添加秘密表单字段 因此简单的开箱即用方法根本行不通 我希望有人可以提供
  • 使用velocity.js制作可拖动元素的动画

    我正在使用velocity js 为用户拖动的可拖动 SVG 元素设置动画 然而 velocity js 将先前的 mousemove 坐标排队并通过所有后续的 mousemove 坐标进行动画处理 我想要的是velocity js 不要对

随机推荐

  • LeetCode_Array_300. Longest Increasing Subsequence 最长递增子序列【动态规划】【Java】【中等】

    目录 一 题目描述 英文描述 中文描述 示例与说明 二 解题思路 三 AC代码 Java 四 解题过程 第一搏 第二搏 一 题目描述 英文描述 Given an integer array nums return the length of
  • 1-1. C++基础篇

    目录 一 第一个程序 二 注释 1 单行注释 三 变量的意义及定义方法 1 变量的意义 2 变量的定义 四 常量 1 宏常量 2 const修饰的变量构成的常量 五 关键字 六 标识符命名规则 1 标识符命名时不可使用关键字 2 标识符由字
  • 解决文件嵌套太深无法删除问题。

    在搭建前端构建工具gulp时 存在一个文件夹node modules怎么删都删不掉 一 首先可以用del以及rd 百度经验上原文开始 如果你要删除的整个文件夹以及文件夹里面的所有内容的话rd s q 盘符 某个文件夹 这样整个文件夹所有的文
  • DOTA 数据集:2806 张遥感图像,近 19 万个标注实例

    By 超神经 内容提要 DOTA 数据集是用于航拍图像中的目标检测的大型图像数据集 它可用于发现和评估航拍图像中的物体 无论从数量还是质量上来说 在同类型数据集中都具有很大优势 关键词 航拍图像 遥感数据集 大规模遥感图像数据集 挑战 CV
  • gdb调试动态库

    Happy Niu Year step1 编译一个linux动态库 头文件get h ifndef get H define get H int get int set int a endif 实现文件get cpp include
  • JavaScript 价格正则表达式

    正则表达式如下 1 9 d d 1 2 0 d 1 2 价格符合两种格式 1 9 d d 1 2 1 9开头 后跟是0 9 可以跟小数点 但小数点后要带上1 2位小数 类似2 2 0 2 1 2 22等 0 d 1 2 0开头 后可以跟小数
  • VS 2022新特性_Visual Studio2022新功能

    一 VS 2022新特性 Visual Studio2022新功能 Visual Studio 2022 正式版来了 默认支持 Net 6 默认支持C 10 下载地址 https visualstudio microsoft com zh
  • Controller 层编写测试类

    前后端分离以后 Controller 部分的代码当然也要进行测试 但是往常我们的测试类无法发送http请求 这时就需要用到 MockMvc 一个简单的例子 测试类 RunWith SpringRunner class SpringBootT
  • 百度ueditor富文本编辑器数据回显为代码问题

    使用ueditor时 从数据库获取到html数据后 直接在ueditor里显示为代码 可通过以下方式修复
  • 卷积网络中,卷积操作后,激活和池化的顺序,应该先激活还是先池化

    对图像卷积操作后 接下来是先激活还是先池化 现在存在两种顺序 卷积 gt 激活 gt 池化 卷积 gt 池化 gt 激活 先给出结论 如果使用最大池化 两种顺序的结果是一样的 如果使用平均池化 建议采用第1种顺序 即卷积 gt 激活 gt
  • 表单验证实现React-router跳转

    方法一 broserHistory push handleSubmit e e preventDefault const path demo broserHistory push path 方法二 context对象方法 export de
  • Burp Suite入门笔记

    转载于 https www cnblogs com Wade James p 9614310 html
  • Cannot find module ‘F:\nodejs\node_modules\http-server\bin\http-server‘

    问题 http server全局安装后仍找不到模块 原因 http server与html文件不在同一目录 解决方案 1 打开http server文件所在位置 复制npm文件夹下的所有文件 2 将所有文件粘贴到html文件所在的目录下 3
  • 详解本地maven私服nexus安装及上传jar包snapshots快照

    目录 1 nexus简介 2 下载nexus 3 启动nexus 4 访问nexus 5 nexus服务介绍 6 相关配置 7 页面上传Release的jar流程 8 上传snapshots快照jar 9 项目中引用本地私服 1 nexus
  • Vue3+vant库处理showToast报错正确姿势:Can‘t resolve ‘vant/es/show-toast‘

    目录 1 首先 要排除是自己配置全局引用错误导致的问题 2 排除不是自己引用问题 进入下一步 移除 babel plugin import 3 在此时 似乎就已经解决showToast报错问题 环境 vant 4 6 3 1 首先 要排除是
  • llinux运维基础:zabbix部署

    一 zabbix安装 安装5 0版本 1 配置仓库 rpm Uvh https repo zabbix com zabbix 5 0 rhel 7 x86 64 zabbix release 5 0 1 el7 noarch rpm yum
  • 云服务器 ftp上传文件大小,云服务器ftp上传文件大小

    云服务器ftp上传文件大小 内容精选 换一换 在本地主机和Windows弹性云服务器上分别安装QQ exe等工具进行数据传输 使用远程桌面连接mstsc方式进行数据传输 该方式不支持断点续传 可能存在传输中断的情况 因此不建议上传大文件 文
  • 打包python脚本的血与泪

    解决Python脚本打包遇到的各种问题 故事背景 以下开始花里胡哨的错误操作 正确方法 故事背景 某日隔壁部门同事请领导帮忙写个脚本 能够完成excel上的高重复度繁复的工作 领导随手交给我 这个东西简单的 日天你去做吧 正在b站摸鱼的我
  • ssm+maven的进销存管理系统

    基于ssm maven的超市进销存管理系统 普通用户主要包含 进货管理 商品管理 库存管理 销售管理 酷虎信息管理 供应商信息管理 管理员比普通用户多了一个用户管理 登录界面 普通用户之进货管理 普通用户之商品信息管理 坤村管理 销售管理
  • vmp版本某数后缀(10-6,js逆向)

    看这篇文章的前提是 读者已经成功请求到了200页面 一 抓包分析 这个站在提交验证码的时候会将识别的内容加密放到后缀中 所以分析后缀也是无奈之举 二 跟栈分析 下个xhr断点 提交验证码 找到这个地方 思路 open和send都经过魔改了