视频播放加密问题,请问是怎么加密的?

最近看视频的时候看到 这样的一个加密, 首先获取你机器的机器码, 然后别人根据你的机器码算出密码, 然后视频才可以播放

加密

我想他是不是通过获得机器上面的mac地址等, 因为这只有mac 是一成不变的。
你们感觉呢? 做过的朋友都怎么实现的, 我只是想知道怎么做,不想破他, 太不厚道拉

Geo5
Geo5
463
编辑于2012-03-14
评论 (0)链接2012-03-12 

这个功能一般是用于桌面客户端软件,例如:用迅雷看看等视频下载软件下载的视频是无法拷到其它机器上播放,原因是它们在从服务器端下载视频数据,在本地生成视频时,在视频的头信息里加入了与本机相关的信息,如:Mac地址、硬盘特征码等,当复制到其它机器上播放时播放器就会检查视频头信息是否与本机器的特征码相符,如果不符则不能播放。

该答案已被锁定,无法对其进行评论,编辑及投票。
()
评论 (0)链接 • 2012-03-12
  • lee

    4 票

  • lee
    1914

开发共享软件经常会碰到生成机器码的问题,常用的方法无非利用MAC地址、硬盘序列号、CPU编号等其中一种或者多种共同生成一个机器特征码,再者还可以在程序中加入某种特定的串,增加破解难度。这种方法对于普通用户来说是够用的,专门从事破解的专业人员还是能找到相应破解办法的。参考资料:共享软件的机器特征码

lee
编辑于 2012-03-12
该答案已被锁定,无法对其进行评论,编辑及投票。
()
评论 (0)链接 • 2012-03-12

一般视频都是采用DRM保护机制(Digital Rights Management),可以参照它的加密流程与原理:DRM技术

该答案已被锁定,无法对其进行评论,编辑及投票。
()
评论 (0)链接 • 2012-03-12

分享给你一段我收藏的生成机器码的代码:

  
using System;
using System.Management;
using System.IO;
using System.Runtime.InteropServices;
using System.Security.Cryptography;
using System.Text;
using Microsoft.Win32;

namespace rocket
{

public class SoftKey
{
#region 获取cpu序列号 硬盘ID 网卡硬地址
#获取cpu序列号

public static string GetCpuInfo()
{
string cpuInfo = "";
ManagementClass cimobject = new ManagementClass("Win32_Processor");
ManagementObjectCollection moc = cimobject.GetInstances();
foreach (ManagementObject mo in moc)
{
cpuInfo = mo.Properties["ProcessorId"].Value.ToString();
}
return cpuInfo.ToString();
}

#获取硬盘ID
public static string GetHDid()
{
string HDid = "";
ManagementClass cimobject1 = new ManagementClass("Win32_DiskDrive");
ManagementObjectCollection moc1 = cimobject1.GetInstances();
foreach (ManagementObject mo in moc1)
{
HDid = (string)mo.Properties["Model"].Value;
}
return HDid.ToString();
}

#获取网卡硬件地址
public static string GetMoAddress()
{
string MoAddress = "";
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc2 = mc.GetInstances();
foreach (ManagementObject mo in moc2)
{
if ((bool)mo["IPEnabled"] == true)
MoAddress = mo["MacAddress"].ToString();
mo.Dispose();
}
return MoAddress.ToString();
}

#region 获取网卡硬地址+CPU序列号+硬盘ID字符串

# 获取网卡硬地址+CPU序列号+硬盘ID字符串

public static string GetAll()
{
return GetMoAddress() + GetCpuInfo() + GetHDid();
}

}
}
该答案已被锁定,无法对其进行评论,编辑及投票。
()
评论 (0)链接 • 2012-03-13

根据 zhuang2 提供的代码可以获取到本机的MAC和硬盘标识码;也就是你软件中展示的机器码;这个只是猜测;
然后根据软件中设置的约定的密钥,进行加密和解密;最常用的方式是MD5,
采用MD5方式加密后,想进行逆向工程是很困难的。所以上述软件如果想破解就需要知道软件设置的密钥;

该答案已被锁定,无法对其进行评论,编辑及投票。
()
评论 (1)链接 • 2012-04-11
  • 0 支持
    软件不只是这么一种破解思路的,建议查看下软件破解相关的资料了解更多内容 – ABitNo 2012-05-11
德问是一个专业的编程问答社区,请 登录注册 后再提交答案