首页 > 其他分享 >安卓秘钥的获取+解密流程

安卓秘钥的获取+解密流程

时间:2024-12-21 17:42:34浏览次数:5  
标签:安卓秘 license cdm 流程 解密 key device id

安卓秘钥的获取

注意:改文章原文链接:https://www.freebuf.com/articles/database/375523.html

抄一遍,脑瓜子有点记忆。

1、原理图

image

2、视频解密方法

根据上述原理,只要我们能拿到CDM、抓到license服务器请求url,即可构造解密请求报文,获得解密key。但CDM作为播放器的预置模块,没有任何下载渠道,且官方会实时监测滥用情况,CDM解密太频繁会被吊销,故互联网上没有现成的解密工具,也没有任何CDM供下载。所以我们需要自己提取CDM。

·注意上面的 License 服务器是在网页的。数据包中,比如我使用的Roku站点,

image

这里的URL 就是清单地址,licenseServer 就是license服务器。

1、提取CDM

首先去咸鱼买一个可以Root 的谷歌手机,Root后 dumper 来进行提取即可,

1、提取方法

  1. 安卓安装Frida 运行
  2. 电脑连接adb调试
  3. 电脑运行 dump_keys.py
  4. 手机浏览器随便播放一个Drm视频。例如:https://bitmovin.com/demos/drm

电脑的key_dumps文件夹里就有两个设备文件了。

注意:DRM视频需要播放成功,才能提取到CDM。若播放失败一般是由于网络问题,可能需要挂代理。如果沒抓到可以多换几个浏览器。

获取好了两个设备文件分别名称为: private_key.pem client_id.bin

前文提到过,

合成一个文章是由一个指令来完成的

pywidevine create-device -k device_private_key -c device_client_id_blob -t "ANDROID" -l 3

然后在下面圈起来的地方,放上即可,

image

也可以用如下的代码来生成

from pywidevine.device import Device
from pathlib import Path
# e.g., for an Android L3:
device = Device(
    type_=Device.Types.ANDROID,
    security_level=3,
    flags=None,
    private_key=Path(r"private_key.pem").read_bytes(),
    client_id=Path(r"client_id.bin").read_bytes()
)
# save it to a .wvd file for easier loading next time
device.dump(r"./device.wvd")

2、获取key

所需的材料:

  1. mpd 链接 就是上文提到的那个url
  2. PSSH 大部分MPD文件都包含PSSH ,少部分只包括了KID,需要用其他工具转换成PSSH,或者通过加密的mp4 来提取(这个通过mp4来获取,我师傅做的,我不会,我只会mpd提取)用python XML库就可以了。
  3. 获取license 服务器地址

然后将参数放入以下脚本即可获取到key

from pywidevine.cdm import Cdm
from pywidevine.device import Device
from pywidevine.pssh import PSSH

import requests
# prepare pssh
pssh = PSSH("AAAAW3Bzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADsIARIQ62dqu8s0Xpa7z2FmMPGj2hoNd2lkZXZpbmVfdGVzdCIQZmtqM2xqYVNkZmFsa3IzaioCSEQyAA==")
# load device
device = Device.load("./device.wvd")
# load cdm
cdm = Cdm.from_device(device)
# open cdm session
session_id = cdm.open()
# get license challenge
challenge = cdm.get_license_challenge(session_id, pssh)
# send license challenge (assuming a generic license server SDK with no API front)
proxies = {
  'http': 'http://127.0.0.1:1080',
  'https': 'http://127.0.0.1:1080',
}
licence = requests.post("https://cwip-shaka-proxy.appspot.com/no_auth", data=challenge,proxies=proxies)
licence.raise_for_status()
# parse license challenge
cdm.parse_license(session_id, licence.content)
# print keys
for key in cdm.get_keys(session_id):
    print(f"[{key.type}] {key.kid.hex}:{key.key.hex()}")
# close session, disposes of session data
cdm.close(session_id)

得到的key数量不固定,需要全部保存下来。

下载并解密视频。

这里使用到的工具是 N_m3u8DL-RE + shaka

将N_m3u8DL-RE和packager-linux-x64放在同一目录,运行以下命令即可下载+解密

./N_m3u8DL-RE -M format=mp4 "https://cdn.bitmovin.com/content/assets/art-of-motion_drm/mpds/11331.mpd" 
--key ccbf5fb4c2965be7aa130ffb3ba9fd73:9cc0c92044cb1d69433f5f5839a159df 
--key 9bf0e9cf0d7b55aeb4b289a63bab8610:90f52fd8ca48717b21d0c2fed7a12ae1 
--key eb676abbcb345e96bbcf616630f1a3da:100b6c20940f779a4589152b57d2dacb 
--key 0294b9599d755de2bbf0fdca3fa5eab7:3bda2f40344c7def614227b9c0f03e26 
--key 639da80cf23b55f3b8cab3f64cfa5df6:229f5f29b643e203004b30c4eaf348f4 
--use-shaka-packager --save-name day6.mp4 --live-real-time-merge -sv best -sa best

注意这里只是L3级的加密保护的解密相对于无保护的视频更安全,大大提高了解密门槛。但安全性不足,理论上都可以解密,流媒体内容

注意后面这个N_m3u8-RE 就需要自己实现一个 下载器了。我比较菜 写不出来。直接偷了我是师傅的代码。

标签:安卓秘,license,cdm,流程,解密,key,device,id
From: https://www.cnblogs.com/blogwr/p/18620993/get-the-android-key-zpfosf

相关文章

  • WideVineDRM视频解密
    WideVineDRM视频解密本文的目的只是为了能够简单的了解一下WideVineDRM1、认识流媒体流媒体(StreamingMedia)是一种通过网络实时传输数据的技术,使用户能够在不必先下载完整文件的情况下,边接收数据边播放音频、视频或其他多媒体内容。换句话说,流媒体技术可以让我们直接观看或收听......
  • 传输层安全协议TLS 超全解析!(含record、handshake握手全流程、Alert、ApplicationData)
    TLS协议概述SSL即安全套接字层,它位于OSI网络模型中的传输层,SSL在1999年更名为TLS,即传输安全层,直到现在,TLS一共出现过三个版本,1.1、1.2和1.3,目前最广泛使用的是1.2,所以接下来的探讨都是基于TLS1.2的版本上的。设计目标保密性通过加密算法保护数据内容,......
  • 鸿蒙HarmonyOS应用开发 | HarmonyOS Next-从应用开发到上架全流程解析
    HarmonyOSNext-从应用开发到上架全流程解析随着智能设备的不断普及,操作系统的竞争变得愈加激烈。在这个背景下,华为推出的HarmonyOS(鸿蒙操作系统)逐渐崭露头角,成为一个引人注目的新兴平台。本文将深入探讨HarmonyOSNext的应用开发流程,并特别关注鸿蒙应用上架的全过程,同时介绍鸿蒙......
  • 【深度学习-环境篇】安装pytorch的全流程,跟着做就没问题
    文章目录打开任务管理器,看一下自己显卡的型号再到维基百科上查一下自己显卡的算力根据算力找到支持的cudaruntime版本看自己的cudadriver版本最终确定我们适用的cudaruntimeversion去pytorch官网找对应的版本进行安装在安装之前,我们先做一个别的事安装py......
  • 1535、基于51单片机的交通灯(独立按键,夜间,管制)(proteus仿真+程序+原理图+流程图+元器件
    毕设帮助、开题指导、技术解答(有偿)见文未 目录方案选择单片机的选择一、设计功能二、proteus仿真图三、原理图四、程序源码资料包括:方案选择单片机的选择方案一:STM32系列单片机控制,该型号单片机为LQFP44封装,内部资源足够用于本次设计。STM32F103系列芯片......
  • 计算机工作流程
    分析下面的计算机工作流程:  1.取数a至ACC:PC程序寄存器自增1,变成0(可以理解为PC初始从-1开始自增);接着PC把当前指令的地址给到MAR(地址寄存器);MAR拿到当前地址后,就会根据地址去存储体中拿出指令并放到MDR(数据寄存器)中;同时CPU会把这个指令放到IR(指令寄存器)中,让IR暂时储存这个指......
  • AI毕设管家_在线自动生成数据库表结构ER图流程图功能模块图
    博主主页:猫头鹰源码博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万+、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作​主要内容:毕业设计(Javaweb项目|小程序|Python|HTML|数据可视化|SSM|SpringBoot|Vue|Jsp|PHP......
  • HDFS读流程和写流程
    一,读流程1)客户端向namenode请求下载⽂件,namenode通过查询元数据,找到⽂件块所在的datanode地址。2)挑选⼀台datanode(就近原则,然后随机)服务器,请求读取数据。3)datanode开始传输数据给客户端(从磁盘⾥⾯读取数据放⼊流,以packet为单位来做校验)。4)客户端以packet为单位接收,先......
  • 江苏省瞪羚企业申报条件、流程与注意事项
    江苏省瞪羚企业作为高成长性企业的代表,其申报工作对于推动地区经济创新发展具有重要意义。本文将详细解析江苏省瞪羚企业的申报条件、流程及注意事项,为企业提供全面的申报指导。我们将从企业的成长速度、创新能力、市场潜力等多个维度,阐述申报瞪羚企业所需满足的条件;同时,梳理......
  • 商城小程序开发有哪些流程?传统商家如何抓住小程序的流量!
    在移动互联网的浪潮下,小程序作为一种新兴的商业工具,逐渐成为商家拓展线上市场的必备选择。商城小程序的开发不仅仅是搭建一个在线商城那么简单,它需要商家在技术、用户体验、运营策略等方面进行多维度的考量。而对于传统商家来说,如何借助小程序抓住流量,更是一个亟待解决的课......