executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
re-drmDRM 分析:PlayReady/Widevine 实现、许可证流程、解密器还原。 触发词:DRM、PlayReady、Widevine、许可证、内容保护
Independent GitHub snapshot · Automated classification · Original documentation governs
静态分析(CDM 反编译 / 抓包分析)免沙箱;运行 CDM 与抓许可证流量属动态执行,在受控环境([[re-analyze/platform-tips]] 最高原则)内进行。所有工具先验证再使用。
Initialize/CreateSession 类导出~/.config/google-chrome/WidevineCdm/(Linux)/ %LOCALAPPDATA%\Google\Chrome\User Data\WidevineCdm(Windows)/ ~/Library/...(macOS);Edge 的 PlayReady 同理tshark --version;mitmdump --versionpip install protobuf(或 grpcio-tools);验证: python3 -c "import google.protobuf; print(google.protobuf.__version__)"pip install pywidevine(只用于自有设备授权研究)python3 -c "import pywidevine; print(pywidevine.__version__)"按顺序执行,每步产物(组件清单、许可证流程笔记、CDM 结构笔记)记录证据路径 + sha256(见 [[re-triage]]),供报告引用。所有步骤在授权范围与受控环境内进行(授权边界见「何时使用」)。
DRM 组件识别(CDM / 解密器):
requestMediaKeySystemAccess("com.widevine.alpha") / "com.microsoft.playready")→ 定位 DRM 类型与 CDM 路径libwidevinecdm.so(Chrome 内置;后缀标注的是架构——-arm/-arm64/-x86/-x64 为 CPU 架构而非安全等级,L1/L3 取决于设备 TEE 信任根,无 TEE 的 ARM 设备同样跑 L3 软件实现,见坑 1);PlayReady 组件在 Edge/Windows 系统组件;FairPlay 在 Apple 侧([[re-ios]] 域)Initialize、CreateSession(CreateSessionAndGenerateRequest)、UpdateSession(处理许可证响应)、CloseSession、RemoveSession、Decrypt、SetServerCertificate——导出表见 [[layout]]CENC/PSSH 识别(媒体侧):
# 在 MP4/CMAF 里找 pssh box(可脚本遍历 ISO BMFF box 链)
grep -oba 'pssh' sample.mp4 | head
size(4) + 'pssh'(4) + version/flags(4) + SystemID(16) + [v1 才有 KID 数+KIDs] + DataSize(4) + Data(字段表见 [[layout]])edef8ba9-79d6-4ace-a3c8-27dcd51d21ed;PlayReady 9a04f079-9840-4286-ab92-e65be0885f95;FairPlay 94ce86fb-07ff-4f43-adb8-93d2fa968ca2ContentProtection schemeIdUri="urn:uuid:EDEF8BA9-..." + base64 <cenc:pssh>;加密方案字段(cenc/cbc1/cbcs)决定后续解密分析走向许可证流程还原(挑战 / 响应):
# 受控环境内播放一段自有内容,mitmproxy/tshark 捕获许可证请求
tshark -r license.pcap -Y 'http.request' -T fields -e http.host -e http.request.uri | head
# 典型流程:初始化 → license challenge(POST,含设备指纹/证书)→ license response(含密钥材料)
AcquireLicense,命名空间 http://schemas.microsoft.com/DRM/2007/03/protocols);内容元数据里通常带 license URL(PSSH box / manifest 字段)解密器实现分析(密钥管理):
Initialize、CreateSession、UpdateSession(处理许可证响应)、Decrypt)→ 找密钥存储与解密路径漏洞 / 弱点定位(授权研究):
报告(合规):
libwidevinecdm.so 的后缀标注的是架构(-arm/-arm64/-x86/-x64)而非安全等级——L1/L3 取决于设备 TEE 信任根(带 TEE 的 ARM 设备才是 L1,无 TEE 的 ARM 设备同样跑 L3,x86 平台一般只有 L3);PlayReady 同样分硬件信任根与软件实现;对策——先确认目标安全级别(设备能力/厂商文档),L3 才能做软件层密钥提取分析,L1 分析走 TEE/信任根方向(硬件安全);结论严格标注级别,不跨级别套用