HU航司, JS逆向,TD风控,加密算法纯算
技术文章大纲HU航司App逆向与验签协议算法分析背景与目标目标网址aHR0cHM6Ly9uZXcuaG5haXIuY29tL2hhaW5hbmFpci9pYmUvY29tbW9uL2xvZ2luLmRvJS逆向分析流程流程分析获取验证码打开登录页面输入手机号点击获取验证码触发验证码里面需要还原的值有q1-q2,p3-p9清除浏览器cookie刷新网页重新请求并打上断点往下跟栈此时数据已生成。q1在文件里面搜索QO00Qo可以看到这个值是一个变量fmopt.tokenfmopt.partnerfopt.appname, fmopt的属性值都可以写死搜索这个变量oOO0OQ是个定值。回到最初这几个值拼接后进行url编码就是q1q2:全局搜索o00ooQ这个可以写死有两种状态一种|^^1^^1^^1 然后url编码一种 blackbox替换|然后url编码var o00ooQ (O0oOoQ.blackBox || |) ^^ O0oOoQ.requestType ^^ (QoQ0oO(OOOQoQ.lang) 1) ^^ (Q0QQO0.support_css3_value(QOOO0o(usbotgpsn-tuzmf), QOOO0o(qsftfswf-3e)) !(!!window.ActiveXObject || QOOO0o(AdujwfXOckfdu)in window) ? 1 : 2);p3经过位置加密函数生成未加密数据搜索这个值a函数(p1p2)validateCodeObj/| userAnsewr/| 函数(变量b)var o00OQ0 oOQoOo(QO00Qo ^^ o00ooQ) ^^ (O0oOoQ.validateCodeObj || |) ^^ (O0oOoQ.userAnswer || |) ^^ (O0oOoQ.validateToken || |) oOQoOo(QoQQ0O);搜索变量b b变量c/| true/| true/|时间戳var QoQQ0O (Q00oo0 || |) ^^ (Oo0O0O || |) ^^ (O0Oo0O || |) ^^ new Date().getTime();搜索变量c还原一下代码 cargumentss[callee][caller][toString][length]var Q00oo0 function() { return arguments[callee]caller][toString]()[length]; }();秘钥 de(stq67pv9)p1.substring(10,18)这里后面的属性是p1进行截取充当var o0o0oo QOOO0o(stq67pv9) Q0QOoQ.substring(10, 18);e函数直接扣下来转成pythonASCII编码每个小写的ASCII编码-1相当于小写字母循环向前移动一位p4sensorInfo/| mouseInfo/| usedTime/|然后p3和p4进行同一个函数加密var oQooQQ (O0oOoQ.sensorInfo || |) ^^ (O0oOoQ.mouseInfo || |) ^^ (O0oOoQ.usedTime || |);跟栈进入方法可以明显看到是AES加密p5固定为 webp6 OOQ00O(8);window.location.href秘钥 OOQ00O(8);是一个八位的随机数var OQoQOQ OOQ00O(8); var oO0oQo Qo0QO0(OQoQOQ window.location.href, o0o0oo);p7另外一个是函数(p6)函数(p2)QooQQO.p7 QO0QOQ OOQ00O(32); var QO0QOQ oOQoOo(oO0oQo) oOQoOo(QoQQ0O);OOQ00O(32);是一个32随机数p8: 八位随机数QooQQO.p8 OQoQOQ; var OQoQOQ OOQ00O(8);p9 函数(p2,秘钥)函数---》以上的统称全局搜索这个变量发现是md5验证接口触发接口流程和获取一样注重关注以下几点p2初始化状态是1验证的状态是3p3里面的validateCodeObj是初始化返回的数据里面存放id背景图的url等信息。userAnswer里面存放移动距离时间戳往上再跟一层里面的userAnswer是图片的缺口距离固定10当前时间mouserInfo:里面存放的是页面的xy。所以这个鼠标轨迹可以固定验证码图片还原保存完图片是这种切片所以需要还原一下重新触发验证码获取初始化返回了一个imageType可以全局搜一下这个字段这里就是把返回的两行八列的图片转成原图。丢给ai转一下就行签名参数构造流程时间戳、设备信息、密钥派生算法还原常见加密模式AES、RSA、HMAC-SHA256等OPENVC识别距离def extract_slider_mask_and_bbox(slider_img): 从滑块图片提取精确掩码和边界框。 优先使用 alpha 通道否则用阈值二值化。 Returns: mask: 二值掩码 (h, w), 255滑块区域 bbox: (x, y, w, h) 滑块有效区域的边界框 piece_bgr: 裁剪后的滑块 BGR 图像 piece_mask: 裁剪后的掩码 h, w slider_img.shape[:2] channels slider_img.shape[2] if len(slider_img.shape) 2 else 1 if channels 4: # PNG 有 alpha 通道直接使用 alpha slider_img[:, :, 3] _, mask cv2.threshold(alpha, 128, 255, cv2.THRESH_BINARY) bgr slider_img[:, :, :3] else: # 没有 alpha 通道用阈值提取 gray cv2.cvtColor(slider_img, cv2.COLOR_BGR2GRAY) if channels 3 else slider_img _, mask cv2.threshold(gray, 30, 255, cv2.THRESH_BINARY) # 获取最大连通域去除噪声 num_labels, labels, stats, _ cv2.connectedComponentsWithStats(mask, connectivity8) if num_labels 1: largest_label 1 np.argmax(stats[1:, cv2.CC_STAT_AREA]) mask np.where(labels largest_label, 255, 0).astype(np.uint8) bgr slider_img[:, :, :3] if channels 3 else cv2.cvtColor(slider_img, cv2.COLOR_GRAY2BGR) # 获取边界框 coords cv2.findNonZero(mask) if coords is None: return mask, None, None, None x, y, w_box, h_box cv2.boundingRect(coords) # 裁剪 piece_bgr bgr[y:y h_box, x:x w_box] piece_mask mask[y:y h_box, x:x w_box] bbox (x, y, w_box, h_box) return mask, bbox, piece_bgr, piece_mask验证结果法律与伦理边界逆向技术的合法使用范围企业防护与用户隐私的平衡个人观点禁止商业行为侵权请联系下架

相关新闻

华为OD机试真题解析:压缩日志查询与区间查找算法实践

华为OD机试真题解析:压缩日志查询与区间查找算法实践

1. 项目概述与核心需求解析最近在准备华为OD机试的朋友,应该都听说了2025年新系统启用了“双机位”监考模式,并且题库也进行了更新。我拿到了一道来自A卷的真题,题目叫“压缩日志查询”。这道题乍一看名字,可能觉得是简单的字符串…

2026/10/27 3:53:08 阅读更多 →
TurtleBot3 ROS入门:从硬件连接到自主导航的实战指南

TurtleBot3 ROS入门:从硬件连接到自主导航的实战指南

1. 项目概述:这不是一本“说明书”,而是一张通往真实机器人世界的入场券 如果你刚拆开TurtleBot3的包装盒,手指还沾着防静电袋的微凉触感,心里却盘算着“这玩意儿到底能干啥”——恭喜,你站在了绝大多数机器人初学者共…

2026/10/26 18:38:47 阅读更多 →
C++开发环境配置与常见编译链接错误排查指南

C++开发环境配置与常见编译链接错误排查指南

1. 项目概述:从“Hello World”到第一个报错 如果你刚开始学习C,或者正准备从其他语言转向C,那么恭喜你,你即将踏入一个强大但也充满“惊喜”的世界。我说的“惊喜”,很多时候指的就是那些让你抓耳挠腮、一头雾水的编译…

2026/10/25 4:30:51 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/26 12:00:21 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/25 22:36:10 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/26 4:52:12 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/26 12:00:21 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/26 5:00:37 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/26 3:16:46 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 12:00:19 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/25 13:21:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 8:34:37 阅读更多 →