某小视频sign破解

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

0x00 抓包

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

0x01 搜索

要想更快的分析出sign算法,灵活的搜索是必不可少的,直接打开jeb搜索字符串sign
某小视频sign破解_第2张图片
因为sign是字符串,所以在代码里可能会是map.put(“sign”,xxx),基本可以排除一大批不相关的结果,找到最可能的结果,双击点开,按q跳转到伪Java代码
某小视频sign破解_第3张图片
看代码证明我们的猜想是没问题的,sign=v_02,继续向前反查(crtl+左键)
某小视频sign破解_第4张图片
看到这里可以通过修改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
某小视频sign破解_第5张图片
挨个展开搜索结果,发现第二个结果里面有这样一句.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就完事。
本帖博主原创,转载请注明出处

你可能感兴趣的:(逆向)