日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

序列號等價于注冊碼,是軟件發(fā)行商的一種維權(quán)手段,也就是正版軟件的一個身份證。本質(zhì):防止盜版、按功能收費等。

目前,商用軟件和共享軟件絕大部份都是采用注冊碼授權(quán)的方式來保證軟件本身不被盜用,以保證自身的利益。盡管很多常用的許多軟件系統(tǒng)的某些版本已經(jīng)被別人破解,但對于軟件特殊行業(yè)而言,注冊碼授權(quán)的方式還是一種保護(hù)軟件系統(tǒng)本身的一種有效的手段。

序列號一般會和產(chǎn)品的名稱(具體到硬件產(chǎn)品的型號、軟件產(chǎn)品的版本號)、產(chǎn)品的使用期限(具體到截止日期)一起發(fā)布。

以下是一款我曾經(jīng)試用過的美國軟件產(chǎn)品Silver-peak注冊碼/序列號申請回復(fù)郵件的全文:

Hello,

The license key for your Silver Peak trial is ready to be installed. This is one of two mails you will receive with unique license keys. Deploy the Silver Peak Virtual Appliance you downloaded at each end of the WAN link you plan to optimize. Once deployed, install the unique license key below on one appliance and the unique license key from the second email on the other appliance to enable optimization.

Product: VX-2000

License Key:

P6F0-lBmL-34Pm-IZ3m-3MGL-s2ND-eLKC-+3pe-HROq-VMGQ-spH/-kOBb-LJOV-QC3p-nPw1-OJGy-KUem-egFc-sXWB-uDwm-goPa-gw==

Your license will expire on: Mon Jan 19 2015

Before you start your trial, we recommend you visit the Silver Peak Marketplace website and read the ‘Getting Started’ page:

http://marketplace.silver-peak.com/products/vx-virtual-software/vx-2000.html

If you have any questions about installing and configuring your virtual appliance, you can contact the Silver Peak support team directly. The support team can be reached in one of three ways:

Via the support center at http://www.silverpeaksystems.com/support/portal_login.asp (you should have received an email with instructions on how to enable your account)

By phone at 877-210-7325 / 408-935-1850

By email at support@silver-peak.com

 

2.序列號/注冊碼的原理

一般是以計算機硬件(如主板,網(wǎng)卡,硬盤)的唯一序列號作為注冊源,通過一定的算法(即注冊機)形成所謂的注冊碼。一般的程序通過在程序中設(shè)置一個全局變量來進(jìn)行注冊碼的記錄。

windows下次數(shù)可以在注冊表里設(shè)置一個鍵值來判斷,若有此鍵,則說明已經(jīng)到期。(網(wǎng)上說法,個人感覺不可靠,因為注冊表也可以修改。)

一般情況下軟件的注冊是通過比較來實現(xiàn)的,也就是說軟件本身就是注冊機,因為他本身就有個真正的注冊碼,用他來和你所輸入的注冊碼做比較。不過有的是明碼比較有的是加密比較,以明碼比較來說:我們已經(jīng)知道了軟件自己可能會產(chǎn)生注冊碼的有的在內(nèi)存中有的在軟件中有的在注冊表中,更有甚者是有個通用的萬能注冊碼。

輸入注冊碼成功是因為軟件中用了跳轉(zhuǎn),也就是說。當(dāng)你輸入的號碼和真正的注冊碼比較完的時候有個跳轉(zhuǎn)。

大部分注冊算法的原理是:軟件或者用戶自己觸發(fā)了軟件的注冊模塊軟件跳轉(zhuǎn)到注冊認(rèn)證模塊。彈出注冊窗口用戶輸入注冊名+注冊碼A,把它們存放在內(nèi)存中。然后軟件的注冊碼驗證部分根據(jù)用戶輸入的注冊名生成正確的注冊碼B并和用戶輸入的注冊碼A做對比。如果結(jié)果為相同則注冊通過,并運行“注冊成功”后面的程序分支,比如解除各種軟件限制。如果不相同則提示“無效的注冊碼,請重新輸入!”或者“Invalid key!”等等警告。如下圖所示:

一篇文章通透理解序列號實現(xiàn)原理

 

圖 1 注冊截圖

原理摘自:
http://blog.csdn.net/jacky_think/article/details/4565241

3.注冊碼/序列號授權(quán)分類

通常而言,注冊碼授權(quán)方式有以下幾種方式:

(1)安裝序列號方式

這是最為常用的方式,Mircosoft提供的產(chǎn)品(例如:Windows系列產(chǎn)品、office系列產(chǎn)品等等)都是采用這種方式。通過一種復(fù)雜的算法生成安裝序列號,在安裝過程中,安裝程序?qū)τ脩糨斎氲陌惭b序列號進(jìn)行校驗來驗證該系統(tǒng)是否被合法,從而完成授權(quán)。

一篇文章通透理解序列號實現(xiàn)原理

 

圖 2 Windows安裝序列號方式

(2)用戶名+序列號方式

即軟件系統(tǒng)的供應(yīng)商給用戶提供有效的用戶名和序列號,用戶在安裝過程或啟動過程中輸入有效的用戶名和序列號,系統(tǒng)通過算法校驗通過后完成軟件授權(quán)。

一篇文章通透理解序列號實現(xiàn)原理

 

圖 3 用戶名+序列號方式

(3)在線注冊方式

用戶安裝系統(tǒng)后,通過網(wǎng)絡(luò)進(jìn)行注冊授權(quán)。軟件系統(tǒng)的供應(yīng)商事先已經(jīng)登記了用戶的信息,用戶在線注冊時,供應(yīng)商的注冊系統(tǒng)對用戶的信息進(jìn)行驗證。用戶身份有效時,注冊系統(tǒng)生成一個憑證信息,軟件系統(tǒng)根據(jù)憑證信息完成授權(quán)。

一篇文章通透理解序列號實現(xiàn)原理

 

圖 4 在線注冊方式

(4)激活碼方式

用戶安裝系統(tǒng)后,軟件系統(tǒng)會根據(jù)用戶機器的關(guān)鍵信息(例如:mac地址、CPU序列號、硬盤序列號等等)生成一個注冊憑證(也可稱為注冊碼),用戶將這個注冊憑證發(fā)送給軟件供應(yīng)商,供應(yīng)商通過注冊憑證生成一個激活碼。用戶輸入激活碼,軟件系統(tǒng)完成授權(quán)。

一篇文章通透理解序列號實現(xiàn)原理

 

圖 5 激活碼方式

4.注冊碼/序列號組成

(1)產(chǎn)品版本:限定具體到哪個版本、同產(chǎn)品的其他版本不能用。

(2)到期時間:限定截止服務(wù)運行時間,到給定截止前一周會有界面提示和郵件提醒

(3)唯一標(biāo)識:限定一個軟件產(chǎn)品和MAC地址或者磁盤UUID(linux系統(tǒng))/GUID(Windows系統(tǒng))綁定

(4)預(yù)留字段:用于分模塊限定核心功能、分模塊收費等。

以下是Silver-peak產(chǎn)品序列號使用期限截止前一周前郵件提示全文:

Hello,

This is to notify you that the Proof of Concept currently in process at XXX@163.com will expire on Wed Jan 21 2015.

This affects the following appliances, shipped on Mon Dec 22 2014:

VX-2000, S/N 001BBC03A8E9

VX-2000, S/N 001BBC03A8EA

If you have questions, please contact your account executive (Tricia Png, tpng@silver-peak.com).

Thank you,

Silver Peak Systems

5.獲取機器的唯一標(biāo)識

上面的分析可知,我們的軟件肯定要安裝到硬件設(shè)備上,為了管控亂拷貝現(xiàn)象或盜版使用現(xiàn)象,必須獲取硬件設(shè)備的唯一標(biāo)識。通過該唯一標(biāo)識生成注冊碼/序列號。

有了設(shè)備的唯一編號,我們就可以實現(xiàn)更好的軟件的授權(quán)機制,還可以利用它來限制客戶端軟件訪問后臺服務(wù)的權(quán)限,從而提高系統(tǒng)的安全性。

通用唯一識別碼(英語:Universally Unique Identifier,簡稱UUID)是一種軟件建構(gòu)的標(biāo)準(zhǔn),亦為自由軟件基金會組織在分散式計算環(huán)境領(lǐng)域的一部份。

UUID的目的,是讓分散式系統(tǒng)中的所有元素,都能有唯一的辨識信息,而不需要通過中央控制端來做辨識信息的指定。如此一來,每個人都可以創(chuàng)建不與其它人沖突的UUID。在這樣的情況下,就不需考慮數(shù)據(jù)庫創(chuàng)建時的名稱重復(fù)問題。目前最廣泛應(yīng)用的UUID,是微軟公司的全局唯一標(biāo)識符(GUID),而其他重要的應(yīng)用,則有Linux ext2/ext3文件系統(tǒng)、LUKS加密分區(qū)、GNOME、KDE、Mac OS X等等。另外我們也可以在e2fsprogs包中的UUID庫找到實現(xiàn)。

UUID是指在一臺機器上生成的數(shù)字,它保證對在同一時空中的所有機器都是唯一的。通常平臺會提供生成的API。按照開放軟件基金會(OSF)制定的標(biāo)準(zhǔn)計算,用到了全局唯一的IEEE機器識別號、納秒級時間、芯片ID碼和許多可能的數(shù)字。

如果你在生成一個UUID之后,過幾秒又生成一個UUID,則第一個部分不同,其余相同(實際測試結(jié)果每次都不同)。即每次生成的UUID都是不同的

UUID由以下幾部分的組合:


  • 1 全局唯一的IEEE機器識別號。(如果有網(wǎng)卡,從網(wǎng)卡MAC地址獲得;沒有網(wǎng)卡,以其他方式獲得)
  • 2 納秒級時間
  • 3 芯片ID碼
  • 4 許多可能的數(shù)字

UUID的唯一缺陷在于生成的結(jié)果串會比較長。關(guān)于UUID這個標(biāo)準(zhǔn)使用最普遍的是微軟的GUID(Globals Unique Identifiers)。在ColdFusion中可以用CreateUUID()函數(shù)很簡單地生成UUID,其格式為:xxxxxxxx-xxxx- xxxx-xxxxxxxxxxxxxxxx(8-4-4-16),其中每個x是0-9 a-f 范圍內(nèi)的一個十六進(jìn)制的數(shù)字。而標(biāo)準(zhǔn)的UUID格式為:
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12)

5.1不同操作系統(tǒng)設(shè)備的唯一標(biāo)識

(1)Windows系統(tǒng)GUID

全局唯一標(biāo)識符,簡稱GUID(發(fā)音為/?ɡu??d/或/?ɡw?d/),是一種由算法生成的唯一標(biāo)識,通常表示成32個16進(jìn)制數(shù)字(0-9,A-F)組成的字符串,如:{
21EC2020-3AEA-1069-A2DD-08002B30309D},它實質(zhì)上是一個128位長的二進(jìn)制整數(shù)。GUID一詞有時也專指微軟對UUID標(biāo)準(zhǔn)的實現(xiàn)。

GUID的主要目的是產(chǎn)生完全唯一的數(shù)字。在理想情況下,任何計算機和計算機集群都不會生成兩個相同的GUID。GUID的總數(shù)也足夠大,達(dá)到了2128(3.4×1038)個,所以隨機生成兩個相同GUID的可能性是非常小的,但并不為0。所以,用于生成GUID的算法通常都加入了非隨機的參數(shù)(如時間),以保證這種重復(fù)的情況不會發(fā)生。

[維基百科]

https://zh.wikipedia.org/wiki/%E5%85%A8%E5%B1%80%E5%94%AF%E4%B8%80%E6%A0%87%E8%AF%86%E7%AC%A6

(2)Linux系統(tǒng)UUID

Linux UUID的作用及意義

原因1:它是真正的唯一標(biāo)志符

UUID為系統(tǒng)中的存儲設(shè)備提供唯一的標(biāo)識字符串,不管這個設(shè)備是什么類型的。如果你在系統(tǒng)中添加了新的存儲設(shè)備如硬盤,很可能會造成一些麻煩,比如說啟動的時候因為找不到設(shè)備而失敗,而使用UUID則不會有這樣的問題。

原因2:設(shè)備名并非總是不變的

自動分配的設(shè)備名稱并非總是一致的,它們依賴于啟動時內(nèi)核加載模塊的順序。如果你在插入了USB盤時啟動了系統(tǒng),而下次啟動時又把它拔掉了,就有可能導(dǎo)致設(shè)備名分配不一致。

使用UUID對于掛載移動設(shè)備也非常有好處──例如我有一個24合一的讀卡器,它支持各種各樣的卡,而使用UUID總可以使同一塊卡掛載在同一個地方。

原因3:ubuntu中的許多關(guān)鍵功能現(xiàn)在開始依賴于UUID

【長度縮減可以Base64編碼】

https://zh.wikipedia.org/wiki/%E5%85%A8%E5%B1%80%E5%94%AF%E4%B8%80%E6%A0%87%E8%AF%86%E7%AC%A6

5.2獲取唯一標(biāo)識方法

(1)Windows系統(tǒng)機器或者Linux系統(tǒng)機器獲取方法

一篇文章通透理解序列號實現(xiàn)原理

 

圖 6 Windows機器的Guid

一篇文章通透理解序列號實現(xiàn)原理

 

圖 7 Linux機器的uuid

Windows系統(tǒng)&Linux系統(tǒng)獲取uuid統(tǒng)一通用代碼(已經(jīng)測試過,測試結(jié)果見上面截圖):

#include <stdio.h>
#include <string>
#include <IOStream>

#ifdef WIN32
#include <objbase.h>
#else
#include <uuid/uuid.h>
#endif

using namespace std;

#define MAX_LEN 128


/*
**@brief: get windows guid or linux uuid
**@return: string type windows guid or linux uuid
*/
string GetGuid()
{
char szuuid[MAX_LEN] = {0};
#ifdef WIN32
GUID guid;
CoCreateGuid(&guid);
_snprintf_s(
szuuid,
sizeof(szuuid),
"{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
guid.Data1, guid.Data2, guid.Data3,
guid.Data4[0], guid.Data4[1],
guid.Data4[2], guid.Data4[3],
guid.Data4[4], guid.Data4[5],
guid.Data4[6], guid.Data4[7]);
#else
uuid_t uuid;
uuid_generate(uuid);
uuid_unparse(uuid, szuuid);
#endif

return std::string(szuuid);
}

int main()
{
string strGuid = GetGuid();
cout << strGuid.c_str() << endl;
return 0;
}

(2)Android/ target=_blank class=infotextkey>安卓手機設(shè)備(沒有驗證)

DEVICE_ID

這是Android系統(tǒng)為開發(fā)者提供的用于標(biāo)識手機設(shè)備的串號,也是各種方法中普適性較高的,可以說幾乎所有的設(shè)備都可以返回這個串號,并且唯一性良好。

這個DEVICE_ID可以同通過下面的方法獲取:

TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); String DEVICE_ID = tm.getDeviceId();

它會根據(jù)不同的手機設(shè)備返回IMEI,MEID或者ESN碼,但在使用的過程中有以下問題:

非手機設(shè)備:最開始搭載Android系統(tǒng)都是手機設(shè)備,而現(xiàn)在也出現(xiàn)了非手機設(shè)備:如平板電腦、電子書、電視、音樂播放器等。這些設(shè)備沒有通話的硬件功能,系統(tǒng)中也就沒有TELEPHONY_SERVICE,自然也就無法通過上面的方法獲得DEVICE_ID。

權(quán)限問題:獲取DEVICE_ID需要READ_PHONE_STATE權(quán)限,如果只是為了獲取DEVICE_ID而沒有用到其他的通話功能,申請這個權(quán)限一來大才小用,二來部分用戶會懷疑軟件的安全性。

廠商定制系統(tǒng)中的Bug:少數(shù)手機設(shè)備上,由于該實現(xiàn)有漏洞,會返回垃圾,如:zeros或者asterisks

【參考】
http://my.oschina.net/596179991/blog/619242

5.3不使用MAC 地址作為唯一標(biāo)識的原因

(1)有的Windows、Linux設(shè)備或者虛擬機可能沒有網(wǎng)卡

(2)對于安卓設(shè)備

可以使用手機Wifi或藍(lán)牙的MAC地址作為設(shè)備標(biāo)識,但是并不推薦這么做,原因有以下兩點:

硬件限制:并不是所有的設(shè)備都有Wifi和藍(lán)牙硬件,硬件不存在自然也就得不到這一信息。

獲取的限制:如果Wifi沒有打開過,是無法獲取其Mac地址的;而藍(lán)牙是只有在打開的時候才能獲取到其Mac地址。

6.關(guān)于破解&安全性

不論是采用哪種方式來進(jìn)行授權(quán),理論上都是可以被破解的。只要破解者發(fā)現(xiàn)了軟件授權(quán)機制和原理則任何保護(hù)機制都將化為烏有。因此,只能夠通過選擇復(fù)雜的算法和機制來增加破解者的破解難度,從而在在一定的時間內(nèi)保證軟件不被盜用。

RSA算法(非對稱加密算法)是一個廣泛用于加密和數(shù)字簽名的算法,可以適用用戶名+序列號、在線注冊、激活碼等軟件保護(hù)方式

RSA算法是第一個能同時用于加密和數(shù)字簽名的算法,也易于理解和操作。RSA也是被研究得最廣泛的公鑰算法,從提出到現(xiàn)在已近二十年,經(jīng)歷了各種攻擊的考驗,逐漸為人們接受,普遍認(rèn)為是目前最優(yōu)秀的公鑰方案之一。

【參考RSA實現(xiàn)軟件注冊碼原理】
http://blog.csdn.net/scollins/article/details/5694306

設(shè)想的用戶使用序列號的流程及可能存在的問題:

一篇文章通透理解序列號實現(xiàn)原理

 

圖 8 用戶使用序列號流程

(1)聯(lián)機驗證是一種很好的防止破解的方法

優(yōu)點:簡單、高效、直觀。

缺點:針對軟件的使用客戶情況不同,部分客戶是內(nèi)網(wǎng)機器,無法連接外網(wǎng),也就無法聯(lián)網(wǎng)驗證。

(2)關(guān)于序列號拷貝問題

之前采用過一種方法,如果涉及兩臺設(shè)備(服務(wù)端、客戶端)之間通信的,可以通過如下判定禁用復(fù)制序列號、修改Mac地址的情況。

一篇文章通透理解序列號實現(xiàn)原理

 

圖 9 通信的角度中斷序列號復(fù)制問題

(3)UUID的弊端

如果將一臺機器的UUID拷貝到另一臺機器,就類似修改Mac地址的方法達(dá)到欺騙的目的。

由于目前沒有找到通過UUID反推Mac地址的方法。設(shè)想的解密那里只能通過解密到UUID,不能繼續(xù)解析到Mac地址或者磁盤UUID。

復(fù)雜一勞永逸的解決方案:UUID不通過系統(tǒng)生成,自己寫算法生成。這樣生成和解析都可控。

簡單的解決方案:假定設(shè)備都裝了網(wǎng)卡,通過實際網(wǎng)卡(非虛擬網(wǎng)卡)的Mac地址充當(dāng)設(shè)備UUID。

安全性問題的以上3點需要花時間研究。

7.構(gòu)想的序列號生成方案

下圖是生成序列號與反查序列號界面截圖(構(gòu)想)。

一篇文章通透理解序列號實現(xiàn)原理

 

圖 10 序列號生成軟件

下圖是序列號生成流程圖(構(gòu)想)。

第一步:通過5.2(1)方法獲取安裝設(shè)備的UUID,如:


9d669361-7f8a-4f97-b08a-488e4a92ee52;該UUID應(yīng)該存儲在設(shè)備的軟件安裝路徑一份,以備對比驗證。

第二步:填寫對應(yīng)安裝的軟件版本號,如1.0.0.1;

第三步:填寫使用或授權(quán)限定使用的期限,如3年。

第四步:點擊生成序列號生成授權(quán)序列號(后臺會調(diào)用RSA加密算法,對輸入內(nèi)容進(jìn)行加密)。

一篇文章通透理解序列號實現(xiàn)原理

 

圖 11 序列號生成流程圖

下圖2是序列號驗證邏輯流程圖(構(gòu)想)。

第一步:輸入獲取的序列號。

第二步:后臺執(zhí)行RSA解密序列號。

第三步:判定各個屬性值和安裝設(shè)備是否一致。

第四步:全部相同確定為有效序列號,可以放行軟件功能權(quán)限。

一篇文章通透理解序列號實現(xiàn)原理

 

圖 12序列號驗證邏輯流程圖

8.參考

【1】Linux Mac 地址修改方法

https://zhangge.net/2631.html

【2】UUID唯一資源命名空間的來龍去脈(RFC4122)

https://segmentfault.com/a/1190000000484508

【3】Linux磁盤分區(qū)UUID的獲取及其UUID的作用

http://blog.chinaunix.net/uid-26517277-id-3240867.html

【4】JAVA平臺生成GUID

http://www.cnblogs.com/jdonson/archive/2009/07/22/1528466.html

【5】詳解Linux中獲取全球唯一標(biāo)示符UUID的方法

http://www.jb51.net/LINUXjishu/433891.html

【6】各種OS生成UUID的方法

http://linfan.info/blog/2012/04/20/uuid/

【7】注冊碼的原理(可參考)

http://blog.csdn.net/jacky_think/article/details/4565241

https://www.zhihu.com/question/20107987

【8】UUID的生成算法

http://blog.csdn.net/ubuntu64fan/article/details/1787891

【9】Windows修改Mac地址方法

http://jingyan.baidu.com/article/4b52d70266bde7fc5c774ba7.html

 

轉(zhuǎn)載請標(biāo)明出處,原文地址:
http://blog.csdn.net/laoyang360/article/details/50966707

分享到:
標(biāo)簽:序列號
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達(dá)人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定