逆向优酷加密算法:mama2视频源地址嗅探工具中RC4+Base64+字符置换的完整拆解

📅 2026/8/25 17:33:49
逆向优酷加密算法:mama2视频源地址嗅探工具中RC4+Base64+字符置换的完整拆解
逆向优酷加密算法mama2视频源地址嗅探工具中RC4Base64字符置换的完整拆解【免费下载链接】mama2妈妈计划-众人拾柴火焰高项目地址: https://gitcode.com/gh_mirrors/ma/mama2mama2 是一款免费开源的视频源地址嗅探工具专门解决视频网站如优酷用 Flash 播放导致 MacBook 狂飙发热的老问题。它通过在页面中逆向优酷的加密算法把被 RC4 Base64 字符置换层层包裹的真实视频地址还原出来直接用 HTML5video播放 m3u8 / mp4 流。今天我们就以 src/seeker_youku.js 为样本一步步拆解这个经典的视频嗅探加密链路——不堆代码只看思路。为什么需要视频源地址嗅探老规矩的优酷播放流程网页 → Flash 播放器 → 向play.youku.com拉取一段加密的encrypt_string→ 在浏览器里解密出 sid/token → 拼出带鉴权参数的播放地址。mama2 做的事很直接截住这条链路里的加密数据在 JS 里复刻一遍解密拿到明文地址后交给video标签。核心入口逻辑在 src/index.js依次遍历 src/seekers.js 注册的所有 seeker 脚本谁的match()命中当前页面就由谁负责嗅探。 每个网站一个seeker_*.js这就是众人拾柴火焰高计划的设计解析规则随网站改版而变化社区可以按站贡献、按站维护。加密链路全景三步逆向优酷优酷的加密不是单一算法而是三件套串联步骤算法源码位置作用① 字符置换36 位置换表translate把伪装的密钥串还原成真实 RC4 密钥② Base64 解码自定义查表decode64把encrypt_string还原成二进制密文③ RC4 解密经典 RC4 流密码rc4用密钥解开密文得到sid_token三个算法都是公开的老算法真正的秘密藏在密钥本身和置换表里。下面逐层拆解。第一步字符置换——密钥是怎么藏起来的在文件头部定义了三个原料dic一个 0~35 的乱序数组即36 进制字符置换表mk两段密钥片段b4et与boa4userCache固定附加位4与1translate()做的事可以概括为一句话把每个字符先映射成 0~35 的编号再用dic反查它应该排第几位最后把编号转回 a-z / 0-9 字符。一次完整的密钥生成是这样拼出来的见 parseYoukuCode解密 sid 用b4et o0b 4→translate置换 → 8 字符 RC4 密钥加密 ep 用boa4 poz 1→translate置换 → 另一个 8 字符密钥 注意两个密钥并不相同一个用于开锁解密服务端下发的密文一个用于上锁生成请求参数里的ep校验值。这正是逆向时最容易被忽略的细节。第二步Base64 解码 RC4 解密拿到 sid 与 token拿到encrypt_string后第 29 行是整篇文章的题眼先decode64()把字符串解成二进制实现上就是标准 Base64用查表法逐字符还原见 decode64再用第一步得到的密钥跑rc4()流密码解密结果按下划线切分得到sid和token两个鉴权凭据encode64 是它的逆过程后面拼装ep参数时还要用一次。第三步用 ep 参数拼出 m3u8 播放地址sid/token 到手后mama2 会判断浏览器是否支持 m3u8检测逻辑见 src/canPlayM3U8.js支持构造 m3u8 播放地址核心参数epBase64(RC4(密钥2, sid _ videoId _ token))即第 ② 步的上锁密钥在这里登场type分hd2超清/mp4高清/flv标清三档不支持走PlayListData降级方案见下节最终回调把三档画质交给 src/player.js 的 MAMAPlayer 弹窗播放嗅探完成 ✅没有 m3u8 时的降级方案mp4 分段嗅探老浏览器播不了 m3u8 怎么办PlayListData 会遍历服务端返回的stream列表按语言国语/粤语…和清晰度flv、3gphd、mp4hd2…分组再用 getVideoSrc 逐段拼出k.youku.com/player/getFlvPath/...的分段 mp4 地址——同样附上ep、token、oip等鉴权参数。这条路径还藏着两个有意思的实现伪随机数代理RandomProxy用线性同余211*x 30031 mod 65536打乱字符表是当年客户端混淆的常见套路fileId 拼接把stream_fileid与分段序号的十六进制码拼在一起还原真正的文件标识关键源码文件速查表想继续深挖按这个清单读代码效率最高文件职责src/seeker_youku.js优酷嗅探核心置换表、Base64、RC4、m3u8 拼装src/seekers.js全部网站 seeker 的注册清单src/index.js主入口匹配 seeker、弹窗播放器调度src/seeker_example.js官方模板照着写就能接入新网站src/canPlayM3U8.js检测浏览器 m3u8 能力src/ajax.jsJSONP/Ajax 封装负责拉取get.json接口README.md本地环境搭建与众人拾柴火焰高贡献指南总结这套逆向思路还能用在哪回看整个链路置换表藏密钥 Base64 传密文 RC4 流式解密的组合在当年的网页播放器里非常典型算法本身全部公开安全性完全依赖密钥分发。mama2 的解法——在前端复刻一套对称解密——也正是所有视频源嗅探工具的通用范式抓包定位加密参数encrypt_string、ep从页面 JS 中反出密钥材料与置换规则用 HTML5 播放器接管播放优酷的规则早已多次改版本文更多是当作逆向加密算法的教学案例来读。如果你想为 mama2 新增或修复某个网站的嗅探规则README.md 里的举个例子一节就是最好的入门教程。【免费下载链接】mama2妈妈计划-众人拾柴火焰高项目地址: https://gitcode.com/gh_mirrors/ma/mama2创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考