通过 猫抓扩展 得到多条资源
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 上传