李恒道 发表于 2024-6-23 06:10:20

onlyfans的OB解密及DRM过校验思路(三)

# 警告
从这里开始逐渐超脱我的个人知识范畴,可能从任意节点出错!
不放心可以过阵子再看

# 解密
之前已经确定了是wvd l3
我们需要获取解密mp4的密钥
需要ppsh和License URL
找到的wvd代码来自https://forum.videohelp.com/threads/414040-Need-some-help-to-download-drm-protected-video-from-this-free-service
这里我截取片段
```go
WVD_FILE = "device_wvd_file.wvd"

PLAYER_URL = 'https://aloula.faulio.com/api/v1/video/{video_id}/player'
ORIGIN = "https://www.aloula.sa"


def get_keys(pssh_value, license_url):
    if pssh_value is None:
        return []
    try:
        device = Device.load(WVD_FILE)
    except:
        return []

    pssh_value = PSSH(pssh_value)
    cdm = Cdm.from_device(device)
    cdm_session_id = cdm.open()

    challenge = cdm.get_license_challenge(cdm_session_id, pssh_value)
    licence = requests.post(
        license_url, data=challenge,
        headers={"Origin": ORIGIN}
    )
    licence.raise_for_status()
    cdm.parse_license(cdm_session_id, licence.content)

    keys = []
    for key in cdm.get_keys(cdm_session_id):
        if "CONTENT" in key.type:
            keys += 
    cdm.close(cdm_session_id)
    return keys
```
ppsh和licence属于网站提取的内容,那wvd是什么?
Create a Widevine Device (.wvd) file from an RSA Private Key (PEM or DER) and Client ID Blob.
wvd是Widevine Device ,是根据一个RSA私钥和Client IDBlob生成的
其提取的方法我在
https://forum.videohelp.com/threads/404994-Decryption-and-the-Temple-of-Doom
找到了,当然也可以使用现有的,但是本着苏格拉底式学习的思想,决定尝试手动提取WVD
另外也找到了一个疑似可以在线处理的网站
https://cdrm-project.com/
同时这个网站也提供了大量的WVD DRM分析的文章和工具
https://cdm-project.com/

# 提取WVD
注意!!!根据测试模拟器没有WVD,不要尝试在模拟器搞
首先需要root和安装magisk
然后在magisk的设置的超级用户访问选择用户和ADB,重启
!(data/attachment/forum/202406/23/054559a82viyiyopqsqgwo.png)
!(data/attachment/forum/202406/23/054551bgnjhtin9jgzt43i.png)
然后安装MagiskFrida
https://github.com/ViRb3/magisk-frida/releases
下载出来在magisk导入模块
最好也装上L1回退模块
https://github.com/hzy132/liboemcryptodisabler/releases/tag/v1.5.1
全部搞定之后安装adb,为了图方便可以直接把adb的目录塞到path里
这样就有adb命令了
输入adb查看有没有手机
确定有之后拉取https://github.com/hyugogirubato/KeyDive的代码
输入`pip install -r requirements.txt`安装依赖
因为adb devices找到了
```
List of devices attached
emulator-5554   device
```
输入`python keydive.py -a -d ‘emulator-5554’ -w`即可导出

就是这样,你现在应该有一个以 ClientId 和 Private_key.pem 形式存在的 CDM,它们藏在 Keydive 文件夹根目录中的设备中(因为我本机没root,模拟器又复现失败了...所以这步要靠自己了,不过应该大差不差,因为我AVD提取成功了~)
# 待续
loading...


页: [1]
查看完整版本: onlyfans的OB解密及DRM过校验思路(三)