吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 15123|回复: 119
上一主题 下一主题
收起左侧

[Android 原创] [白嫖大法]某影视邀请协议分析

  [复制链接]
跳转到指定楼层
楼主
正己 发表于 2021-6-3 21:54 回帖奖励
本帖最后由 正己 于 2021-6-7 18:49 编辑
1.小草影视1.6.1
2.HttpCanary
3.MT管理器
4.算法助手:https://bbs.pediy.com/thread-267985.htm

一、抓包和算法助手定位


1.黄鸟开启抓包,发现可疑封包,invited是受邀的意思,可见这条封包便是我们邀请的关键封包,其中我们需要关注的是sign的算法

POST /api/public/init HTTP/1.1
log-header: I am the log request header.
app_id: xiaocao
channel_code: xc_ds30
cur_time: 1622713837238
device_id: c253b61fae991642
mob_mfr: huawei
mobmodel: BRQ-AN00
package_name: com.xiaocao.p2p
sign: F90E98C3DD93D851D6FD4A002DD58A60
sys_platform: 2
sysrelease: 7.1.2
token: 
version: 16100
Content-Type: application/x-www-form-urlencoded
Content-Length: 11
Host: xcapp.cyb365.cn
Connection: Keep-Alive
Accept-Encoding: gzip
User-Agent: okhttp/3.10.0

invited_by=

2.复制sign中的值到算法助手中搜索,由此可知sign的值是由36Q7tBqO3YqrMHf3c253b61fae9916421622713837238进行md5加密得来的,在什么都不知道的情况下,盲猜1622713837238是时间戳

二、MT管理器分析与注入验证


1.直接搜数据啥也搜不到,所以我们根据算法助手的堆栈调用,定位到com.xiaocao.p2p.util.AppUtils.md5,由方法名我们可以知道,这个方法是进行了一次md5运算,因此要得到加密前的数值必须查看方法调用


2.调用处有三个,前两个很明显不是,我们直接看第三个(因为被数字加固了,所以我们简单修复一下代码),第三个有getDeviceId(获取设备id)、System.currentTimeMillis(获取时间戳)

public Response intercept(Interceptor.Chain chain) throws IOException {
        Request.Builder newBuilder = chain.request().newBuilder();
        String lowerCase = Build.MANUFACTURER.toLowerCase();
        String str = Build.MODEL;
        String str2 = Build.VERSION.RELEASE;
        String deviceId = AppUtils.getDeviceId(BaseApplication.getInstance());
        String appMetaData = AppUtils.getAppMetaData(BaseApplication.getInstance());
        String token = UserUtils.getToken();
        String upperCase = AppUtils.md5(AppUtils.normalSign(System.currentTimeMillis() + "")).toUpperCase();
        Response proceed = chain.proceed(newBuilder.build());
        f.d(proceed.code());
        return proceed;
    }
}

3.这个方法中我们来看看这一句代码,获取时间戳并传入normalSign这个方法中,然后再进行md5加密
String upperCase =AppUtils.md5(AppUtils.normalSign(System.currentTimeMillis() + "")).toUpperCase();

4.跟进一下normalSign方法,返回值是e.decode + 设备id + 时间戳(刚才传进来的),也验证了我们算法助手里找到的那个字符串36Q7tBqO3YqrMHf3c253b61fae99164216227138372381622713837238是时间戳,设备id:c253b61fae991642也就是我们的Android ID,也就是剩下一个36Q7tBqO3YqrMHf3目前还不知道是什么

public class AppUtils {
    public static String normalSign(String str) {
        return e.decode(ConstantUtils.a) + getDeviceId(BaseApplication.getInstance()) + str;
    }
}

5.再跟进decode方法,很明显这是一个DES算法,我们在算法助手中搜一下36Q7tBqO3YqrMHf3,没想到是这个居然不是加密结果,失算了

public class e {
    public static String decode(String str) {
        try {
            SecretKey generateSecret = SecretKeyFactory.getInstance(generateSecret(new DESedeKeySpec(getBytes()));
            Cipher instance = Cipher.getInstance();
            instance.init(2, generateSecret, new IvParameterSpec(getBytes()));
            return new String(instance.doFinal(Base64.decode(str, 2)));
        } catch (Exception e) {
            e.printStackTrace();
            return str;
        }
    }
}


6.这时我们不妨大胆猜测一下,这是一个固定的字符串。接下来我们用MT的注入来验证一下我们的猜测,注入方案如下:不会MT注入的可以看一下我之前的帖子,点击跳转

7.果不其然,这是一个固定的字符串,我又测试了不同的手机或者模拟器,都是这个,所以我们直接拿来用就可以了

三、协议编写


综上所述,我们知道了sign的值就是由36Q7tBqO3YqrMHf3 + 设备id + 时间戳,最后再md5加密。
那么设备id就可以由随机的16位字符串组成,时间戳直接调用就行。
协议代码如下:

# -*- coding: utf-8 -*-

# @Time : 2021-06-3 15:08

# @Author : 正己

# @FileName: 小草影视邀请协议.py

# @Software: PyCharm

import requests
import time
import random
import hashlib

def a():
    #获取时间戳
    t = str(int(round(time.time() * 1000)))
    print(t)
    # 随机生成16位数字
    id = "".join(random.choice("123456789abcdef") for i in range(16))
    #sign算法:固定字符串+16位随机数+时间戳再md5
    md = "36Q7tBqO3YqrMHf3" + id + t
    print(md)
    #md5加密,并且转换为大写字母
    m = hashlib.md5(md.encode(encoding='UTF-8')).hexdigest().upper()
    print(m)
    header = {
        'log-header': 'I am the log request header.',
        'app_id': 'xiaocao',
        'channel_code': 'xc_tg18',
        'cur_time': t,
        'device_id': id,
        'mob_mfr': 'xiaomi',
        'mobmodel': 'Redmi K40 Pro',
        'package_name': 'com.xiaocao.p2p',
        'sign': m,
        'sys_platform': '2',
        'sysrelease': '9',
        'token': '',
        'version': '16100',
        'Content-Type': 'application/x-www-form-urlencoded',
        'User-Agent': 'okhttp/3.10.0'
        }
    datas='invited_by=123456' #填入你的邀请码
    urls = 'https://xcapp.cyb365.cn/api/public/init'
    res = requests.post(url=urls,data=datas,headers=header)
    print(res) #返回200即邀请成功

if __name__ == '__main__':
    j=0
    for i in range(50):  #五十次即可永久去广告
        time.sleep(random.randint(1, 15))  # 设置随机延时
        a()
        print("已刷{}次".format(i))
        j+=1
        if j == 50:
            break

看一下效果:

四、尾声


虽然说这个协议能行,但是去的只是播放前的广告,还有一些轮播广告(还有点少儿不宜)。不过呢,建议你们慢慢刷,官方会封号的,且行且珍惜。至于其他广告其实也很好去,我这里就简单提一下,com.xiaocao.p2p.entity.AdInfoDetailEntry类中的getSdk_ad_id方法修改返回0即可。对了,这个方法是通用于小草六兄弟的,毕竟都是换壳app,但是完全不用去试,我发现六兄弟其实都可以一个账号去登陆的,而且效果都一样。


免费评分

参与人数 20吾爱币 +22 热心值 +19 收起 理由
osburt + 1 谢谢@Thanks!
BettyAnn + 1 + 1 谢谢@Thanks!
小十二 + 2 + 1 谢谢@Thanks!
tgwl123 + 1 + 1 我很赞同!
sunnylds7 + 1 + 1 热心回复!
senwar + 1 + 1 感谢大佬分享,转摘到www.gongwule.com了
智趣库 + 1 + 1 我很赞同!
抱薪风雪雾 + 1 + 1 谢谢@Thanks!
笙若 + 1 + 1 谢谢@Thanks!
lyslxx + 1 + 1 我很赞同!
zhangxu888 + 1 + 1 排版不错嘿!
小公主々 + 1 + 1 热心回复!
Byang6868 + 1 + 1 热心回复!
kxkxy5505 + 1 + 1 谢谢@Thanks!
woyunsile + 1 + 1 谢谢@Thanks!
52jcool + 1 + 1 我很赞同!
qianshang666 + 2 + 1 用心讨论,共获提升!
芽衣 + 2 已经推广了(并没有
lumiaz7 + 1 + 1 牛逼就是了
军哥i + 1 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

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

推荐
 楼主| 正己 发表于 2021-6-9 18:12 |楼主
qvbfncel 发表于 2021-6-9 16:40
卡在了协议编写,大佬这一步可不可以再详细点,小白

协议编写就是一段post请求,需要点python基础。看不懂就多看几遍,我前面的逻辑讲得很清楚的,哪里没懂你再说,至于你说的分身刷会不会封号我也不清楚,看官方了
推荐
qvbfncel 发表于 2021-6-9 18:46
正己 发表于 2021-6-9 18:12
协议编写就是一段post请求,需要点python基础。看不懂就多看几遍,我前面的逻辑讲得很清楚的,哪里没懂你 ...

前面的步骤都懂了,就是协议不懂,因为我Python都不知道是啥,哈哈哈,我还是第一次用mt,不过还是感谢大佬!
沙发
 楼主| 正己 发表于 2021-6-3 21:54 |楼主
3#
daxia2002 发表于 2021-6-3 22:01
大佬nb。。。。
4#
sam喵喵 发表于 2021-6-3 22:02
厉害,这技术羡慕
5#
dxaw2458 发表于 2021-6-3 22:04
小草要更新了 看样子
6#
王亦宸 发表于 2021-6-3 22:08
好兄弟来了 真不错666

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
正己 + 2 + 1 老实

查看全部评分

7#
Adufun 发表于 2021-6-3 22:11
还有自己抢沙发的?
8#
≯美心遥控门≮ 发表于 2021-6-3 22:13
感谢楼主分享,支持一下!
9#
klxn0-0 发表于 2021-6-3 22:25
正己大佬这个工具解密方便
10#
军哥i 发表于 2021-6-3 22:32
正义大佬,小弟前来膜拜

免费评分

参与人数 1热心值 +1 收起 理由
正己 + 1 军哥好

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-4-26 21:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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