tiktok最新参数X-Dynosaur分析

发布时间:2026/8/9 9:11:52
tiktok最新参数X-Dynosaur分析 最近看美女主页的时候发现突然多了个参数X-Dynosaur后面测试了下目前还没有检测但是可以提前分析看看难度具体加密感觉跟xg差不多大部分是ai分析的简单来给大家分享一下。目标网址 aHR0cHM6Ly93d3cudGlrdG9rLmNvbS9AYW5uaWlld29yYnkKX-Dynosaur 是怎么从日志里拆出来的X-Dynosaur 最开始看就是一串很长的字符直接盯着成品看基本没什么用。我当时主要看了三样东西请求从哪发、生成前后的长度还有每次只改一个输入后哪几段数据跟着变化。这篇就简单记一下当时的排查过程细节不全部展开。先把请求停住页面打开后进开发者工具在 Network 里过滤item_list作品列表走的是GET /api/post/item_list/找到请求后先看 Initiator再到 Sources 里加一个 XHR/fetch breakpoint关键字填item_list。刷新或者重新触发作品列表请求发出前就会停下来。这里不用一直跟到网络层。顺着调用栈往上找看到 query 开始追加X-Dynosaur的位置就差不多了。再往前退一层把输入长度、中间 Buffer 长度和最终结果长度记到 Console。第一轮日志大概是这样这次请求的 base query 有 41 个参数拼起来 1447 个字符UA 是 117 个字符GET 请求的 body 为空。日志里先把三块输入各自的 4-byte 结果记下来后面做对照时就不用一直看整条 query。再往下是字段区、加密层和外层封装。这里的rounds13、insert_at43只是这一次运行的值换一组 key 会变243、48、292 和 392 这些长度相对稳定。接下来把 243 bytes 从头扫一遍。日志里多留了几列idx 当前第几段 tag 这一段的编号 off 在 243-byte Buffer 里的起点 header 开头三个字节 value bytes 后面的实际数据 next 下一段起点开头几段是这种走法offset 0 : 20 00 06 ... offset 9 : 21 00 06 ... offset 18 : 22 00 06 ... offset 27 : 23 00 06 ...*拿第一行看会直观一点。off0header 是20 00 06后面跟 6 bytes 内容所以这一段结束后落在 offset 9。第二行正好从 9 开始header 变成21 00 06再往后走到 18。照这个方式一直往后走中间也能看到0x27这种 12-byte 内容以及0x2b、0x2e、0x30这种 4-byte 内容。最后一行是tag0x38、off236、len4加上三个 header 字节以后next 正好是 243。这张表的 idx 从 00 到 24刚好 25 行最后的 cursor 和 Buffer 长度也都是 243。每一段都是编号、保留字节、长度、内容这个排法后面就按 TLV 往下分析了。再做几组单变量对照字段边界有了以后剩下的就是改一个输入、跑一次再比较日志。我当时先留了一组基准请求然后分别动了cursor、User-Agent 和时间基准请求里0x2e的 4 bytes 是eb43ced1。只把cursor从 0 换成 20它变成0876cee7其他输入相关字段保持原来的位置。0x20也会跟着动后面几组都是这个情况所以把它单独归到了整组字段校验。UA 从 Chrome 149 换到 1500x30从219130bb变成3b7395cd。body 一直为空0x2b则保持811c9dc4。看到811c9dc4后我又单独跑了一轮 hash 对照。只保留异或和乘法时query 算出来是9c916351和日志里的eb43ced1对不上循环里增加一次累加后query 和 UA 两组都能对上空 body 也刚好停在初始值。增强 FNV 这个判断主要来自这几组对照不是只看空字符串那一个值。同样的请求隔一秒再跑0x27会动外层结果也会变连续请求时还能看到计数相关的小字段在变化。这样时间、query、UA、body 这几类输入就能慢慢分开。最外面那层字段区是 243 bytes加密后长度还是 243。日志里还能看到 48 bytes 的 key 和 1 byte 的开头标记合起来是 292 bytes。这次日志里的插入位置是 43所以数据排法是开头放4b接 43 bytes cipher再放 48-byte key最后接剩下的 cipher。换一组 key 后位置会动但总长度还是 292。292 bytes 进入最后的自定义字符表编码后日志显示输出 392 个字符。这样也能解释为什么同一条请求重复生成时内容会变长度却经常一样。整理下来大概就是这几层query / UA / body ↓ 25 段字段数据243 bytes ↓ 加密、插入 48-byte key ↓ 292 bytes 外层数据 ↓ 自定义编码392 chars这次先写到字段边界和日志对照具体每个 tag 的编码细节就不往下铺了。