某小视频sign破解

最近朋友告诉我某视频发新视频能褥羊毛,而且多个账号可以绑定同一个支付宝,于是准备抓包做一个批量自动上传小视频的工具。

0x00 抓包

抓包环境参考之前写的文章https://blog.youkuaiyun.com/u012833250/article/details/53556451
这里写图片描述
如图所示,请求头里面包含sign,根据以往经验来分析,这个字符串一定是通过算法将地址,设备号什么的组成一个字符串并加密

0x01 搜索

要想更快的分析出sign算法,灵活的搜索是必不可少的,直接打开jeb搜索字符串sign
这里写图片描述
因为sign是字符串,所以在代码里可能会是map.put(“sign”,xxx),基本可以排除一大批不相关的结果,找到最可能的结果,双击点开,按q跳转到伪Java代码
这里写图片描述
看代码证明我们的猜想是没问题的,sign=v_02,继续向前反查(crtl+左键)
这里写图片描述
看到这里可以通过修改v0_2的变量名(快捷键N)来分析是谁给它赋值的,一步步反查找加密的方法,但是这里有个意外之喜,看上面的a方法,里面有一句a.b("amdc.DispatchParamBuilder", "get sign failed", v1, ((Throwable)v0), new Object[0]);,不难猜出,这是打印Log,加密失败,那么可以推断出这就是sign参数的加密方法
继续向前反查arg5.sign方法,

public interface IAmdcSign {
    String getAppkey();

    String sign(String arg1);

    boolean useSecurityGuard();
}

这是一个interface,怎么找到实现这个interface的类呢,这次打开Android killer,搜索IAmdcSign
这里写图片描述
挨个展开搜索结果,发现第二个结果里面有这样一句.implements Lanet/channel/strategy/dispatch/IAmdcSign;,implements是什么意思就不用再说了吧。打开anet.channel.i类

package anet.channel;

import anet.channel.security.ISecurity;
import anet.channel.strategy.dispatch.IAmdcSign;

final class i implements IAmdcSign {
    i(d arg1, String arg2, ISecurity arg3) {
        this.c = arg1;
        this.a = arg2;
        this.b = arg3;
        super();
    }

    public final String getAppkey() {
        return this.a;
    }

    public final String sign(String arg5) {
        return this.b.sign(this.c.b, "HMAC_SHA1", this.getAppkey(), arg5);
    }

    public final boolean useSecurityGuard() {
        boolean v0 = !this.b.isSecOff() ? true : false;
        return v0;
    }
}

发现加密方式是HMAC_SHA1,这里基本也就知道如何加密了,不需要再反查,直接动态调试下断点抓出key就完事。
本帖博主原创,转载请注明出处

在搜题或口算类应用/网站中,`sign` 参数通常用于请求签名,以确保请求的合法性,防止请求被篡改或滥用。这种签名机制通常由客户端生成,并通过逆向分析获取其生成算法。以下是关于 `sign` 参数生成方法及逆向分析的详细说明: 1. **sign 参数的生成方法** `sign` 参数通常是通过特定算法生成的字符串,其生成方式可能包括以下几种: - **基于时间戳**:`sign` 可能结合了当前时间戳,以确保每次请求的唯一性。例如,使用 `timestamp` 作为输入的一部分生成签名。 - **基于请求参数**:将请求中的参数按一定规则排序后,拼接成一个字符串,再通过哈希算法(如 MD5、SHA1)生成签名。 - **基于密钥加密**:某些应用会使用一个固定的密钥(secret key),结合请求参数和时间戳,通过加密算法(如 HMAC-SHA256)生成签名[^1]。 2. **逆向分析的方法** 逆向分析是获取 `sign` 参数生成算法的关键步骤。以下是常见的逆向分析方法: - **抓包分析**:使用抓包工具(如 Charles 或 Fiddler)捕获请求流量,分析请求头和请求参数,找出 `sign` 参数的生成规律。 - **反编译与代码分析**:对于移动应用,可以通过反编译工具(如 APKTool、Jadx)获取应用的源代码,搜索与 `sign` 相关的关键词,找到生成签名的代码逻辑。 - **调试与动态分析**:利用调试工具(如 Frida、Xposed)动态跟踪应用的执行流程,定位生成 `sign` 的函数并分析其逻辑。 3. **常见加密算法与实现** 以下是几种常见的 `sign` 生成算法示例,可以用于参考或测试: ```python import hashlib def generate_sign(params, secret_key): # 按参数名排序后拼接 sorted_params = sorted(params.items(), key=lambda x: x[0]) param_str = '&'.join([f"{k}={v}" for k, v in sorted_params]) # 拼接密钥 sign_str = param_str + secret_key # 使用 MD5 生成签名 sign = hashlib.md5(sign_str.encode()).hexdigest() return sign ``` ```python import hmac import hashlib def generate_hmac_sign(params, secret_key): # 按参数名排序后拼接 sorted_params = sorted(params.items(), key=lambda x: x[0]) param_str = '&'.join([f"{k}={v}" for k, v in sorted_params]) # 使用 HMAC-SHA256 生成签名 sign = hmac.new(secret_key.encode(), param_str.encode(), hashlib.sha256).hexdigest() return sign ``` 4. **注意事项** - **法律与道德**:逆向分析可能涉及法律风险,尤其是在未经授权的情况下分析他人开发的应用或网站。确保在合法范围内进行相关操作。 - **技术难度**:部分应用可能使用了代码混淆或加密技术,增加了逆向分析的难度。需要具备一定的逆向工程能力和工具支持。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值