抖音APP登录接口分析
0x01、 目标需求:
.a) 分析抖音APP的接口参数以及相关的签名获取的方式
.b) 需要完成登录
0x02、分析背景:
.a) 抖音
.b) 软件无壳
.c) 软件通讯过程中部分接口采取了信息加密或压缩的方式,每个接口头部有签名大家所熟知的x-gorgon参数
0x03、分析流程:
.a) 通过数据包抓取或敏感函数hook方式获得接口功能
.b) 通过函数内部参数的组装继续分析参数的来源以及加密的流程
0x04、用户登录接口:
.a) 截图如下:
0x001. 抓包分析。
0x002. 登录成功返回数据。set-cookie中的值都需要保存,后续操作评论接口或者评论接口都需要提交这些cookie,来标识账号
0x003. 分析登录提交的行号密码加密过程
0x005. Java代码如下(其他语言代码自己翻译):
import org.apache.commons.codec.digest.DigestUtils;
import java.io.UnsupportedEncodingException;
public class DouYinLogin {
static final char[] HEX_CHARS = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
public static void main(String[] args) {
System.out.println(encryptWithXor("+86 17600658555"));
}
public static String encryptWithXor(String str) {
try {
byte[] bytes = str.getBytes("UTF-8");
for (int i = 0; i < bytes.length; i++) {
bytes[i] = (byte) (bytes[i] ^ 5);
}
return toHexString(bytes, 0, bytes.length);
} catch (Exception unused) {
return str;
}
}
public static String toHexString(byte[] bArr, int i, int i2) {
if (bArr == null) {
throw new NullPointerException("bytes is null");
} else if (i < 0 || i + i2 > bArr.length) {
throw new IndexOutOfBoundsException();
} else {
int i3 = i2 * 2;
char[] cArr = new char[i3];
int i4 = 0;
for (int i5 = 0; i5 < i2; i5++) {
byte b2 = (byte)(bArr[i5 + i] & 255);
int i6 = i4 + 1;
char[] cArr2 = HEX_CHARS;
cArr[i4] = cArr2[b2 >> 4];
i4 = i6 + 1;
cArr[i6] = cArr2[b2 & 15];
}
return new String(cArr, 0, i3);
}
}
}
以上加密过程代码复现完毕,可以通过协议批量登录了
0x006. 编写代码,实现登录.再而完成其他操作
未完待续...
友情提示:本文只为技术分享交流,请勿非法用途.产生一切法律问题与本人无关
在浏览的同时希望给予作者打赏,来支持作者的服务器维护费用.一分也是爱~
wm1234
来一个抖音Xlog分析呗 那个难度高一些
用户 Windows10 1260 天前回复
admin
@wm1234数据包可以分析,也不难,但是你要找规则,上传log日志也可以解出来。
作者 MacOS 1254 天前回复