某小视频sign破解

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

0x00 抓包

抓包环境参考之前写的文章https://blog.csdn.net/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就完事。
本帖博主原创,转载请注明出处

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值