某瓜视频文件解密

查看 80|回复 8
作者:xifangczy   
地址 aHR0cHM6Ly93d3cuaXhpZ3VhLmNvbS82NTY5MzgyOTk0ODkxNTA2MTc5
通过 猫抓扩展 得到多条资源


image.png (53.18 KB, 下载次数: 0)
下载附件
2024-7-1 06:35 上传

可以看到是 音频和视频分离的播放技术, 我们把音频和视频分别下载到本地。(由于是加密的 猫抓自带的 音频 视频合并功能无法正常使用)


image.png (361.81 KB, 下载次数: 0)
下载附件
2024-7-1 06:36 上传

下载的视频和音频都只有头1分钟正常 之后就是花屏或无声。显然是加密了。
首先分析视频文件看看有什么线索 通过 mp4info 查看文件信息 运行命令 mp4info video.mp4
[HTML] 纯文本查看 复制代码[ENCRYPTED]
      Coding:         enca
      Scheme Type:    cenc
      Scheme Version: 65536
      Scheme URI:
cenc加密 以及一条很重要的信息 Bento4 Video Handler 既然是bento4那当然就使用mp4decrypt来解密。但最重要的key还需要通过网站分析获取。
F12 - 网络
根据经验找到第一条视频资源,然后再紧接着往上寻找,通常能找到相关的文件。


1.png (81.58 KB, 下载次数: 0)
下载附件
2024-7-1 05:00 上传

找到 一个文件名是 play_licenses 的请求。
查看返回内容,是一个json格式
[JavaScript] 纯文本查看 复制代码{
    "play_licenses": {
        "v03043g10000cf4hgfrc77u8o5dlsusg": {
            "63c9183f6c39fc8c15b5e7b90003043b": "TvGJP7QI6Ay67ZVcmHPhxmxafnkH05GvYmKsKQDpdmdCuMAPHRonDko="
        }
    },
    "base_resp": {
        "code": 0,
        "message": "success"
    }
}
按照经验应该查看这条的调用堆栈 一个个查看。网站用的第三方库比较多,一个个查看很麻烦。
很明显 "TvGJP7QI6Ay67ZVcmHPhxmxafnkH05GvYmKsKQDpdmdCuMAPHRonDko=" 是一个base64 通过 atob还原后得到十六进制数据 直接拿去当key解密
[Bash shell] 纯文本查看 复制代码mp4decrypt --key 1:4ef1893fb408e80cbaed955c9873e1c66c5a7e7907d391af6262ac2900e9766742b8c00f1d1a270e4a video.mp4 newvideo.mp4
输出的视频 仍然花屏,看来没那么简单。
既然是base64 网站一定会把它进行还原 大概率会使用 atob 函数,那么我们就直接搜索atob关键词也有太多调用的地方,我们可以写个简单的油猴脚本去劫持atob函数。
[JavaScript] 纯文本查看 复制代码// ==UserScript==
// @name         test
// @namespace    https://94cat.com/
// @version      0.1
// @description  test2
// @AuThor       mz
// @match        https://www.ixigua.com/*
// @Icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @run-at       document-start
// @license      GPL v3
// @grant        none
// ==/UserScript==
(function () {
    'use strict';
    const _atob = window.atob;
    window.atob = function (base64) {
        if(base64 == "TvGJP7QI6Ay67ZVcmHPhxmxafnkH05GvYmKsKQDpdmdCuMAPHRonDko="){
            debugger
        }
        return _atob(base64);
    }})();
打开F12 刷新网站 会断在你的油猴脚本 debugger 的位置。
接下来只需要F11 继续跟进,立马跳到网站的自己的脚本。


image.png (29.77 KB, 下载次数: 0)
下载附件
2024-7-1 05:38 上传

继续单步F11 分析 进入 Wc 函数


image.png (67.85 KB, 下载次数: 0)
下载附件
2024-7-1 05:39 上传

直接 到 return U.join("") 位置下断点,查看结果。
获得 31bf3bac917f4b25b46143896dbcefd6 32位的东西 大概率是key 再次尝试解密
[Bash shell] 纯文本查看 复制代码>mp4decrypt --key 1:31bf3bac917f4b25b46143896dbcefd6 video.mp4 newvideo.mp4
这次正常解密,视频能够正常播放完整。
接下来就简单了。可以不再使用Bento4工具包。直接使用ffmpeg一步到位。
[Bash shell] 纯文本查看 复制代码ffmpeg -decryption_key 31bf3bac917f4b25b46143896dbcefd6 -i video.mp4 -decryption_key 31bf3bac917f4b25b46143896dbcefd6 -i audio.mp4 decrypt_video.mp4
分别把 视频 和 音频 解密然后再合并。
本地没有ffmpeg也没关系 猫抓提供了在线ffmpeg https://ffmpeg.bmmmd.com/


image.png (91.44 KB, 下载次数: 0)
下载附件
2024-7-1 06:42 上传

最后运行命令 完成解密合并。
那么最后问题。如何让以后更方便的下载视频?
继续强大的油猴脚本解决,把网站Wc函数的完整复制到脚本里,缺什么函数就补上去,直到能正常解密为止。
写了个示例:
https://greasyfork.org/zh-CN/scripts/499324
视频正常播放后 点击获取密钥即可


image.png (14.07 KB, 下载次数: 0)
下载附件
2024-7-1 06:17 上传

下载次数, 视频

无相孤君   

厉害啊,原来这样子抓
anorith   

好技术,学习一下
china08   

其他网站能用吗
Psc7day   

感谢大佬分享
sgw1970   

这样太麻烦了,IDM可以下载正常的
xifangczy
OP
  


sgw1970 发表于 2024-7-1 21:02
这样太麻烦了,IDM可以下载正常的

你下载一个给我看看
fanglei09   

好东西,试试看看
acesec   

膜拜  学习
您需要登录后才可以回帖 登录 | 立即注册

返回顶部