金盾视频加密器V2014视频加密原理分析

这两天出差,没有空学习。发现学到后面,视频居然加密了。

 

声明:
    本帖大部分都是参考“天易love”的,原创的地方不多,只是随着软件版本更新,在此记录一下算法变化而已,著作权仍属原作者,错误之处请大家批评指正。
    本作只研究加密算法,如果软件原作者看到,请增强软件安全意识及时更新算法。

 前段时间分析了一下,由于时间一长怕忘得一干二净,还是写下来给将来留下点回忆吧。由于是商业软件,其(基于新一代多媒体加密技术,安全性更高,通过国内某安全组织三防认证:防破解、防提取、防劫持)的特性让我很感兴趣。下面简单分析一下原理,其中涉及到的具体算法我就不再谈及了,希望大家理解。
    首先定义几个变量名,这样方便大家理解:
Key//视频加密密钥  本例是 654321
MachineCode
EncryptedMachineCode
MC_num1
MC_num2
MC_num3
PlayCode
PL_num1
PL_num2
PL_num3
Key_num1
Key_num2
Key_num3
SizeA 
SizeB
SizeC

DWORD_Of_Keyfile // v2010.9.KEY文件最后一个DWORD
SecretNum  //神秘数字
VideoSize
Encrypt();//具体算法略过
Decrypt();

    具体提取步骤:
1、由播放密码得到3个数字;
2、由机器码得到3个数字;
3、求出读key时文件定位需要的3个块大小;
4、求出原始视频文件的文件名、大小
5、定位读取A、B、C、D块,并写入生成的新视频文件(其中只有A块需要先进行解密操作,具体解密算法略过);
6、补充说明。


1、对播放密码的处理可以得到3个数字:
PlayCode: 9d679362a552b2708132966da155b27887319164a15ab522d4
Decrypt(PlayCode)=,e061101005956096320597ce
这中间隐含3组数字的字符串我们将其取出来:第一个数字的位数不定,这里第4个字符6表示是6位,第2、3两个数字都是5位,所以这3个十进制数字是:
PL_num1=110100
PL_num2=59560
PL_num3=96320

2、对机器码的处理也可以得到3个数字:
MachineCode: 14f479fefd-d8427de05b-4b29d5f6ef
Encrypt(MachineCode)= Encrypt(14f479fefd-d8427de05b-4b29d5f6ef)
=8036C560A35AE424D7668E30AC57B076D5679361F64EB623833BC761F255E727 
MD5(EncryptedMachineCode)=2E1B6488A8610627A3D5722EEAF78218
00000000   32 45 31 42 36 34 38 38  41 38 36 31 30 36 32 37   2E1B6488A8610627
00000010   41 33 44 35 37 32 32 45  45 41 46 37 38 32 31 38   A3D5722EEAF78218
取Md5值2E1B6488A8610627A3D5722EEAF78218前9个字符的16进制值32 45 31 42 36 34 38 38 41的低位字节转换得到字符串251264881。
这样我们可以得到3个十进制数(分成3段,中间的扩大10倍,两头的扩大100倍):
MC_num1=25100
MC_num2=2640
MC_num3=88100

3、由以上的6个数字,按照公式可以求出3个文件块大小,用十进制数表示:
SizeA= PL_num1- MC_num1= 110100-25100=85000
SizeB= PL_num2+ MC_num2=59560+2640=62200
SizeC= PL_num3- MC_num3=96320-88100=8220

        名称:  Exefile.JPG 查看次数: 1978 文件大小:  55.1 KB

4、求出SecretNum,并根据DWORD_Of_Keyfile运算得到原始视频文件的字节大小VideoSize
用winhex打开某视频加密器生成的v2010.9.exe,在尾部看到如图数据,红线划出的是加密信息的字节大小,复制出来用辅助工具解密得到:
.wmv`1d83b90b`01v2010.9.wmv``请在框中输入提示语,
您输入的提示语将在用户播放前显示给用户看见,
您可以在提示语中提醒客户如何获得播放密码,比如:
您可以留下QQ、MSN、邮箱、电话或者网址,
提醒通过这些方式与您联系获得播放密码``1`1`1`1`1`M.`1`1``1`50`50`1`180`3`1```0`LENOVO - 1160;Ver 1.00PARTTBL;;09/17/09;05/10/20091021PBN304QTK7ZPHR`89339565AD56B405F0419616D653B07489379060D057B070``88380619766F507E625893B`FD47ED1BC22CA26C91339262A458D424C322927AA453D200E356F716D858B971882D9263BB53BB7A81378C65A44CB071813B9264A652D203FF319360C537C976EB52EB06`853797
其中对提取视频数据有用的信息的是原视频文件名01v2010.9.wmv,前面的01可能是默认的文件编号加密时自动添加可以忽略,还有尾部的一个数字853797。将这个数字853797再用Decrypt()函数解密一次得到454。
SecretNum =454;
由v2010.9.KEY文件尾部读出一个双字0x5e2dd十进制就是385757
即DWORD_Of_Keyfile=385757;
所以VideoSize= DWORD_Of_Keyfile- SecretNum*100= 385757-454*100=340357字节
这样原始视频文件的文件名、大小分别是v2010.9.wmv和340357字节。

5、定位读取A、B、C、D块,并写入生成的新视频文件(其中只有A块需要先进行解密操作)
看图简单明了。

          名称:  pic.JPG 查看次数: 1980 文件大小:  27.0 KB
  
6、补充说明。
我的加密密钥是:key=654321
Encrypt(key)= Encrypt(654321)= 87379767A652
MD5(87379767A652)=850F2B82BD4209C6561A81281D83B90B
00000000   38 35 30 46 32 42 38 32  42 44 34 32 30 39 43 36   850F2B82BD4209C6
00000010   35 36 31 41 38 31 32 38  31 44 38 33 42 39 30 42   561A81281D83B90B
取Md5值850F2B82BD4209C6561A81281D83B90B前9个字符的16进制值38 35 30 46 32 42 38 32  42的低位字节转换得到字符串850622822
这样我们可以得到3个十进制数(分成3段,前2段扩大100倍,最后的扩大10倍):
Key_num1=85000
Key _num2=62200
Key _num3=8220
上面的计算结果:
SizeA= PL_num1- MC_num1= 110100-25100=85000
SizeB= PL_num2+ MC_num2=59560+2640=62200
SizeC= PL_num3- MC_num3=96320-88100=8220
显然可以得出如下结论:
Key_num1= SizeA
Key _num2= SizeB
Key _num3= SizeC

    这就是其中的奥秘!视频制作人的加密密钥其实就包含了3个块大小的信息,一旦加密视频制作完毕,它的4个块的大小也固定了,而你要观看,就必须对key文件进行重组,当然制作人不会告诉你密钥,他间接的给你播放密码,加密视频.exe文件就会根据播放密码和本机机器码计算出这几个块大小,从而自动提取视频数据进行播放。

     名称:  software.JPG 查看次数: 1976 文件大小:  44.8 KB

    由于是国产商业软件,就到此为止了,只是有点小问题(提取不是一定不可以)。毕竟通过了国内某安全组织的认证,我们还是要放心使用,我对这个安全组织有些好奇。感谢观看!明天是个好日子!所有的一切都是为了明天!

 

摘要:
    简单来说,2014版本比之2012版本的变化有以下几点:

  • 输入密码的框框变大了
  • 机器码由三段每段十个字符变为四段每段五个字符
  • 由定义了A,B,C三段大小变为只定义A,B两个段的大小,其余部分按半分,并且在程序最后的数据中存有C段大小,文件大小的记录方法没有改变
  • 由解压到硬盘播放变为解压到内存播放

正文:

首先定义几个变量名,方便大家理解:

本人不喜欢微软的缩写,很多都莫名其妙,因此向来使用完整名称

Key// 视频加密密钥  本例没有用到
Key_num1
Key_num2

MachineCode// 机器码
MachineCode_num1
MachineCode_num2

PlayCode// 播放密码
PlayCode_num1
PlayCode_num2

FileSize_Full// 文件完整大小
FileSize_A
FileSize_B
FileSize_C
FileSize_D

FileEndCode// exe视频文件尾部密文
DWORD_Of_FileEnd // exe视频文件除了密文之外最后一个DWORD
DWORD_Of_FileEndCodeEnd // 神秘数字

Encrypt()// 具体算法略过
Decrypt()// 具体算法略过


解密过程:
  1. 由播放密码得到2个数字;
  2. 由机器码得到2个数字;
  3. 相减得到FileSize_A,相加得到FileSize_B;
  4. 求出FileSize_Full,求出或读出FileSize_C,求出FileSize_D;
  5. 定位读取A、B、C、D块,读取并播放(其中只有A块需要先进行解密操作,具体解密算法略过);
  6. 附录。

1.由播放密码得到2个数字
PlayCode = f5309565ad54b405f0339667d622b57189359060ad54b476f0359361d153b07089339566d750b475f7369367d151e2798563c5
Decrypt(PlayCode) = D261976DA153BA7087349767A705E0218162C364F403E2`84af
Decrypt(前者) = cc49508166433fb`0``0```

第一部分是关键,分为五个数字:n1=cc, n2=4950, n3=8166, n4=4, n5=33fb
其中n1和n5是验证部分,分别为某一字符串的md5的第一个字节和第六到七个字节
n4是n2和n3的位数
最后:
PlayCode_num1 = n2 = 4950
PlayCode_num2 = n3 = 8166

2.由机器码得到2个数字
MachineCode = e2265-c6eb6-acadd-00000
Encrypt(MachineCode) = D4309162A14EE177D4609579F500E325D52F9364A453B2
md5(EncryptedMachineCode) = bfdefd03d98b4c5128058c545fe24243

取md5前6个字符bfdefd的16进制值的低位字节转换得到字符串264 564。
这样我们可以得到2个十进制数(前者扩大十倍,后者不变,并且若起始字符为0则替换成9):
MachineCode_num1 = 2640
MachineCode_num2 = 564

3.相减得到FileSize_A,相加得到FileSize_B
FileSize_A = PlayCode_num1 - MachineCode_num1 = 4950 - 2640 = 2310
FileSize_B = PlayCode_num2 - MachineCode_num2 = 8166 + 564 = 8730

FileSize_A *=  FileEndCode[66] = 2310 * 511 = 1180410
FileSize_B *=  FileEndCode[66] = 8730 * 511 = 4461030

4.求出FileSize_Full,求出或读出FileSize_C,求出FileSize_D
FileSize_Full = DWORD_Of_FileEnd - DWORD_Of_FileEndCodeEnd*100 = 03D6EDBF - 986*100 = 64417215 - 98600 = 64318615

FileSize_C = FileEndCode[57] = 29338588

或者FileSize_Full - FileSize_A  - FileSize_B = 64318615-1180410-4461030 = 58677175
除以2得29338588余29338587,即为FileSize_C和FileSize_D 

5.定位读取A、B、C、D块,读取并播放
其中只有A块需要先进行解密操作,具体解密算法略过

6.附录
这是exe视频文件末尾:
点击图片以查看大图  图片名称: QQ图片20130925152652.jpg 查看次数: 4 文件大小: 192.5 KB 文件 ID : 83191
连工具都山寨了一个:
点击图片以查看大图  图片名称: QQ图片20130925153041.jpg 查看次数: 39 文件大小: 150.1 KB 文件 ID : 83192
山寨的工具,做做样子而已:
名称:  QQ图片20130925162818.jpg 查看次数: 2 文件大小:  26.7 KB

补充几点
  • FileEndCode中有一个标志位,标记本文件是否用试用版生成,如果被程序检测到为1,则使用预置的段大小,A为9876,B为1234,再乘以FileEndCode[66],值得注意。
  • 程序关键过程使用了VMP加密,跟踪还原困难。突破口是,vm前后栈结构不变,库函数不变,可以在库函数入口下断,就知道程序要做什么。

未尽之事
  • 由加密密钥导出A、B段大小的算法,及公因数的选定
  • FileEndCode & key中各个量的含义


最后引用天易love的总结作为结束语,同时感谢天易love的原作:视频制作人的加密密钥其实就包含了2个块大小的信息,一旦加密视频制作完毕,它的4个块的大小也固定了,而你要观看,就必须对exe文件的附加数据进行重组,当然制作人不会告诉你密钥,他间接的给你播放密码,加密视频.exe文件就会根据播放密码和机器码计算出这4个块大小,从而提取视频数据进行播放。

转载于:https://www.cnblogs.com/develop/p/3388892.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于新一代多媒体加密技术,更高安全性、支持WIN8;支持各种视频的高速编码加密与高速解码播放;可以加密各种视频音频格式文件(wmv, avi, asf, mpg, rm, rmvb, mp4, flv, mp3, vob, mov, mkv, mpeg, dat等等其他各种音频视频格式,只要装上相关解码器可以支持所有视频格式),加密后的文件可以通过离线方式授权播放,也可以通过网络方式授权播放;只需要加密一次,就可以实现一机一码授权播放; V2014版重要更新: 1、支持Windows8 32位和64位操作系统; 2、新增绑定用户移动设备功能,比如U盘、移动硬盘、手机、SD存储卡等,远程自动绑定,用户播放时插入绑定的移动设备即可,用户换系统换硬件无需再授权,极大的方便了用户和商家,商家再也不用发愁用户总是更换系统、更换硬件了,直接将用户的移动设备当作硬件加密锁。 3、加密后的文件增加了绑定用户显卡功能,用户机器码格式变为: 系统BIOS-硬盘-显卡-网卡,多硬件识别可以让您辨识一些用户到底是更换了电脑还是更换了某个硬件,或者更换了系统; 4、增强了播放屏幕控制功能,比如控制全屏和禁止全屏; 5、增加了“试播”和“预览”功能,您可以设置加密后的文件用户可以免费试播几次或几天,也可以设置用户可以预览多少秒; 6、可以直接调用网页作为提示语(您可以随时向用户公布最新提示内容); 7、增加了是否提示剩余播放次数和日期的开关; 8、增加了是否关闭电脑复制功能的开关; 9、增加了大文件加载Loading 功能。 V2013版重要升级: 1、增加了超大视频支持模式,可以支持1G以上的视频高速稳定播放; 2、文件编号可以显示在加密后的文件中,方便商家区分不同文件类别; 3、修正了Win7下无法使用断网功能的Bug; 4、增加了试播文件制作功能,您可以为用户制作试播文件,并可以控制文件的播放次数和有效期,无需播放密码; 5、专业版增加了导出注册机功能,您可以在任何电脑为用户算播放密码; 6、授权召回功能,你可以随时令发放给用户的播放密码失效; 7、增加了黑名单机器码,在黑名单中的机器即使有播放密码也无法播放您的视频; 8、播放密码增加了控制文件编号的参数,让你更方便的管理用户能够播放哪些文件和不能播放哪些文件; 9、播放密码增加了导入导出注册文件功能,直接给用户发注册文件,防止用户复制播放密码时丢失字符; 10、增加了一码通功能,同台电脑只需认证一次,并且可以控制播放次数和有效期; 11、V2013版开始增加了加密狗版本,可以在任何电脑插狗使用。 本系统主要特色包括: 1、灵活的认证授权模式,比如:一机一码加密,一码通授权等;可以设置播放次数、播放时间和截止日期等; 2、可以设置播放时断开网络,禁止用户通过远程共享或者远程翻录; 3、可以设置播放时禁止开启其他窗口,以便学员可以专心学习; 4、您可以设置提示语,以便告知用户通过何种途径与您联系获得播放密码; 5、可以设置视频播放尺寸和拉伸效果; 6、智能防止屏幕翻录(说明:智能防屏录不会立即起作用,一般在视频播放3-10分钟左右发挥作用); 7、可以禁止在虚拟机中播放; 8、可以指定防翻录跟踪水印,水印可以是固定位置也可以随机浮动,用户无法覆盖水印; 9、增加了黑名单功能,可以设置视频播放过程中禁止用户开启指定的进程; 10、本系统也可以结合网络应用,通过网络向客户发放播放密码,结合会员验证等方式进行播放授权,无需人工参与; 如何选择适合您的视频加密解决方案: 1、金盾视频加密器 - 强调安全性,适合各种视频加密,安全性高,经测试最高支持到1.5G视频文件加密;安全性要求高的场合使用。 2、Video2exe V2010A型 - 强调安全性,适合各种视频加密,安全性高,生成单一exe格式;安全性要求高的场合使用。 3、Video2exe V2010B型 - 强调易用性,生成单一exe格式,自带解码器和播放器,易用性好,用户播放时不需要安装任何播放器或解码器,适合用户群电脑水平不是很高的用户; 4、飓风视频加密工具 - 强调易用性,自带解码器和播放器,支持超大视频文件打包加密,经测试最高支持到1.82G视频文件加密;很多灵活设置,易用性好,用户播放时不需要安装任何播放器或解码器,适合用户群电脑水平不是很高的用户; 5、视频加密网络版 - 加密后的视频可以结合您的网站,通过网络向用户发放播放授权; 6、视频加密加密狗认证方案 - 用户购买您的加密视频后,你只需提供他加密后的视频文件和一个加密狗即可,用户将加密狗插到电脑上即可播放您的加密视频,您可以控制用户的播放次数和有效期。 打包方式与授权方式请参看下载包中的视频教程。 [加密视频播放遇到问题时解决办法]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值