常用网站域名,国家提供的免费网课平台,wordpress子站共享用户名,怎么做可上传图片的网站1.产品ID(ProductID) 产品ID是由五组十进制数组成#xff0c;如下#xff1a;AAAAA-BBB-CCCCCCC-DDEEE 如果你用“ProductID”搜索注册表#xff0c;你会发现一个与你安装的软件有关的产品ID。在Windows的控制面板里的系统里#xff0c;你可以找到Windows操作系统的产… 1.产品ID(ProductID) 产品ID是由五组十进制数组成如下AAAAA-BBB-CCCCCCC-DDEEE 如果你用“ProductID”搜索注册表你会发现一个与你安装的软件有关的产品ID。在Windows的控制面板里的系统里你可以找到Windows操作系统的产品ID。每组数字所代表的意义如下表数字 | 意义---------------------------------------------------------AAAAA | 产品编号例:55661为windows pro版 55660为HOME版BBB | 初级产品序列号的最高有效三位数字| (见下文)CCCCCCC | 初级产品序列号的最低有效六位数字以及| 校验数位的和 (见下文)DD | 用来验证产品序列号的公开密匙索引.例:PRO版为22,VLK版为23EEE | 随机值(用于电话激活时,产生不同的安装ID)在上面的CCCCCCC部分中由一个校验数位和六个数字组成。校验数位是这样计算得到的将所有数位相加包含一个检验数位可以被七整除。例:初级产品序列号的最低有效六位数字是7284397 2 8 4 3 9 33所以检验数位为2因为7 2 8 4 3 9 2 33 2 35所得到的结果35可被七整除。所以产品ID中的CCCCCCC部分的结果为7284392。2、产品序列号组成这25位的序列号是用来区分每份微软产品的产品序列号。产品序列号由五组被“-”分隔开由字母数字混合编制的字符串组成每组字符串是由五个字符串组成。如下FFFFF-GGGGG-HHHHH-JJJJJ-KKKKK每个字符是取自于以下24个字母及数字之中的一个B C E F G H J K M P Q R T V W X Y 2 3 4 6 7 8 9采用这24个字符的原因是为了避免混淆相似的字母和数字如I和1O和0等减少产生不必要的麻烦。这25个字符的产品序列号是由长度为114bits用二进制表示的产品序列号用Base-24进行编码得到的。114bits的二进制产品序列号按高位在后排列各bit定义如下[ X XXXXXXXX XXXXXXXX XXXXXXXXXXXXXXXXXX ] Total 114 Bits | | | \ 55 Bits Sign | | \ 28 Bits Hash | \ 30 Bits Serial \ 31 Bits Data \ 1 Bits FlagFlag 不明标志目前所见的各类Key中这一位总是为0。 Serial产品ID的缩写转成十进制表示为AAAABBBBBB对应显示为 零售版xxxxx-AAA-BBBBBBx-xxxxx OEM版 xxxxx-OEM-0AAAABx-BBBBB 以上31bits总称为Data是产品序列号中的基本部分。 HashData经特定处理得到的结果见后文。 SignHash值的椭圆曲线签名见后文。3、椭圆曲线签名算法所谓的椭圆曲线是指这样一类曲线方程Y2 a1XY a3Y X3 a2X2 a4X a6在密码学里用的是它的两个特例而微软公司用的更是特例中的特例Y2 X3 aX b (mod p)当a、b、p选定后就可以确定一个椭圆曲线再选择一个生成点G(gx,gy)于是存在一个最小的整数q使得q×G0然后再任意选择一个整数kq求出点K(kx,ky)k×G这样椭圆曲线签名算法的Key就全生成了公开密钥为a,b,p, G(gx,gy), K(kx,ky)私有密钥为q,k要对Data签名时(1).先任意选择一个整数rq求点R(rx,ry)r×G(2).将Data、rx、ry进行SHA-1(4)运算取结果中的28位得到Hash(3).求Sign r–Hash×k (mod q)(4).把Data、Hash、Sign三个数组合编码后得到25位的产品序列号。验证产品序列号时(1).把25位产品序列号译码后拆分为Data、Hash、Sign(2).求点R(rx,ry)Sign×G Hash×Kmod p;(3). 将Data、rx、ry进行SHA-1运算取结果中的28位得到Hash’(4).如果HashHash’则该产品序列号为有效的。4. 公开密钥从前文可以看出为了验证产品序列号微软公司必须公开椭圆曲线签名算法中的公开密钥。我们可以从Windows XP安装光盘中的文件pidgen.dll的BINK资源里找到其他产品如Office则被包在*.msi里。而且一共有两组。从目前已知的Key组合来看第一组公开密钥是用以零售版本的第二组公开密钥则用于OEM版本。两个产品的Key能否通用就在于对应的公开密钥是否相同比如中文版的Windows 2000的Pro/Srv/AdvSrv的第二组密钥也是相同的即一个中文Windows 2000 Pro的OEM版的Key可同时供 中文Windows 2000 Srv/Adv的OEM版使用。 5.破解及其难度要破解产品序列号生成算法必须从微软公司公开的密钥中求出对应的私有密钥即只要求出q和k即可。从BINK中公开的密钥来看p 是一个384 bits的质数看起来计算量好像至少要O(2168)才行但微软公司设计中存在一个严重缺陷使实际工作量降低到只O(228)就可以了。为什么相差这么远回头看看2.(3)中的式子Sign r - Hash * k ( mod q )通常情况下q可以是很大的值因此Sign应该也很大但微软公司为了减少用户输入的产品序列号的数量把Sign的值限死在55 bits因此自然也限定了q最多也不能超过56 bits。依此类推由于kq所以k也不能超过56 bits也就是说我们面对的只是两个最多256的数据而已。把q和k求出来了就可以根据上面所述的算法编写出微软公司所有采用该技术产品的算号器结论:估计所有微软公司产品的序列号生成算法是一样的.只是公有密钥和私有密钥不同而已,只要我们求出私有密钥q和k,要生成序列号,就容易得多了.新版算号器的作者就是把各个版本的私有密钥q和k求出来了.新版算号器的工作流程:在新版算号器中输入初级产品ID的范围,就可以随机确定产品ID.初级产品ID中的前三位,根据算号激活成功经验和统计正版序列号的结果,每个版本都有特定数字.例在PRO版中010,011激活成功机率很高,在HOME版中005,006激活机率很高.后7位中有一位是效验位,其它6位随机指定即可,所以只需输入6位.接着程序会自动生成一个随机数,也就是算法中的r.最后根据上面的算法,得出产品序列号.使用不同的随机数,对同一个产品ID运算,所得到的序列号是不相同的!学过数学的朋友可以看出,这个算法的复杂度并不高,用现在的计算机,很快就可以算出来,这就是新版算号器速度惊人,准确率高的根本原因!完美算号器!关于算号激活的问题,大家一直争论不已,最主要就是XP的激活问题,XP在装了SP后是不可以激活的了,原因就是微软加了序列号检测机制,也就是在激活过程中,序列号本身也要发送到微软的激活服务器进行验证.我估计验证机制可能采用了这两种方法的其中一个:第一:微软有个序列号出厂数据库.对于要激活的系统所用的序列号没有出厂记录,就说明该序列号是由算号器生成的,不给予激活.我估计这个方法可能性不大!第二:对序列号本身存在一个检测机制!也就是说,算号器算出来的序列号,只有符合某一定规律的,才能够激活,而这个机制只有微软公司掌握,破解了这个机制就有可能制作出可以算出真正正版的序列号的算号器,换一句话就是可以制作出装了SPX都可以激活的最完美的算号器!!!破解这个检测机制的最大希望就是上面所说的r!采用特定的产品ID只有配合特定的r算出来的序列号,才是正版的序列号!要破解这个检测机制,方法就是收集大量的正版序列号,分析出产品ID和r的关系,就可以制作出最完美的算号器!所以我估计最完美的算号器,将在不久的将来面世!其实算号器的编写并不难的,只要求出各个版本的私有密钥q和k(这需要一点时间),利用上面的算法就可以制作出NIN1的算号器,这需要一定的数学知识和一定的编程功力!