某视频tv app 签名算法分析

news/2024/12/26 17:50:51/文章来源:https://www.cnblogs.com/cijian9000/p/18633829

一、基本信息

分析工具:objection、frida

二、加解密分析

通过抓包发现请求体里有签名校验 sign ,并且响应体里返回的数据是密文,所以本次的目标就是破解签名 sign 以及响应包加密算法。

2.1 请求签名 sign

从 sign 的数值长度上判断可能是 MD5,先使用 objection hook java.security.MessageDigest.getInstance 判断使用的算法。
android hooking watch class_method java.security.MessageDigest.getInstance --dump-args --dump-backtrace --dump-return

这里看到 com.ximi.video.utils.UserUtils.MD5 调用了 MD5 算法,对这个函数方法进行 hook。
android hooking watch class_method com.xxx.video.utils.UserUtils.MD5 --dump-args --dump-backtrace --dump-return

由此就得到了 sign 的 hash 方式,即 asda26vahEsacdcand+除 sign 之外的请求体参数+eriju4owg5RdsaQocpsdcdadacirgnld,再进行 MD5 。

2.1 响应加解密算法

先 hook javax.crypto.Cipher.doFinal 来判断 APP 加解密算法的调用情况,发现 com.xxx.video.net.AESUtils 进行了调用,AES 加解密的话我们还需要知道密钥和偏移量。
android hooking watch class_method javax.crypto.Cipher.doFinal --dump-args --dump-backtrace --dump-return

对 com.xxx.video.net.AESUtils.decrypt 方法进行 hook,目的主要是得到传参以及参数数据类型,后续可以编写 frida 脚本进行 hook。
android hooking watch class_method com.xxx.video.net.AESUtils.decrypt --dump-args --dump-backtrace --dump-return

编写 frida 脚本用于获取密钥和偏移量。

Java.perform(function() {try {var AESUtils = Java.use('com.ximi.video.net.AESUtils');var SecretKeySpec = Java.use('javax.crypto.spec.SecretKeySpec');var IvParameterSpec = Java.use('javax.crypto.spec.IvParameterSpec');AESUtils.decrypt.overload('java.lang.String', 'javax.crypto.SecretKey', 'javax.crypto.spec.IvParameterSpec', '[B').implementation = function(s, secretKey, iv, byteArray) {console.log('AESUtils.decrypt called with arguments:');// cipher modeconsole.log('Cipher Mode: ' + s);// 打印 SecretKey 的详细信息try {// 将 secretKey 转换为 SecretKeySpecvar castedSecretKey = Java.cast(secretKey, SecretKeySpec);var secretKeyBytes = castedSecretKey.getEncoded();console.log('SecretKey (getEncoded): ' + bytesToString(secretKeyBytes));} catch(e) {console.log('Error getting SecretKey bytes: ' + e.message);}// 打印 IvParameterSpec 的内容try {var ivBytes = iv.getIV();console.log('IvParameterSpec: ' + bytesToString(ivBytes));} catch(e) {console.log('Error getting IvParameterSpec bytes: ' + e.message);}var result = this.decrypt(s, secretKey, iv, byteArray);return result;};function bytesToHex(byteArray) {var hexString = '';for (var i = 0; i < byteArray.length; i++) {var hex = (byteArray[i] & 0xff).toString(16);hex = (hex.length === 1) ? '0' + hex: hex;hexString += hex;}return hexString;}function bytesToString(bytes) {let str = '';for (let i = 0; i < bytes.length; i++) {str += String.fromCharCode(bytes[i]);}return str;}} catch(e) {console.log('Error: ' + e.message);}
});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/859380.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Metal RT压缩

iOS设备的屏幕分辨率越来越高,渲染时需要的RT的分辨率和内存的开销都更高了。苹果官方在2021年发布的A15 Bonic芯片中支持了RT的lossy压缩,可以减少50%的内存footprint。 MetalRT压缩是什么? Apple在2018年就已经提供了RT的lossless压缩方案,可以节省带宽,从而降低功耗。在…

百度地图轨迹绘制以及轨迹回放以及鼠标滑过自定义样式

用百度地图的绘制轨迹以及相关的轨迹回放,鼠标滑过展示与否的自定义弹窗的整理 图片展示组件代码:<!--* @Author: menxiaojin* @Date: 2023-07-12 14:03:03* @LastEditors: menxiaojin* @LastEditTime: 2023-07-20 19:41:02 --> <!--首页地图组件--> <templat…

【护网】IP WhitePass:IP过滤,白名单过滤,用于护网CDN、负载地址过滤等;

免责声明 由于传播、利用本公众号夜组安全所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号夜组安全及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!所有工具安全性自测!!!工具介绍 在护…

async/await 异步连接通讯设备

1. 在项目中遇到,获取上下两把扫码枪的结果,但是只有其中一把扫码枪能扫码,因为码可能在上面也可能在下面2. 起初我是用的同步的方法,先使用下面的扫码枪,再使用上面的扫码枪,扫码枪扫描超时为1秒,但是这样的缺点就是会浪费一把扫码枪扫描的时间3. 为了节约时间,将方法…

智谱开源CogAgent的最新模型CogAgent-9B-20241220,全面领先所有开闭源GUI Agent模型

在现代数字世界中,图形用户界面(GUI)是人机交互的核心。然而,尽管大型语言模型(LLM)如ChatGPT在处理文本任务上表现出色,但在理解和操作GUI方面仍面临挑战,因此最近一年来,在学界和大模型社区中,越来越多的研究者和开发者们开始关注VLM-based GUI Agent。2023年12月,…

会话相关的常用查询

ORACLE常用的与会话相关的查询 目录ORACLE常用的与会话相关的查询查看当前锁的信息:查看当前正在执行的sqlORACLE的监听日志(listener.log)Listener log locationFor oracle 9i/10gFor oracle 11g/12c或者通过 lsnrctl status 也可以查看位置或者11g可以通过 adrci 命令List…

VMware——mac下设置虚拟机共享文件夹

前言 按着VMware软件给的提示,设置好共享文件夹之后,在linux目录下没有看到文件夹,就想到了可能是没挂载的原因。 内容 基本的操作直接参考官方的即可,这里不做描述,直接贴图了,官方给的教程缺少了比较关键的一步,不过可能认为这个是常识,就没有放在文档里吧。 基础步骤…

LVS(Linux Virtual Server)备忘录

(241226) 基础内容 LVS 是 Linux Virtual Server ,Linux 虚拟服务器;是一个虚拟的服务器集群【多台机器 LB IP】。LVS 集群分为三层结构: 负载调度器(load balancer):它是整个LVS 集群对外的前端机器,负责将client请求发送到一组服务器【多台LB IP】上执行,而client端认…

数字化工厂 制造业转型升级的必由之路 珠海先达

随着“工业4.0”理念的全球传播,制造业正经历着一场前所未有的变革。在这场变革中,数字化工厂作为通往智能制造的重要阶段,成为了众多企业竞相追逐的目标。数字化工厂不仅提升了生产效率,还优化了产品设计、生产流程和管理方式,为企业在激烈的市场竞争中赢得了先机。 一、…

适合小团队协作的开源在线项目管理系统推荐【任务管理与进度追踪】

对于小团队而言,高效协作是项目顺利推进的关键所在,而一款契合的开源在线项目管理系统,无疑能在任务管理与进度追踪方面发挥巨大作用,助力团队成员有条不紊地开展工作,提升整体效率。当下市场上有诸多此类优秀的开源工具可供选择,本文就将为小团队推荐几款,帮助大家找到…