CN117278803B - Drm视频解密方法、装置、设备及存储介质 - Google Patents
Drm视频解密方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN117278803B CN117278803B CN202311549610.2A CN202311549610A CN117278803B CN 117278803 B CN117278803 B CN 117278803B CN 202311549610 A CN202311549610 A CN 202311549610A CN 117278803 B CN117278803 B CN 117278803B
- Authority
- CN
- China
- Prior art keywords
- video
- drm
- decryption
- preset
- hijacking
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 164
- 230000006870 function Effects 0.000 claims description 70
- 238000009877 rendering Methods 0.000 claims description 15
- 238000006243 chemical reaction Methods 0.000 claims description 10
- 238000012795 verification Methods 0.000 claims description 5
- 208000024780 Urticaria Diseases 0.000 claims description 4
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 238000004590 computer program Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
- H04N21/4405—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video stream decryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/83—Generation or processing of protective or descriptive data associated with content; Content structuring
- H04N21/835—Generation of protective data, e.g. certificates
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明涉及计算机领域,公开了一种DRM视频解密方法、装置、设备及存储介质。该方法包括:根据视频解密请求,通过hook方法与DRM视频播放网站挂钩,获取DRM视频数据;控制视频浏览器调用预设劫持进程,劫持被劫持库文件中的目标函数、以及获取视频许可证书;启动预设借壳进程,获取视频许可证书及视频解密参数,预设借壳进程根据视频播放许可证书配置解密环境,并根据配置的解密环境、DRM视频数据以及视频密钥参数,初始化解码器;根据解码器,对DRM视频数据进行解密,并对解密后的DRM视频数据重新编码。在本发明实施例中,能不需要获取解密key,直接读取还原经过DRM加密的视频数据,以实现DRM视频数据的安全获取。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种DRM视频解密方法、装置、设备及存储介质。
背景技术
数字视频内容通常通过数字版权管理(DRM)技术进行保护,以防止未经授权的访问和复制。这些DRM系统通常在终端设备上运行,以解密和播放受保护的视频内容。然而,一些情况下,用户可能需要对视频内容进行合法的解密,以便进行备份、格式转换或其他合法用途。
在DRM视频传输时,黑客和逆向工程师可能会试图破解DRM系统,以获取解密密钥或绕过保护措施来得到DRM视频内容,因此,有必要提供一种安全且有效的方法获取数字视频内容。
发明内容
本发明的主要目的在于解决如何安全获取DRM视频数据的技术问题。
本发明第一方面提供了一种DRM视频解密方法,所述DRM视频解密方法包括:
接收视频解密请求,并根据所述视频解密请求,通过hook方法与DRM视频播放网站挂钩,获取DRM视频数据;
发送劫持进程调用指令给视频浏览器,所述劫持进程调用指令用于控制所述视频浏览器调用预设劫持进程,劫持被劫持库文件中的目标函数、以及获取视频许可证书,其中,所述目标函数用于获取视频解密参数;
启动预设借壳进程,获取所述视频许可证书及所述视频解密参数,所述预设借壳进程根据所述视频播放许可证书配置解密环境,并根据配置的解密环境、所述DRM视频数据以及所述视频密钥参数,初始化解码器;
根据所述解码器,对所述DRM视频数据进行解密,并对解密后的DRM视频数据重新编码。
可选的,在本发明第一方面的第一种实现方式中,所述启动预设借壳进程获取所述视频许可证书及所述视频解密参数之前,还包括:
创建CMD实例,并返回创建消息,所述创建消息包括创建成功消息和创建失败消息;
若所述创建消息是创建成功消息,则通过所述CMD实例接收所述视频解密参数;
若所述创建消息是创建失败消息,则获取接口版本号,并根据所述接口版本号,创建所述CMD实例的代理对象,通过所述代理对象接收所述视频解密参数。
可选的,在本发明第一方面的第二种实现方式中,所述视频浏览器调用预设劫持进程,劫持被劫持库文件中的目标函数、以及获取视频许可证书包括:
视频浏览器调用预设劫持进程,劫持被劫持库文件中的目标函数、并获取所述DRM视频播放网站的服务器证书及DRM视频标识;
启动预设借壳进程,所述预设劫持进程将所述服务器证书及所述DRM视频标识发送给所述预设借壳进程,所述预设借壳进程根据所述服务器证书及所述DRM视频标识,生成视频许可证书请求,并将所述视频许可证书请求发送给所述预设劫持进程;
所述预设劫持进程将所述视频许可证书请求,通过所述视频浏览器发送给所述DRM视频播放网站的服务器,所述服务器根据所述视频许可证书请求生成视频许可证书,并将所述视频许可证书通过所述视频浏览器发送给所述预设劫持进程;
所述预设劫持进程获取视频许可证书。
可选的,在本发明第一方面的第三种实现方式中,所述视频浏览器调用预设劫持进程,劫持被劫持库文件中的目标函数包括:
创建劫持库文件,将所述劫持库文件放在预设目录下,替换被劫持库文件;
创建调用函数,通过所述调用函数调用所述被劫持库文件中的目标函数;
通过所述目标函数,获取视频解密参数。
可选的,在本发明第一方面的第四种实现方式中,所述根据所述解码器,对所述DRM视频数据进行解密,并对解密后的DRM视频数据重新编码包括:
获取所述DRM视频数据对应的每帧视频数据,并将所述每帧视频数据封装;
通过所述解码器,获取封装后每帧视频数据对应的解密信息,其中,所述每帧视频数据中包括字节加密块和字节未加密块。
根据所述解密信息、所述字节加密块以及所述字节未加密块,对所述每帧视频数进行解密;
对解密后的每帧视频数据重新编码。
可选的,在本发明第一方面的第五种实现方式中,所述对解密后的每帧视频数据重新编码包括:
对解密后的每帧视频数据进行解码,得到解码后的视频帧;
对所述解码后的视频帧进行格式转换;
初始化编码器,将格式转换后的视频帧输入到所述编码器,得到编码后的视频帧。
可选的,在本发明第一方面的第六种实现方式中,所述通过hook方法与DRM视频播放网站挂钩,获取DRM视频数据包括:
创建渲染进程窗口;
所述渲染进程窗口通过hook方法及预设渲染进程,与DRM视频播放网站挂钩;
拦截所述DRM视频播放网站中的JSON数据,获取DRM视频数据。
本发明第二方面提供了一种DRM视频解密设备,包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;所述至少一个处理器调用所述存储器中的所述指令,以使得所述DRM视频解密设备执行上述的DRM视频解密方法。
本发明的第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的DRM视频解密方法。
在本发明实施例中,接收视频解密请求,并根据所述视频解密请求,通过hook方法与DRM视频播放网站挂钩,获取DRM视频数据;
发送劫持进程调用指令给视频浏览器,所述劫持进程调用指令用于控制所述视频浏览器调用预设劫持进程,劫持被劫持库文件中的目标函数、以及获取视频许可证书;启动预设借壳进程,获取所述视频许可证书及所述视频解密参数,所述预设借壳进程根据所述视频播放许可证书配置解密环境,并根据配置的解密环境、所述DRM视频数据以及所述视频密钥参数,初始化解码器;根据所述解码器,对所述DRM视频数据进行解密,并对解密后的DRM视频数据重新编码。本发明中,通过预设劫持进程,劫持被劫持库文件中的目标函数、以及获取视频许可证书,又通过预设借壳进程配置解密环境并初始化解码器,然后通过解码器,对DRM视频数据进行解密,能不需要获取解密key,直接读取还原经过DRM加密的视频数据,以实现DRM视频数据的安全获取。
附图说明
图1为本发明实施例中DRM视频解密方法的一个实施例示意图;
图2为本发明实施例中DRM视频解密装置的一个实施例示意图;
图3为本发明实施例中DRM视频解密设备的一个实施例示意图。
具体实施方式
本发明实施例提供了一种DRM视频解密方法、装置、设备及存储介质。
下面将参照附图更详细地描述本发明公开的实施例。虽然附图中显示了本发明公开的某些实施例,然而应当理解的是,本发明公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本发明公开的附图及实施例仅用于示例性作用,并非用于限制本发明公开的保护范围。
在本发明公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中DRM视频解密方法的一个实施例包括:
S100,接收视频解密请求,并根据视频解密请求,通过hook方法与DRM视频播放网站挂钩,获取DRM视频数据。
在本实施例中,首先配置桌面应用程序electron,以播放DRM视频,具体地,配置Git SSH密钥,安装所需版本的electron,在入口文件打开DRM视频播放网站的主窗口,在应用程序准备就绪后,它会创建窗口并加载DRM视频播放网站的URL,然后对视频播放项目进行打包,进行EVS签名,以确保它可以播放视频,其中,DRM视频播放网站可以是Netflix网站。在接收视频解密请求后,通过hook方法实现与DRM视频播放网站挂钩,以获取DRM视频数据。
S200,发送劫持进程调用指令给视频浏览器,劫持进程调用指令用于控制视频浏览器调用预设劫持进程,劫持被劫持库文件中的目标函数、以及获取视频许可证书。
在本实施例中,解密系统发送劫持进程调用指令给视频浏览器,视频浏览器调用预设劫持进程——keeper进程,劫持被劫持库文件widevinecdm.dll,使用GetProcAddress 函数获取 widevinecdm.dll 中的目标函数地址,包括 VerifyCdmHost_0、InitializeCdmModule_4、CreateCdmInstance、DeinitializeCdmModule 和GetCdmVersion它们分别保存在_VerifyCdmHost_0、_InitializeCdmModule_4、_CreateCdmInstance、_DeinitializeCdmModule 和 _GetCdmVersion目标函数中,这些目标函数用于初始化和操作CMD(Copy Data Management,复制数据管理),通过调用 _VerifyCdmHost_0 函数进行CMD主机的验证。然后,keeper进程将视频解密参数及视频许可证书发送给预设借壳进程——sheller进程。
S300,启动预设借壳进程,获取视频许可证书及视频解密参数,预设借壳进程根据视频播放许可证书配置解密环境,并根据配置的解密环境、DRM视频数据以及视频密钥参数,初始化解码器。
在本实施例中,启动sheller进程,keeper进程将DRM视频的唯一标识pssh和服务器证书cert发送给sheller进程,sheller进程接收到keeper进程发来的唯一标识pssh和服务器证书cert后,调用CreateCdmInstance函数创建MyContentDecryptionModuleProxy*对象,调用Initialize函数初始化对象,调用SetServerCertificate函数设置cert,调用CreateSessionAndGenerateRequest函数设置pssh,sheller进程在OnSessionMessage会话中将生成的视频许可证书请求liecenseRequest发送给keeper进程,等待keeper进程发送视频许可证书license过来,sheller进程拿到license后调用UpdateSession函数设置license,完成解密环境配置。
下载完DRM视频数据后,根据DRM视频数据,如视频的编码类型、质量、分辨率和加密协议,以及配置的解密环境和视频密钥参数,调用MyContentDecryptionModuleProxy::InitializeVideoDecoder函数正确初始化视频解码器的配置,以确保在进行解密之前,视频解码器已准备好接受和解码受保护的视频内容。成功初始化后,函数返回0表示成功。
S400,根据解码器,对DRM视频数据进行解密,并对解密后的DRM视频数据重新编码。
在本实施例中,根据解码器对DRM视频数据的每帧视频数据进行解密,然后解码每帧视频数据,由于解密组件的解密和解码是同时进行的,解码出来的数据太过庞大,所以将解密后的每帧视频数据重新编码,以减小数据。
在本发明第一方面一种可选的实施方式中,启动预设借壳进程获取视频许可证书及视频解密参数之前,还包括:
创建CMD实例,并返回创建消息,创建消息包括创建成功消息和创建失败消息;若创建消息是创建成功消息,则通过CMD实例接收视频解密参数;若创建消息是创建失败消息,则获取接口版本号,并根据接口版本号,创建CMD实例的代理对象,通过代理对象接收视频解密参数。
在本实施例中,通过CreateCdmInstance函数创建CMD实例,返回创建消息,若创建消息是创建成功消息,则通过CMD实例接收视频解密参数,其中,视频解密参数包括接口版本号(interface_version)、密钥系统信息(key_system)、密钥系统信息长度(key_system_len)等参数;若创建消息是创建失败消息,则将返回nullptr,否则,会检查接口版本号是否为10,如果是,则创建一个MyContentDecryptionModuleProxy对象作为CDM实例的代理对象,最后返回代理对象。
使用自定义的HostFunction传入_CreateCdmInstance,在HostFunction中,该函数用于创建CDMHost对象,其中包含对CDM的控制和管理。调用host_function函数,获取CDMHost的原始对象,接着,创建一个自定义cdmHost对象作为CDMHost的原始对象的代理对象,返回CDMHost对象。
在本发明第一方面一种可选的实施方式中,视频浏览器调用预设劫持进程,劫持被劫持库文件中的目标函数、以及获取视频许可证书包括:
视频浏览器调用预设劫持进程,劫持被劫持库文件中的目标函数、并获取DRM视频播放网站的服务器证书及DRM视频标识; 启动预设借壳进程,预设劫持进程将服务器证书及DRM视频标识发送给预设借壳进程,预设借壳进程根据服务器证书及DRM视频标识,生成视频许可证书请求,并将视频许可证书请求发送给预设劫持进程;预设劫持进程将视频许可证书请求,通过视频浏览器发送给DRM视频播放网站的服务器,服务器根据视频许可证书请求生成视频许可证书,并将视频许可证书通过视频浏览器发送给预设劫持进程;预设劫持进程获取视频许可证书。
在本实施例中,视频浏览器调用Keeper进程,Keeper进程通过SetServerCertificate函数将DRM视频播放网站的服务器证书server_certificate_data转换为Base64编码并保存起来;Keeper进程通过CreateSessionAndGenerateRequest函数将DRM视频的唯一标识init_data(通常为pssh数据)转换为Base64编码并保存。视频浏览器调用OnSessionMessage函数,Keeper进程将server_certificate_data和pssh数据发送给sheller进程,请求生成视频许可证书请求licenseRequest,sheller进程将licenseRequest发送给Keeper进程,Keeper进程将licenseRequest通过视频浏览器发送给DRM视频播放网站的服务器,服务器根据视频许可证书请求生成视频许可证书license,并将license发送给视频浏览器,视频浏览器调用UpdateSession函数并提供license时,Keeper进程将license转换为Base64编码并将其发送给sheller进程。
在本发明第一方面一种可选的实施方式中,视频浏览器调用预设劫持进程,劫持被劫持库文件中的目标函数包括:
创建劫持库文件,将劫持库文件放在预设目录下,替换被劫持库文件;创建调用函数,通过调用函数调用被劫持库文件中的目标函数;通过目标函数,获取视频解密参数。
在本实施例中,创建劫持库文件,将劫持库文件放在预设目录下,预设目录如<userData>\\WidevineCdm\\4.10.2557.0\\_platform_specific\\win_x86或<userData>\\WidevineCdm\\4.10.2557.0\\_platform_specific\\win_x86,替换被劫持库文件widevinecdm.dll。
创建VerifyCdmHost_0、InitializeCdmModule_4、CreateCdmInstance、DeinitializeCdmModule 和 GetCdmVersion 这些函数,并将它们导出,分别调用上述_VerifyCdmHost_0、_InitializeCdmModule_4、_DeinitializeCdmModule 和 _GetCdmVersion这些目标函数,得到视频解密参数。
在本发明第一方面一种可选的实施方式中,根据解码器,对DRM视频数据进行解密,并对解密后的DRM视频数据重新编码包括:
获取DRM视频数据对应的每帧视频数据,并将每帧视频数据封装;通过解码器,获取封装后每帧视频数据对应的解密信息,其中,每帧视频数据中包括字节加密块和字节未加密块。根据解密信息、字节加密块以及字节未加密块,对每帧视频数进行解密;对解密后的每帧视频数据重新编码。
在本实施例中,使用MyContentDecryptionModuleProxy::DecryptAndDecodeFrame(constInputBuffer_2* encrypted_buffer, VideoFrame*video_frame )函数进行解密与解码,该函数的InputBuffer_2 结构体将每帧视频数据封装起来,结构体中具体参数如下:
const uint8_t* data 和 uint32_t data_size:表示视频帧的输入数据,包括数据指针和数据大小,这是要解密和解码的视频帧的原始数据。
EncryptionScheme encryption_scheme:指示视频帧的加密协议,可以是kUnencrypted(无加密)、kCenc(AES-CTR 加密)或 kCbcs(AES-CBC 加密)。
const uint8_t* key_id 和 uint32_t key_id_size:用于标识解密密钥的 keyID 和其大小,这是用于解密受保护视频帧的密钥标识。
const uint8_t* iv 和 uint32_t iv_size:初始化向量(IV)以及其大小,IV 在某些加密模式下用于解密视频帧。
const struct SubsampleEntry* subsamples 和 uint32_t num_subsamples:用于指定视频帧中不同子样本的字节数和加密字节数,通常在样本级别进行加密,这些字段描述了每个子样本的加密和未加密部分。
Pattern pattern:这是一个结构,包含有关如何对待视频帧中的字节块的信息,包括加密块和跳过块。
int64_t timestamp:表示视频帧的显示时间戳,以微秒为单位,这有助于将视频帧按正确的顺序显示。
通过解码器,获取封装后每帧视频数据对应的解密信息,根据解密信息,对视频帧的字节加密块中的数据进行解密,视频帧的字节未加密块中的数据则跳过解密,然后对解密后的每帧视频数据重新编码。
在本发明第一方面一种可选的实施方式中,对解密后的每帧视频数据重新编码包括:
对解密后的每帧视频数据进行解码,得到解码后的视频帧;对解码后的视频帧进行格式转换;初始化编码器,将格式转换后的视频帧输入到编码器,得到编码后的视频帧。
在本实施例中,使用avformat_new_stream函数创建视频流,以传输视频数据,打开编码器并设置其参数,通过avcodec_find_encoder函数找到H.264编码器,然后为编码器分配和设置了一个ffmpeg编码结构体AVCodecContext,检查avcodec_find_encoder和avcodec_alloc_context3函数的返回值,以确保编码器被正确初始化。此外,还可以考虑设置其他编码器参数,如比特率(bitrate)和帧率(framerate),以满足需求。使用avformat_write_header函数将被劫持库文件头部信息写入输出文件,检查该函数的返回值,以确保文件头部正确写入。
从解码器接收解码后的视频帧(video_frame),然后将解码后的视频帧进行格式转换,这里实现了两种格式的转换,YUV420P和YUV420P10LE。通过bento4获取视频中的裸流编码是YUV420P10LE,然后将YUV420P10LE转换为YUV420P,因为H.264编码器只支持YUV420P。将转换后的视频帧送入编码器,编码后的视频帧数据存储在数据结构体AVPacket中。通过avcodec_receive_packet函数获取编码后的视频帧数据,并将其写入输出文件。最后,使用av_write_trailer函数将被劫持库文件尾部信息写入输出文件,并释放相关的上下文和内存。
在本发明第一方面一种可选的实施方式中,通过hook方法与DRM视频播放网站挂钩,获取DRM视频数据包括:
创建渲染进程窗口;渲染进程窗口通过hook方法及预设渲染进程,与DRM视频播放网站挂钩;拦截DRM视频播放网站中的JSON数据,获取DRM视频数据。
在本实施例中,创建一个新的渲染进程窗口并加载DRM视频播放网站。在渲染进程窗口的DOM(Document Object Model,文档对象模型)加载完毕后,将hook代码的内容读取并通过executeJavaScript函数注入到渲染进程中,从而实现对DRM视频播放网站的挂钩。在hook代码中重写 JSON.parse 和 JSON.stringify 函数 ,以拦截DRM视频播放网站中的JSON数据解析和序列化,其中包含视频url,将拦截到的JSON数据传送到主进程并进行整理获取视频url、音频url、字幕url。
参见图2,本发明第二方面提供了一种的DRM视频解密装置,所述的DRM视频解密装置包括:
数据获取模块100,用于接收视频解密请求,并根据视频解密请求,通过hook方法与DRM视频播放网站挂钩,获取DRM视频数据;
劫持模块200,用于发送劫持进程调用指令给视频浏览器,劫持进程调用指令用于控制视频浏览器调用预设劫持进程,劫持被劫持库文件中的目标函数、以及获取视频许可证书,其中,目标函数用于获取视频解密参数;
初始化模块300,用于启动预设借壳进程,获取视频许可证书及视频解密参数,预设借壳进程根据视频播放许可证书配置解密环境,并根据配置的解密环境、DRM视频数据以及视频密钥参数,初始化解码器;
编码模块400,用于根据解码器,对DRM视频数据进行解密,并对解密后的DRM视频数据重新编码。
在本发明第二方面一种可选的实施方式中,DRM视频解密装置还包括:
实例模块,用于创建CMD实例,并返回创建消息,创建消息包括创建成功消息和创建失败消息;若创建消息是创建成功消息,则通过CMD实例接收视频解密参数;若创建消息是创建失败消息,则获取接口版本号,并根据接口版本号,创建CMD实例的代理对象,通过代理对象接收视频解密参数。
在本发明第二方面一种可选的实施方式中,劫持模块200还用于视频浏览器调用预设劫持进程,劫持被劫持库文件中的目标函数、并获取DRM视频播放网站的服务器证书及DRM视频标识;启动预设借壳进程,预设劫持进程将服务器证书及DRM视频标识发送给预设借壳进程,预设借壳进程根据服务器证书及DRM视频标识,生成视频许可证书请求,并将视频许可证书请求发送给预设劫持进程;预设劫持进程将视频许可证书请求,通过视频浏览器发送给DRM视频播放网站的服务器,服务器根据视频许可证书请求生成视频许可证书,并将视频许可证书通过视频浏览器发送给预设劫持进程;预设劫持进程获取视频许可证书。
在本发明第二方面一种可选的实施方式中,劫持模块200还用于创建劫持库文件,将劫持库文件放在预设目录下,替换被劫持库文件;创建调用函数,通过调用函数调用被劫持库文件中的目标函数;通过目标函数,获取视频解密参数。
在本发明第二方面一种可选的实施方式中,编码模块400还用于获取DRM视频数据对应的每帧视频数据,并将每帧视频数据封装;通过解码器,获取封装后每帧视频数据对应的解密信息,其中,每帧视频数据中包括字节加密块和字节未加密块。根据解密信息、字节加密块以及字节未加密块,对每帧视频数进行解密;对解密后的每帧视频数据重新编码。
在本发明第二方面一种可选的实施方式中,编码模块400还用于对解密后的每帧视频数据进行解码,得到解码后的视频帧;对解码后的视频帧进行格式转换;初始化编码器,将格式转换后的视频帧输入到编码器,得到编码后的视频帧。
在本发明第二方面一种可选的实施方式中,数据获取模块100还用于创建渲染进程窗口;渲染进程窗口通过hook方法及预设渲染进程,与DRM视频播放网站挂钩;拦截DRM视频播放网站中的JSON数据,获取DRM视频数据。
图3是本发明实施例提供的一种DRM视频解密设备的结构示意图,该DRM视频解密设备500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)510(例如,一个或一个以上处理器)和存储器520,一个或一个以上存储应用程序533或数据532的存储介质530(例如一个或一个以上海量存储设备)。其中,存储器520和存储介质530可以是短暂存储或持久存储。存储在存储介质530的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对DRM视频解密设备500中的一系列指令操作。更进一步地,处理器510可以设置为与存储介质530通信,在DRM视频解密设备500上执行存储介质530中的一系列指令操作。
基于DRM视频解密设备500还可以包括一个或一个以上电源540,一个或一个以上有线或无线网络接口550,一个或一个以上输入输出接口560,和/或,一个或一个以上操作系统531,例如Windows Serve,Mac OS X,Unix,Linux,Free BSD等等。本领域技术人员可以理解,图3示出的DRM视频解密设备结构并不构成对基于DRM视频解密设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述DRM视频解密方法的步骤。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (10)
1.一种DRM视频解密方法,其特征在于,所述DRM视频解密方法包括:
接收视频解密请求,并根据所述视频解密请求,通过hook方法与DRM视频播放网站挂钩,获取DRM视频数据;
启动预设借壳进程,发送劫持进程调用指令给视频浏览器,所述劫持进程调用指令用于控制所述视频浏览器调用预设劫持进程,劫持被劫持库文件中的目标函数、以及获取视频许可证书,其中,所述目标函数用于获取视频解密参数;通过所述目标函数进行CMD主机的验证,所述预设劫持进程根据CMD主机的验证结果,发送所述视频许可证书及所述视频解密参数给预设借壳进程;
获取所述视频许可证书及所述视频解密参数,所述预设借壳进程根据所述视频许可证书配置解密环境,并根据配置的解密环境、所述DRM视频数据以及所述视频解密参数,初始化解码器;
根据所述解码器,对所述DRM视频数据进行解密,并对解密后的DRM视频数据重新编码。
2.根据权利要求1所述的DRM视频解密方法,其特征在于,所述获取所述视频许可证书及所述视频解密参数之前,还包括:
创建CMD实例,并返回创建消息,所述创建消息包括创建成功消息和创建失败消息;
若所述创建消息是创建成功消息,则通过所述CMD实例接收所述视频解密参数;
若所述创建消息是创建失败消息,则获取接口版本号,并根据所述接口版本号,创建所述CMD实例的代理对象,通过所述代理对象接收所述视频解密参数。
3.根据权利要求1所述的DRM视频解密方法,其特征在于,所述视频浏览器调用预设劫持进程,劫持被劫持库文件中的目标函数、以及获取视频许可证书包括:
视频浏览器调用预设劫持进程,劫持被劫持库文件中的目标函数、并获取所述DRM视频播放网站的服务器证书及DRM视频标识;
所述预设劫持进程将所述服务器证书及所述DRM视频标识发送给所述预设借壳进程,所述预设借壳进程根据所述服务器证书及所述DRM视频标识,生成视频许可证书请求,并将所述视频许可证书请求发送给所述预设劫持进程;
所述预设劫持进程将所述视频许可证书请求,通过所述视频浏览器发送给所述DRM视频播放网站的服务器,所述服务器根据所述视频许可证书请求生成视频许可证书,并将所述视频许可证书通过所述视频浏览器发送给所述预设劫持进程;
所述预设劫持进程获取视频许可证书。
4.根据权利要求3所述的DRM视频解密方法,其特征在于,所述视频浏览器调用预设劫持进程,劫持被劫持库文件中的目标函数包括:
创建劫持库文件,将所述劫持库文件放在预设目录下,替换被劫持库文件;
创建调用函数,通过所述调用函数调用所述被劫持库文件中的目标函数;
通过所述目标函数,获取视频解密参数。
5.根据权利要求1所述的DRM视频解密方法,其特征在于,所述根据所述解码器,对所述DRM视频数据进行解密,并对解密后的DRM视频数据重新编码包括:
获取所述DRM视频数据对应的每帧视频数据,并将所述每帧视频数据封装;
通过所述解码器,获取封装后每帧视频数据对应的解密信息,其中,所述每帧视频数据中包括字节加密块和字节未加密块;
根据所述解密信息、所述字节加密块以及所述字节未加密块,对所述每帧视频数据进行解密;
对解密后的每帧视频数据重新编码。
6.根据权利要求5所述的DRM视频解密方法,其特征在于,所述对解密后的每帧视频数据重新编码包括:
对解密后的每帧视频数据进行解码,得到解码后的视频帧;
对所述解码后的视频帧进行格式转换;
初始化编码器,将格式转换后的视频帧输入到所述编码器,得到编码后的视频帧。
7.根据权利要求1所述的DRM视频解密方法,其特征在于,所述通过hook方法与DRM视频播放网站挂钩,获取DRM视频数据包括:
创建渲染进程窗口;
所述渲染进程窗口通过hook方法及预设渲染进程,与DRM视频播放网站挂钩;
拦截所述DRM视频播放网站中的JSON数据,获取DRM视频数据。
8.一种DRM视频解密装置,其特征在于,所述DRM视频解密装置包括:
数据获取模块,用于接收视频解密请求,并根据所述视频解密请求,通过hook方法与DRM视频播放网站挂钩,获取DRM视频数据;
劫持模块,用于启动预设借壳进程,发送劫持进程调用指令给视频浏览器,所述劫持进程调用指令用于控制所述视频浏览器调用预设劫持进程,劫持被劫持库文件中的目标函数、以及获取视频许可证书,其中,所述目标函数用于获取视频解密参数;通过所述目标函数进行CMD主机的验证,所述预设劫持进程根据CMD主机的验证结果,发送所述视频许可证书及所述视频解密参数给预设借壳进程;
初始化模块,用于获取所述视频许可证书及所述视频解密参数,所述预设借壳进程根据所述视频许可证书配置解密环境,并根据配置的解密环境、所述DRM视频数据以及所述视频解密参数,初始化解码器;
编码模块,用于根据所述解码器,对所述DRM视频数据进行解密,并对解密后的DRM视频数据重新编码。
9.一种DRM视频解密设备,其特征在于,所述DRM视频解密设备包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;
所述至少一个处理器调用所述存储器中的所述指令,以使得所述DRM视频解密设备执行如权利要求1-7中任一项所述的DRM视频解密方法。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述的DRM视频解密方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311549610.2A CN117278803B (zh) | 2023-11-21 | 2023-11-21 | Drm视频解密方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311549610.2A CN117278803B (zh) | 2023-11-21 | 2023-11-21 | Drm视频解密方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117278803A CN117278803A (zh) | 2023-12-22 |
CN117278803B true CN117278803B (zh) | 2024-05-17 |
Family
ID=89201235
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311549610.2A Active CN117278803B (zh) | 2023-11-21 | 2023-11-21 | Drm视频解密方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117278803B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016086767A1 (zh) * | 2014-12-05 | 2016-06-09 | 北京奇虎科技有限公司 | 实现浏览器安全的方法、浏览器客户端和装置 |
CN106845160A (zh) * | 2015-12-03 | 2017-06-13 | 国家新闻出版广电总局广播科学研究院 | 一种用于智能操作系统的数字版权管理(drm)方法和系统 |
CN109885988A (zh) * | 2019-02-18 | 2019-06-14 | 四川迪佳通电子有限公司 | 基于可信执行环境的多媒体文件播放方法、多媒体设备 |
CN112818359A (zh) * | 2020-12-31 | 2021-05-18 | 北京深思数盾科技股份有限公司 | 一种文件保护方法及装置 |
CN113613044A (zh) * | 2021-07-20 | 2021-11-05 | 深圳Tcl新技术有限公司 | 视频播放方法、装置、存储介质及电子设备 |
CN113609412A (zh) * | 2021-06-28 | 2021-11-05 | 北京华云安信息技术有限公司 | 通过Hook关键函数和事件获取URL的方法 |
CN115600215A (zh) * | 2022-10-28 | 2023-01-13 | 中邮信息科技(北京)有限公司(Cn) | 系统启动方法、系统信息处理方法、装置、设备及其介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8307215B2 (en) * | 2008-01-23 | 2012-11-06 | Noam Camiel | System and method for an autonomous software protection device |
-
2023
- 2023-11-21 CN CN202311549610.2A patent/CN117278803B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016086767A1 (zh) * | 2014-12-05 | 2016-06-09 | 北京奇虎科技有限公司 | 实现浏览器安全的方法、浏览器客户端和装置 |
CN106845160A (zh) * | 2015-12-03 | 2017-06-13 | 国家新闻出版广电总局广播科学研究院 | 一种用于智能操作系统的数字版权管理(drm)方法和系统 |
CN109885988A (zh) * | 2019-02-18 | 2019-06-14 | 四川迪佳通电子有限公司 | 基于可信执行环境的多媒体文件播放方法、多媒体设备 |
CN112818359A (zh) * | 2020-12-31 | 2021-05-18 | 北京深思数盾科技股份有限公司 | 一种文件保护方法及装置 |
CN113609412A (zh) * | 2021-06-28 | 2021-11-05 | 北京华云安信息技术有限公司 | 通过Hook关键函数和事件获取URL的方法 |
CN113613044A (zh) * | 2021-07-20 | 2021-11-05 | 深圳Tcl新技术有限公司 | 视频播放方法、装置、存储介质及电子设备 |
CN115600215A (zh) * | 2022-10-28 | 2023-01-13 | 中邮信息科技(北京)有限公司(Cn) | 系统启动方法、系统信息处理方法、装置、设备及其介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117278803A (zh) | 2023-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3191994B1 (en) | Media decoding control with hardware-protected digital rights management | |
US9767317B1 (en) | System to provide cryptographic functions to a markup language application | |
JP4311899B2 (ja) | コンテンツの配信および保護を行なう方法および装置 | |
US8325916B2 (en) | Encryption scheme for streamed multimedia content protected by rights management system | |
KR101881303B1 (ko) | 애플리케이션 데이터 보호를 위한 휴대용 단말기의 장치 및 방법 | |
CN112822518A (zh) | 视频播放方法、装置、系统、电子设备和存储介质 | |
US9342666B2 (en) | Providing security support for digital rights management in different formats | |
EP3210332B1 (en) | Providing access to content | |
KR20110122669A (ko) | 파일 내의 복수의 콘텐츠 보호 시스템 | |
JP2000124894A (ja) | コンピュ―タ・システムにおけるコピ―ライト・デ―タの保護方法及び装置 | |
US9008305B2 (en) | Video data delivery protection | |
US20050154921A1 (en) | Method and apparatus for providing a security profile | |
US8166132B1 (en) | Systems and methods for client-side encoding of user-generated content | |
US20120226900A1 (en) | Enforcing software updates in an electronic device | |
US20160292398A1 (en) | ARRIS Secure Media DRM APIs in Hosted Architecture | |
US10846373B2 (en) | Method and system for securing a client's access to a DRM agent's services for a video player | |
US9118966B2 (en) | Enforcing software independent content protection in an electronic device during transcoding | |
US20170206364A1 (en) | Decrypting content protected with initialization vector manipulation | |
US20140337620A1 (en) | System and Method for Local Generation of Streaming Content with a Hint Track | |
CN117278803B (zh) | Drm视频解密方法、装置、设备及存储介质 | |
CN111182010B (zh) | 一种本地服务提供方法及装置 | |
KR100849639B1 (ko) | 동영상 파일의 암호화 및 복호화 방법과 그 방법을 구현한프로그램이 기록된 기록매체 | |
US8374338B2 (en) | Transport packet decryption testing in a client device | |
KR100885722B1 (ko) | 사용자 생성 컨텐츠 보호 시스템 및 그 방법 | |
WO2018072685A1 (zh) | 数据流的播放方法和装置,数据流类型信息的传输方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |