车智赢APP登录协议逆向分析(核心算法篇)
本次分析的目标是“车智赢”APP版本v5.6.1的登录协议。通过抓包我们确定了登录请求https://dealercloudapi.che168.com/tradercloud/sealed/login/login.ashx的关键参数在于请求体中的_sign、pwd和udid。本文将从反编译开始详细拆解这三个参数的生成算法。一、反编译与关键代码定位使用反编译工具如 Jadx打开目标APK文件。要定位登录相关的代码最直接的方法是搜索登录请求的URL特征或接口路径。-- 搜索关键词在 Jadx 中全局搜索登录请求的地址login.ashx或部分路径sealed/login。-- 定位结果通过搜索可以快速定位到处理登录请求的代码位置通常位于某个Model或ViewModel中。例如文档中在com.che168.autotradercloud.login.model包下找到了LoginModel类其中的login方法包含了登录的网络请求逻辑。这是分析的起点。二、核心参数算法逆向登录请求的成功构建依赖于对pwd(密码)、udid(设备标识) 和_sign(请求签名) 的逆向。1. 密码 (pwd) 算法-- 初步判断抓包数据显示pwd值为32位十六进制字符串疑似 MD5 哈希值。-- 代码追踪在LoginModel的登录方法中追踪密码参数的处理。发现密码被传递给了SecurityUtil.encodeMD5(String str)方法。-- 算法确认分析SecurityUtil.encodeMD5方法的源码确认其为标准的 MD5 算法实现没有加盐。其流程是获取明文字符串的字节数组通过MessageDigest进行 MD5 计算再将结果转换为小写的十六进制字符串。-结论pwd md5(明文密码)2. 请求签名 (_sign) 算法签名用于防止请求被篡改是逆向的重点。-- 搜索与定位在代码中搜索_sign关键字可以找到多处赋值点。通过代码回溯和动态 Hook 验证最终确定签名是在LaunchModel.lambda$initRequestCommonParams$0方法中被添加到参数列表的。该方法调用SignManager.INSTANCE.signByType(i, treeMap)生成签名。-- 签名算法分析分析SignManager.signByType方法本例中i的值为1其核心逻辑如下1.获取密钥根据类型i选择对应的密钥字符串。对于登录请求使用的密钥是“WoC!AH_6Ew1f6%8“。2.拼接字符串-- 将密钥置于开头。-- 遍历TreeMap一个已按Key排序的Map将每个参数的Key和Value依次拼接。-- 将密钥置于结尾。最终形成一个待签名的原始字符串。- -Python 算法还原示例import hashlib def md5(data_string): obj hashlib.md5() obj.update(data_string.encode(utf-8)) return obj.hexdigest().upper() # 注意转为大写 def generate_sign(params_dict): key “WoC!AH_6Ew1f6%8“ # 由于参数来源于 TreeMap已按 Key 排序 sorted_params ““.join([f“{k}{params_dict[k]}“ for k in sorted(params_dict.keys())]) sign_string key sorted_params key return md5(sign_string)3. 设备标识 (udid) 算法udid是一个加密字符串逆向过程相对复杂。- -生成流程追踪在LaunchModel.lambda$initRequestCommonParams$0方法中udid由AppUtils.getUDID(context)生成。继续跟进该方法getUDID(context)方法内部会先构造一个原始字符串格式为“{uuid}|{nanoTime}|{deviceId}“。- -uuid一个随机生成的 UUID。- -nanoTime系统启动到当前的纳秒时间。- -deviceId从本地 SPSharedPreferences中读取的设备ID分析发现其常为空或固定值可置空或使用固定值如 “358908“替代。--加密算法上述原始字符串会传入SecurityUtil.encode3Des(context, str)进行加密。-- 密钥与IV通过静态分析或动态 HookAHAPIHelper.getDesKey(context)方法可获取加密使用的固定密钥“appapiche168comappapiche168comap“实际使用前24字节。加密的固定IV为“appapich“。-- 算法模式采用DESede/CBC/PKCS5Padding​ 算法。-- 输出加密后的字节数组会经过自定义的encode方法实则为 Base64 编码输出最终形成udid值。-- Python 算法还原示例import base64 from Crypto.Cipher import DES3 from Crypto.Util.Padding import pad import uuid import random def generate_udid(): # 1. 构造原始字符串 imei str(uuid.uuid4()) nano_time random.randint(5000000000000, 8000000000000) # 模拟纳秒时间 device_id ““ # 可置空 raw_str f“{imei}|{nano_time}|{device_id}“ # 2. 3DES加密 key b“appapiche168comappapiche168comap“[:24] # 取前24字节 iv b“appapich“ cipher DES3.new(key, DES3.MODE_CBC, iv) padded_data pad(raw_str.encode(‘utf-8‘), DES3.block_size) encrypted_data cipher.encrypt(padded_data) # 3. Base64编码 udid base64.b64encode(encrypted_data).decode(‘utf-8‘) return udid

相关新闻

模拟京东商品评论的Python API实现,返回符合风格的JSON数据

模拟京东商品评论的Python API实现,返回符合风格的JSON数据

根据京东商品评论的典型结构和字段,我生成了符合京东风格的JSON数据。以下是模拟的京东商品评论API返回的JSON示例:json{"code": 0,"message": "success","data": {"total": 10,"goodRateShow&q…

2026/7/7 1:50:32 阅读更多 →
京东SP开奖!最高20薪年包52W,小白程序员必看:面试重点+薪资拆解建议收藏

京东SP开奖!最高20薪年包52W,小白程序员必看:面试重点+薪资拆解建议收藏

继字节、腾讯之后,京东今年SP(Special Offer)也正式进入开奖阶段!还没查到结果的同学不用焦虑,后续还有捡漏机会,一般会持续到12月底,耐心等待很可能迎来意外惊喜。 我们训练营学员再传好消息&a…

2026/7/4 5:45:36 阅读更多 →
网络安全基础知识超全整理:零基础也能看懂,手把手带你入门(附思维导图)【无标题】

网络安全基础知识超全整理:零基础也能看懂,手把手带你入门(附思维导图)【无标题】

一、网络安全定义 网络安全是组织用来保护其应用程序、数据、程序、网络和系统免受网络攻击和未经授权访问的一套标准和做法。随着攻击者使用新技术和社会工程手段向组织和用户勒索钱财、破坏业务流程以及窃取或破坏敏感信息,网络安全威胁的复杂程度正在迅速增加。…

2026/7/5 8:55:35 阅读更多 →

最新新闻

AI 前沿日报 | 2026年7月6日

AI 前沿日报 | 2026年7月6日

🔥 今日头条1. 三星电子 Q2 营业利润预计同比暴涨 18 倍,AI 存储芯片需求持续引爆业绩 三星电子Q2营业利润预计同比暴涨约18倍,再创历史新高。受益于AI数据中心对HBM等存储芯片的旺盛需求,三星旗下内存产品价格大幅上涨&#xff0…

2026/7/7 1:49:59 阅读更多 →
决策树 ID3 算法实战:Python 手写 20 行代码,信息增益计算与可视化

决策树 ID3 算法实战:Python 手写 20 行代码,信息增益计算与可视化

决策树 ID3 算法实战:Python 手写 20 行代码实现信息增益计算与可视化决策树作为机器学习中最直观的算法之一,其核心思想是通过一系列规则对数据进行分类或回归。ID3 算法作为决策树的经典实现,以信息增益为划分标准,能够自动从数…

2026/7/7 1:49:59 阅读更多 →
Kioxia 与 Sandisk 在北上工厂 Fab2 启动第十代 3D 闪存产品生产

Kioxia 与 Sandisk 在北上工厂 Fab2 启动第十代 3D 闪存产品生产

两家公司展示 K2 制造设施建设持续推进,以满足不断增长的 NAND 闪存市场需求 Kioxia Holdings Corporation(东京证券交易所代码:285A)旗下子公司 Kioxia Corporation 与 Sandisk Corporation(纳斯达克股票代码&#x…

2026/7/7 1:49:59 阅读更多 →
HDFS C++ SDK 超详细实战教程|完整编译、API解析、生产可用Demo

HDFS C++ SDK 超详细实战教程|完整编译、API解析、生产可用Demo

在大数据后端开发、离线计算、日志归档、数据同步场景中,HDFS 是最主流的分布式文件存储系统。日常开发中Java生态可直接使用Hadoop原生SDK,而C高性能服务、边缘计算、离线检索、底层存储组件开发,必须使用 HDFS C SDK(libhdfs&am…

2026/7/7 1:47:57 阅读更多 →
开发环境准备

开发环境准备

配置深度学习环境 配置参考 vscode连接到conda环境 1.安装python插件 2.打开自己的.py文件 3.Ctrl Shift P 呼出命令面板,输入Python: Select Interpreter,选择自己的conda环境 4.执行测试 import torch import timeprint("" * 40) prin…

2026/7/7 1:45:57 阅读更多 →
当我想给小说配音时,我到底经历了什么

当我想给小说配音时,我到底经历了什么

事情的起因很简单 我写了一本小说,大概十几万字,想让它在喜马拉雅上「活」起来。不是那种机器念经式的AI朗读,而是真正的、有情绪起伏的、分角色的有声书——旁白沉稳克制,主角鲜活有记忆点,反派说话自带压迫感&#x…

2026/7/7 1:43:57 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队,往往容易卡在一容易踩坑的选型难题: 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定,必须同时依赖「文本语义理解 实体关系推理」时,到底是做「向量图谱混合检索」就够了,还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻