[Android 原创][简单逆向]某直播APP 收费直播链接获取-AES解密

故事的由来

图片看到有人在推广所谓的"不花钱"APP(但是实际上并不是免费)

下载了试了试,如果都一个样的APP

不过这个APP稍微简单点。。几秒就定位到了

【健康生活,远离黄赌毒】

工具

1.jadx(或者MT/NP)

2.小黄鸟HttpCanary(因为FD没抓到请求,只抓到直播连接,但是小黄鸟全部抓到了,所以用小黄鸟)

步骤

列表抓包(getVideoList)

1.22抓包.jpg (51.85 KB, 下载次数: 2)

下载附件

2021-6-27 09:48 上传

在FD中抓到直播连接为HTTP://XX.XX.XXX/XXX.FLV?AUTH_KEY=XXX的格式

返回的参数有:title/liveimage/nplayFlv等

title

标题

liveimage

直播封面图片

nplayFlv

疑似Flv直播地址的AES密文

userid

播主id

liveFree

是否免费类型

hostName

播主名

反编译

jadx(MT/NP)搜索nplayFlv,得到

1.222jadx搜nplayflv.jpg (195.36 KB, 下载次数: 2)

下载附件

2021-6-27 10:50 上传

竟然直接找到了com.AA.BB.ui.activity.room.RoomMainActivity类

AESUtil.decrypt(this.recordsDTO.getNPlayFlv(), "qwertyui12345678");

看一下这个AESUtil.decrypt

public static String decrypt(String str, String str2) {

try {

byte[] decode = Base64.decode(str, 0);

SecretKeySpec secretKeySpec = new SecretKeySpec(str2.getBytes("UTF-8"), "AES");

Cipher instance = Cipher.getInstance("AES/ECB/PKCS5Padding");

instance.init(2, secretKeySpec);

byte[] doFinal = instance.doFinal(decode);

if (doFinal != null) {

return new String(doFinal, "UTF-8");

}

return null;

} catch (Exception e) {

e.printStackTrace();

return null;

}

}

所以可得加密模式为AES/ECB/PKCS5Padding,key为qwertyui12345678

加密模式

key

AES/ECB/PKCS5Padding

qwertyui12345678

然后复制一段nplayFlv尝试下解密

1.3解密.jpg (41.58 KB, 下载次数: 0)

下载附件

2021-6-27 10:48 上传

成功解密,说明之前的key是正确的

结案

AES/ECB/PKCS5Padding,key为qwertyui12345678

易语言拉取所有直播间信息

FLV直播,可在QQ影音中播放

包括收费直播间在内,均可抓到地址

1.44列表.jpg (82.24 KB, 下载次数: 0)

下载附件

2021-6-27 10:42 上传