首页
社区
课程
招聘
[原创] TikTok Web端协议算法分析
发表于: 2天前 252

[原创] TikTok Web端协议算法分析

2天前
252

TikTok Web端协议算法分析

前言

文章仅供学习参考,请勿用于违法乱纪。接下来我们一起看看TikTok的web签名算法,X-Bogus & X-Gnarly。

网址:749K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2@1K9h3E0@1L8$3E0Q4x3X3g2U0L8$3#2Q4x3V1k6Q4y4o6m8E0j5h3E0W2j5h3W2Y4M7X3g2S2N6r3q4Y4j5h3W2F1y4o6M7`.

接口: /api/post/item_list/ (达人作品列表)

SDK文件路径:/obj/tiktok-web-tx/webmssdk/2.0.0.447/webmssdk.js

这个插桩点和数据加载流程和国内DY基本都是一样的。

X-Bogus

这个签名是老演员了,一开始就校验上了。该算法入参是:query, user_agent, body 区分GET/POST请求,如果在log里发现了'd41d8cd98f00b204e9800998ecf8427e' 这个就是空值的md5值,也就表示GET请求。首先分别进行算法签名2次得到字节数组,取其最后两位元素,后续持续拼接为一个21位的字节数组,最后魔改码表('Dkdpgh4ZKsQB80/Mfvw36XI1R25-WUAlEi7NLboqYTOPuzmFjJnryx9HVGcaStCe=')生成。其中,参与运算的还有canvas值,时间戳,密钥数组,rc4流加密等。

X-Gnarly

长度:268/ 300/ 324(最新)增加数据列表长度,即可增加X_Gnarly长度 暂时都可以使用。

X_Gnarly
MxESwhNLFU-YEm8UJQE9MFkqSv1tYBzQSumsUgvx2gkBDuyDoOtYgjfevQLRBYiqFDVA4JlRGUmgNb-taI6XlLBcPfok3XhdLeKr98A2N2gyRYbXaKtgZQ2QK4UHWPVnM312BChLi4o99N-aE5PEt4EIYVkiGCK2-GbOjzw0rWemJyuKFUev2e-hvqXXBp3jIzozFjMuiAkesNXWDB31mOPlIlcv1EsmT6qcZuvJVf/zKrdZXTbBddkZ3TxKhHs5JxwZrfIRjNdIKhy62e0Zom/UOrtMk-O4wfmgb-SS61-zj0e9pTwYeN7M4bXkNe1ECrA=

'5.1.3', '2.0.0.447'

通过解密算法解出明文参数:

// 列表长度 15
[
    0, // 固定
    65, // 变化
    14, // 变化
    "acb9ceabab0b8cfcf0f28be40ffeeae4", // query md5值
    "d41d8cd98f00b204e9800998ecf8427e", // body md5值 GET默认body = ''
    "f18b5213b6de2490ec9be218b0f025b0", // user-agent md5值
    1763107246, // 时间戳 动态因素
    2363850128, // canvas值
    1696407985, // 随机数 时间相关 测试发现 可以固定范围
    "5.1.3", // 算法版本 最开始是5.0
    "2.0.0.447", // webmssdk/2.0.0.447 js文件版本
    1, // 固定
  
  // 以下是新加的元素 没啥影响
    2, // 变化
    1, // 变化
    4312084 // 变化
]

可以看到其和X-Bogus,A-Bogus算法都没啥区别,相同的算法思路设计。

接着继续聊X-Gnarly算法,数组准备好了后会对整体数组进行xor计算,xor初始值默认值是0,后续根据数据类型进行不同处理。添加xor元素到数组里,接着对数组进行排序打乱,这里也有对应算法。最后根据不同的数据类型添加数组里不同元素的索引和值信息,多个分支不同处理流程。然后就是一个魔改的流加密算法了,需要清楚密钥是什么。该X-Gnarly对应的密钥如下,即可唯一确定目标参数。

[
    "0.16676794365048409",
    "0.09791544009931386",
    "0.7086712564341724",
    "0.06493830471299589",
    "0.6804928914643824",
    "0.671537404647097",
    "0.3154390335548669",
    "0.796996020944789",
    "0.987317256629467",
    "0.5382072266656905",
    "0.21200472488999367",
    "0.0768559209536761"
]

最后这里的处理和日志上报参数strData相得益彰,最终魔改码表('u09tbS3UvgDEe6r-ZVMXzLpsAohTn7mdINQlW412GqBjfYiyk8JORCF5/xKHwacP=')。

结语



[培训]科锐软件逆向54期预科班、正式班开始火爆招生报名啦!!!

最后于 2天前 被kanxue编辑 ,原因: 仅技术交流
收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 8
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
联系方式老板
5小时前
0
游客
登录 | 注册 方可回帖
返回