吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7010|回复: 59
收起左侧

[Android 原创] 某某头条极速版之登录验证码下发短信分析

  [复制链接]
闷骚小贱男 发表于 2021-8-19 22:14
本帖最后由 闷骚小贱男 于 2021-8-26 10:36 编辑

发帖后的发现

经测试,该算法可以集合用在某节某动的所有APP中。[测试APP:某某头条极速版、某茄某听、某茄某某小说、某瓜视频(+86 1***2)]

前言

感觉有点莫名其妙,我这个各种语言小白,自从中石化小程序之后,就喜欢上了分析下发短信验证码的接口。。这不又来了...
今天的主角:某头条极速版。

工具

  1. fiddler(抓网络数据包用)
  2. jadx-gui(APP反编译用)
  3. 易语言/e4a(复现用)

0x1 抓包

直接手机设置代{过}{滤}理,打开APP,竟然能抓到数据包。
登录下发验证码的接口为passport/mobile/send_code/v1/
0.1 fd.jpg
直接搜手机号但是却没找到手机号的明文,mobile的值也是一串22位数的字符串,那么肯定是有函数处理过了。
【我看hearders里面有sign还有很多token等等,但是我试了一下去掉各种hearders,用fd测试了一遍竟然能下发成功.......这不是多此一举吗】

0x2 分析

搜mobile

拿出jadx-gui,拖进去,搜索"mobile",发现好多hashMap.put("mobile", StringUtils.a(xxx)),那么这个StringUtils.a疑似就是处理的函数,猜参数是手机号。
0.2 找到疑似加密的方法.jpg
跳到声明看看。

public static String a(String str) {
    PatchProxyResult proxy = PatchProxy.proxy(new Object[]{str}, null, null, true, 11971);
    if (proxy.isSupported) {
        return (String) proxy.result;
    }
    return com.bytedance.android.standard.tools.string.StringUtils.b(str);/* 这个函数 */
}

继续看xxxx.string.StringUtils.b

public static String b(String str) {
    PatchProxyResult proxy = PatchProxy.proxy(new Object[]{str}, null, null, true, 2195);
    if (proxy.isSupported) {
        return (String) proxy.result;
    }
    try {
        if (TextUtils.isEmpty(str)) {
            return null;
        }
        byte[] bytes = str.getBytes("UTF-8");
        for (int i = 0; i < bytes.length; i++) {
            bytes[i] = (byte) (bytes[i] ^ 5);/* 异或操作 */
        }
        return a.a(bytes, 0, bytes.length);/* 继续看这个a.a函数 */
    } catch (Exception unused) {
        return str;
    }
}

a.a函数

public static String a(byte[] bArr, int i, int i2) {
    PatchProxyResult proxy = PatchProxy.proxy(new Object[]{bArr, Integer.valueOf(i), Integer.valueOf(i2)}, null, null, true, 2161);
    if (proxy.isSupported) {
        return (String) proxy.result;
    }
    if (bArr == null) {
        throw new NullPointerException("bytes is null");
    } else if (i < 0 || i + i2 > bArr.length) {
        throw new IndexOutOfBoundsException();
    } else {
        int i3 = i2 << 1;/* 左移 */
        char[] cArr = new char[i3];
        int i4 = 0;
        for (int i5 = 0; i5 < i2; i5++) {
            int i6 = bArr[i5 + i] & 255;/* &与 */
            int i7 = i4 + 1;
            char[] cArr2 = a;/* 常量a */
            cArr[i4] = cArr2[i6 >> 4];/* >>右移 */
            i4 = i7 + 1;
            cArr[i7] = cArr2[i6 & 15];
        }
        return new String(cArr, 0, i3);
    }
}
private static char[] a = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};

0x3 算法复现

e4a复现,算法源码+成品下载

e4a复现就有点简单了,直接接口函数复制2个函数进去,调用即可。
0.3 e4.jpg

某头条极速版mobile算法复现下载,密码:52pjpj

易语言算法复现

由于小弟属于java小白,顺便也是易语言小白,一句一句的翻译,所以饶了很多弯路。
最后的结果和APP的算法结果竟然每一位都相差了1,所以我又用子字节集替换()把所有的全部替换了一次。
希望能有大佬指点一下java算法转易语言算法
0.4 e.jpg

完美的java转易语言

感谢@siniandd 的指点,完美的java转易语言

0x4 用E下发短信成功

0.5.jpg

免费评分

参与人数 14威望 +1 吾爱币 +34 热心值 +12 收起 理由
lsrteam70 + 1 + 1 谢谢@Thanks!
qtfreet00 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
xiaopang1233 + 1 + 1 我很赞同!
aabbcc123123 + 1 + 1 牛逼!
兜兜风f + 2 + 1 用心讨论,共获提升!
a3586597 + 1 谢谢@Thanks!
浩哥. + 1 + 1 我很赞同!
z13430334348 + 1 + 1 不明觉厉
wangyuan004 + 1 + 1 我很赞同!
meichangsu + 1 我很赞同!
IUUUUUU + 1 用心讨论,共获提升!
Phantaminuam. + 1 热心回复!
woyucheng + 1 + 1 谢谢@Thanks!
芽衣 + 3 + 1 前排座椅

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

siniandd 发表于 2021-8-20 02:10
额 大神牛逼
易语言不对的原因 是因为 易语言的数组是从1开始记位  而其他语音都是从0开始
所以所有数组操作位置都需要+1 才能正确
1111.jpg

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
闷骚小贱男 + 1 + 1 6666666,学到了。学到了。

查看全部评分

头像被屏蔽
jiansen1991 发表于 2021-8-19 22:24
awfymwvf 发表于 2021-8-20 15:10
这是不是就可以实现:注册时随意输入一个手机号,然后分析出验证码啊,这样就舒服了。
ping168 发表于 2021-8-20 16:25
awfymwvf 发表于 2021-8-20 15:10
这是不是就可以实现:注册时随意输入一个手机号,然后分析出验证码啊,这样就舒服了。

我也想能实现这样的效果
lyj996 发表于 2021-8-19 22:25
学习了,谢谢
09282037 发表于 2021-8-19 22:31
学习到了,非常支持
kobebryant 发表于 2021-8-19 22:52
强悍!!!!牛
糯米君 发表于 2021-8-19 23:09
感觉很厉害
头像被屏蔽
sanmaozen 发表于 2021-8-20 00:07
提示: 该帖被管理员或版主屏蔽
爱折腾 发表于 2021-8-20 01:41
学习了! 一起研究
爱折腾 发表于 2021-8-20 01:43
jiansen1991 发表于 2021-8-19 22:24
可否发下
谢谢楼主分享,因为最近再做抖音和头条想方便增加粉丝,买的手机号,一个一个接收验证 ...

你要什么?源码楼主留下了一个易语言的算法成品。
djhaixyc2019 发表于 2021-8-20 01:46
感觉很厉害
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-28 11:47

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表