成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

當前位置:首頁>>軟件教程>>操作系統>>新聞內容
微軟新版算號器技術原理
作者:Artex 發布時間:2004-4-6 21:19:42 文章來源:winzheng/long-jf
我正在寫微軟序列號生成和驗證方面的論文,恰好新版算號器的出現,大家對新版算號器的高效和準確感到吃驚,為此,我和試著大家分析一

下新版算號器的技術原理!

1.產品ID(ProductID)
  產品ID是由五組十進制數組成,如下:
AAAAA-BBB-CCCCCCC-DDEEE
  如果你用“ProductID”搜索注冊表,你會發現一個與你安裝的軟件有關的產品ID。在Windows的控制面板里的系統里,你可以找到Windows操作系統的產品ID。

每組數字所代表的意義如下表:
數字 | 意義
--------+-------------------------------------------------
AAAAA | 產品編號,例:55661為windows pro版 55660為HOME版
BBB | 初級產品序列號的最高有效三位數字
| (見下文)
CCCCCCC | 初級產品序列號的最低有效六位數字以及
| 校驗數位的和 (見下文)
DD | 用來驗證產品序列號的公開密匙索引.例RO版為22,VLK版為23
EEE | 隨機值(用于電話激活時,產生不同的安裝ID)
在上面的CCCCCCC部分中,由一個校驗數位和六個數字組成。校驗數位是這樣計算得到的:將所有數位相加,包含一個檢驗數位,可以被七整除。

例:初級產品序列號的最低有效六位數字是728439
7 + 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和1,O和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 Flag

Flag: 不明標志,目前所見的各類Key中這一位總是為0。
Serial:產品ID的縮寫,轉成十進制表示為AAAABBBBBB,對應顯示為:
零售版:xxxxx-AAA-BBBBBBx-xxxxx
OEM版: xxxxx-OEM-0AAAABx-BBBBB
以上31bits總稱為Data,是產品序列號中的基本部分。
Hash:Data經特定處理得到的結果,見后文。
Sign:Hash值的橢圓曲線簽名,見后文。

3、橢圓曲線簽名算法
所謂的橢圓曲線是指這樣一類曲線方程:
Y2 + a1XY + a3Y = X3 + a2X2 + a4X + a6
在密碼學里用的是它的兩個特例,而微軟公司用的更是特例中的特例:
Y2 = X3 + aX +b (mod p)
當a、b、p選定后,就可以確定一個橢圓曲線,再選擇一個生成點G(gx,gy),于是,存在一個最小的整數q使得q×G=0,然后,再任意選擇一個整數k<q,求出點K(kx,ky)=k×G,這樣橢圓曲線簽名算法的Key就全生成了:
公開密鑰為:a,b,p, G(gx,gy), K(kx,ky)
私有密鑰為:q,k

要對Data簽名時:
(1).先任意選擇一個整數r<q,求點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×K(mod p);
(3). 將Data、rx、ry進行SHA-1運算,取結果中的28位得到Hash’;
(4).如果Hash=Hash’,則該產品序列號為有效的。

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。依此類推,由于k<q,所以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的算號器,這需要一定的數學知識和一定的編程功力!而我不怎么會編程.各位龍卷風的朋友一起努力制作出最完美的NIN1算號器吧!不要老是讓老外走在我們前面.
本人很奇怪,關于算號原理的文章,網上一早就有了,但是剛出來的算號器,效率奇低,不知道它是采用什么算法的.而新版算號器直到最近一段時間才放出來.對本文有興趣及一定見解的朋友請回帖留下你的聯系方式,歡迎大家一起探討.本人水平有限,如有錯漏之外,敬請指出及原諒!

本文如要轉貼,請注明原作者及出處!同時告訴我你所轉貼的網站和相關鏈接。

Artex
From long-jf
最新更新
·教你刪除Windows 7自動創建的
·檢測你的計算機是否能運行Wi
·如何安裝Windows 7 RC的中文
·解決Vista關閉UAC后邊欄無法
·Windows 7 RC新功能XP Mode詳
·Windows7操作系統硬件配置要
·wubi安裝Ubuntu 9.04失敗的原
·如何修改Windows7的軟件默認
·在Windows7在硬盤升級Window
·vista在硬盤下全新安裝Windo
相關信息
放生
愚愛
夠愛
觸電
白狐
心跳
知足
犯錯
降臨
分愛
葬愛
光榮
畫心
火花
稻香
愛得起
這種愛
大丈夫
花蝴蝶
二缺一
小酒窩
下雨天
右手邊
安靜了
棉花糖
明天過后
邊做邊愛
擦肩而過
沒有如果
懷念過去
等一分鐘
越來越愛
寂寞暴走
你的承諾
Nobody
我們都一樣
永遠在身邊
天使的翅膀
原諒我一次
i miss you
原諒我一次
吻的太逼真
姑娘我愛你
做你的愛人
一定要愛你
飛向別人的床
愛上別人的人
感動天感動地
心在跳情在燒
不潮不用花錢
如何能把你忘記
即使知道要見面
愛上你是一個錯
最后一次的溫柔
愛上你是我的錯
怎么會狠心傷害我
親愛的那不是愛情
傷心時候可以聽情歌
愛上你等于愛上了錯
不是因為寂寞才想你
主站蜘蛛池模板: 怀远县| 罗田县| 肇东市| 黎川县| 凯里市| 江西省| 长寿区| 长阳| 青海省| 新平| 杭锦旗| 鹤岗市| 尚义县| 南充市| 德兴市| 阿拉尔市| 南投县| 乐平市| 渝北区| 呼和浩特市| 当阳市| 遵化市| 会昌县| 同仁县| 游戏| 皮山县| 孝义市| 甘孜县| 碌曲县| 米泉市| 宜春市| 泗洪县| 茌平县| 天长市| 黑水县| 吉林省| 左贡县| 沁水县| 巨野县| 应城市| 昭觉县|