1,iPhone的硬件
iPhone的硬件配置比較高,雖然賣得是比較貴,但是相對(duì)于Nokia
N95之類的比起來,iPhone造價(jià)肯定比N95貴不少。
現(xiàn)在初步相信iPhone的CPU是一個(gè)Samsung
S5L8900,這個(gè)CPU是具有A-GPS和3G功能的(這是后話),但是iPhone的GSM模塊采用了另外一個(gè)完全獨(dú)立的系統(tǒng),就是我們常說的baseband,這個(gè)baseband有自己的firmware(操作系統(tǒng))和CPU(是一個(gè)S-GOLD2,西門子的手機(jī)也是采用這個(gè)CPU),而且,通俗點(diǎn)說,baseband還有自己的閃存用來記錄目前baseband的狀態(tài),這個(gè)閃存被稱為NOR,我們所說的seczone就在其中。這個(gè)baseband單獨(dú)拆下來經(jīng)過小改,也夠當(dāng)一個(gè)手機(jī)用了。
所以實(shí)際上iPhone是非常復(fù)雜的一個(gè)手機(jī)。我們每次所謂更新firmware,實(shí)際上是更新iPhone的firmware(就是OS
X Darwin),而bbupdater則是更新baseband的firmware。
你可以這樣想,iPhone是一個(gè)電腦,這個(gè)電腦上插了一個(gè)聯(lián)通CDMA卡,你使用電腦可以打電話發(fā)短信和上網(wǎng),問題是聯(lián)通CDMA卡被鎖死了,只能上聯(lián)通,如果要解鎖,怎么辦?通過修改電腦的操作系統(tǒng)(Windows
XP)是不行的,因?yàn)榭刂茩?quán)在CDMA卡手里,所以你必須想辦法通過Windows XP來修改CDMA卡上的系統(tǒng),才能達(dá)到解鎖的目的。
2,完美的解鎖
有些人會(huì)問了,什么才是所謂的完美解鎖?現(xiàn)在的解鎖有什么不完美?
完美的解鎖,就是真解鎖,如果你的iPhone完美的解鎖了,你的iPhone不需要任何打過補(bǔ)丁的baseband
firmware,你的iPhone可以隨著Apple的firmware升級(jí)隨時(shí)升級(jí),不會(huì)有任何問題,而且,你的整個(gè)iPhone系統(tǒng),就是
Apple原汁原味的系統(tǒng),沒有任何改動(dòng)!
就像軟件的破解一樣,完美解鎖,就是注冊(cè)碼,軟件還是那套軟件,輸入注冊(cè)碼后就注冊(cè)了,完美,而目前的解鎖,實(shí)際上都是注冊(cè)機(jī),把軟件中的某些地方打了補(bǔ)丁。
那么,怎么樣才能實(shí)現(xiàn)完美解鎖?剛才我們提到了,iPhone中baseband的資料都存在NOR里,是的,NOR里保存了目前baseband的狀態(tài),其中就有目前iPhone的解鎖狀態(tài),iPhone出廠的時(shí)候,都給鎖在ATT的網(wǎng)絡(luò)里了。
到這里有些人想問了:那么我們把這個(gè)狀態(tài)改成解鎖,不就完美了么,是的,但是,問題是:
1,只有通過baseband的firmware,也就是baseband的操作系統(tǒng),才能讀寫NOR,而且NOR中seczone的控制及其嚴(yán)格,想要直接發(fā)指令寫入,是不可能的。
2,baseband的firmware是Apple數(shù)字簽名過的,意思就是說,只有Apple自己的1024位的私匙簽名過的firmware,baseband才會(huì)運(yùn)行。
3,最重要的一點(diǎn),我們不知道要往NOR
seczone里面寫入什么,才能解鎖,因?yàn)镹OR
seczone里數(shù)據(jù)都是加密過的,不是0就是鎖,1就是解鎖這么簡(jiǎn)單,每臺(tái)iPhone的NOR在加密前可以是一樣的,但是加密后每臺(tái)都是不一樣的,而且這個(gè)加密機(jī)制,也只有通過Apple的私匙才能算出來。
那么,想要達(dá)到完美解鎖,需要怎么做?
實(shí)際上,你可以通過iPhone的minicom對(duì)iPhone的baseband發(fā)送指令,其中有一條指令,就是用來解鎖的,而且我們明確知道這條指令是什么,就是:
AT+CLCK="N",0,"xxxxxxxx"
注意到后面那8個(gè)x了嗎?那些x就是你的解鎖碼,unlock
code,或者專業(yè)說法,叫做NCK、Network Control
Key,,這個(gè)key每個(gè)iphone都不一樣,相信蘋果應(yīng)該是用某種隨機(jī)機(jī)制生成了這些解鎖碼,然后和IMEI或者序列號(hào)掛鉤,放在自己的數(shù)據(jù)庫里,在將來,蘋果官方提供解鎖的時(shí)候,他們會(huì)通過你的IMEI或者序列號(hào)告訴你的unlock
code,達(dá)到完美解鎖。
但是你發(fā)送指令的時(shí)候,你的iPhone又怎么知道這個(gè)解鎖碼是對(duì)還是錯(cuò)的?如果iPhone需要知道對(duì)錯(cuò),那么說明iPhone自己知道unlock
code,所以我們能從iPhone里某個(gè)地方找到這個(gè)code,然后完美解鎖,對(duì)嗎?不對(duì)!
實(shí)際上iPhone
NOR上保存的,是這個(gè)code經(jīng)過某個(gè)特殊的算法生成的一個(gè)hash值,hash(code) ,而這個(gè)算法是不可逆的(就像MD5)。
通俗點(diǎn)說,我們可以這么想,Apple教會(huì)了iPhone一套暗號(hào),告訴iPhone
1 = 鴨子 2 = 雞 3 = 鵝,然后把暗號(hào)123這個(gè)unlock code編碼成“鴨子雞鵝"存放在Phone
NOR里,這時(shí)候iPhone并不知道unlock
code是123,它只知道如果別人告訴我123,我按照Apple的暗號(hào)算一下,如果算出來和"鴨子雞鵝"一樣,那么別人告訴我的code就是對(duì)的了。當(dāng)然實(shí)際上這個(gè)過程不是這么簡(jiǎn)單,否則你一猜就能破譯這個(gè)密碼了,按照目前的計(jì)算機(jī)水平,把這個(gè)unlock
code通過hash過的值逆算回來,幾乎是不可能的。
那么,我們窮舉行嗎?不就是一個(gè)8位數(shù)嘛?我們從00000000試到99999999,總有一個(gè)對(duì)吧?這個(gè)方法理論上可以,但是實(shí)際上行不通,原因又兩個(gè):
1,按照粗略結(jié)算,關(guān)把這些1億個(gè)指令發(fā)給iPhone嘗試,就要35天,并且還不考慮iPhone算需要多久。
2,最關(guān)鍵的,iPhone的baseband NOR
seczone中,有一個(gè)NCK計(jì)數(shù)器,一旦你嘗試3-10次失敗,你的baseband將會(huì)硬件燒死在AT&T上。
所以,目前來說,iPhone完美解鎖,還沒有,相信如果Apple不出大錯(cuò)誤,也不會(huì)有,除非Apple到時(shí)候官方推出解鎖,那才是完美解鎖。
3,目前的解鎖
目前iPhone上有3種軟件解鎖,分別是:
1,iUnlock / Anysim 1.0.2 /
iUnlock Reloaded 這些都是同一種,都是使用了iUnlock的核心代碼。
2,iPhoneSimFree.com,也就是IPSF提供的需要花錢購買的解鎖。
3,Anysim 1.1.1
這3種解鎖,都不是完美解鎖!
目前相信,這3種方法的工作原理如下:
iUnlock
iUnlock通過直接在baseband
firmware上打補(bǔ)?。ㄎ也恢浪麄?cè)趺刺^了蘋果的簽名檢查,我知識(shí)不夠),跳過了baseband firmware對(duì)的NOR 中
token(這個(gè)token就是hash過的NCK掛鉤的值)檢查,然后發(fā)送AT+CLCK給baseband要求解鎖,由于token的檢查已經(jīng)被跳過這個(gè)時(shí)候?qū)嶋H上發(fā)送什么NCK
iPhone都會(huì)同意解鎖,這樣解鎖后的baseband會(huì)修改seczone中的lockstate
table,但是這么做的結(jié)果就是NOR中的數(shù)據(jù)不再是"合法"的了,因?yàn)槲覀兏静恢勒嬲軌驖M足token是NCK什么,只不過因?yàn)樵?baseband
firmware上打了補(bǔ)丁,告訴baseband firmware不要檢查這個(gè)token而已。
這么做過之后,你的baseband
firmware就是打過補(bǔ)丁的了,不是蘋果原來的baseband firmware了。
這也造成了后來的1.1.1升級(jí),Apple升級(jí)了baseband
firmware,結(jié)果不合法的lockstate table 導(dǎo)致了iPhone -> 磚頭。
iPhoneSimFree IPSF
最開始大家都認(rèn)為IPSF的解鎖是最完美的,也很多人認(rèn)為IPSF的解鎖就是完美解鎖,因?yàn)镮PSF的解鎖過程需要聯(lián)系他們的服務(wù)器,不少人相信他們通過走后門或者其他內(nèi)奸手段,得到了Apple
iPhone這個(gè)unlock code數(shù)據(jù)庫,所以能夠提供真解鎖,現(xiàn)在廣泛相信的是,這是一個(gè)天大的謊言。
根據(jù)DEV
TEAM的研究,IPSF的解鎖原理是:他們找到了Apple iPhone中RSA算法的一個(gè)漏洞,一個(gè)很大的Bug,通過利用這個(gè)BUG,他們把NOR
seczone中的token清零(全部清空),然后再構(gòu)造一個(gè)特別的lockstate table。iPhone在啟動(dòng)校驗(yàn)token / locktable
合法性時(shí)候,因?yàn)檫@個(gè)BUG,導(dǎo)致這個(gè)全部是0的token + locktable得以合法驗(yàn)證,所以iPhone認(rèn)為這個(gè)機(jī)器是合法解鎖的了。
這個(gè)bug在1.1.1升級(jí)的時(shí)候蘋果還沒有補(bǔ)上,所以IPSF的機(jī)器在升級(jí)1.1.1之后可以繼續(xù)保持unlock。
但是,這么做的后果是不堪設(shè)想的!我上面說了,每個(gè)機(jī)器的token都不一樣,每個(gè)iPhone的token全世界唯一,除了蘋果知道,沒有人知道,
IPSF把iPhone的token清零,目前在這個(gè)bug還沒有補(bǔ)上的時(shí)候,IPSF解鎖過的iPhone還能用,但是當(dāng)蘋果在修補(bǔ)這個(gè)漏洞后,要么就別升級(jí),要么升級(jí)后IPSF
iPhone就變廢鐵了,而且基本上無藥可救。
Anysim 1.1.1
最新推出的Anysim
1.1.1應(yīng)該是目前最好的軟解,Anysim 111的原理和iUnlock不一樣,Anysim 111完全不去動(dòng)seczone里的token和lockstate
table,整個(gè)解鎖過程不需要發(fā)送AT+XCLK指令,如果你解鎖用minicom運(yùn)行后就知道lockstate table還是鎖住的狀態(tài),anysim
111用的是在baseband firmware上打補(bǔ)丁,跳過了所謂mnc檢查(network
check,實(shí)際是什么我也不是很明白)完全欺騙了iPhone,讓iPhone認(rèn)為自己解鎖了。這個(gè)方法的好處就是:seczone完全沒有動(dòng)過,內(nèi)容完全,之后如果Apple再升級(jí)baseband
firmware,大不了我們的手機(jī)重新鎖死,應(yīng)該是不會(huì)再變磚了。
所以,目前所謂變“處女"的方法,就是把iUnlock修改seczone的locktable重新改回來。至于IPSF解鎖后破壞的seczone,就得聽天由命了……
anysim 1.1.1p
現(xiàn)在anysim出了1.1.1p,看google
code上只有一個(gè)簡(jiǎn)短的說明:“fix the counter problem”,也就是說:“解決了計(jì)數(shù)器的問題”。
我也不明白這個(gè)到底是怎么回事,hackint0sh上曾經(jīng)有討論過anysim
111在更新了baseband firmware后,還是發(fā)送了XCLCK這個(gè)指令,而按照anysim
111的工作原理,這個(gè)指令完全不需要而且也完全不可能會(huì)成功。而且執(zhí)行這個(gè)命令會(huì)增加一次NCK嘗試解鎖計(jì)數(shù)。據(jù)說是因?yàn)槭д`,在anysim 102 ->
111的時(shí)候這段代碼忘記剔除了。
但是這個(gè)帖子當(dāng)時(shí)就被罵是胡說八道,據(jù)說源代碼上已經(jīng)把調(diào)用標(biāo)記了,不會(huì)再調(diào)用了,反正看到最后也是沒有結(jié)果。而且也不能確定這個(gè)所謂的計(jì)數(shù)器,就是指NCK計(jì)數(shù)器。
我的看法是,你如果現(xiàn)在要解鎖,就用anysim
1.1.1p吧,如果你已經(jīng)用了anysim 1.1.1解鎖,那也完全沒有關(guān)系,反正NOR
seczone完全可以重寫(回復(fù)出廠狀態(tài),恢復(fù)NCK解鎖計(jì)數(shù)器為0),這個(gè)NCK計(jì)數(shù)器也就已經(jīng)是一個(gè)擺設(shè)了(只要你不要沒事就嘗試解鎖玩就行了,如果你沒事就一直嘗試用iUnlock發(fā)送XLCK指令玩,又沒有刷回seczone,到時(shí)候NCK計(jì)數(shù)器超了,會(huì)發(fā)生什么事情我不知道)。
現(xiàn)在解鎖了,將來是否能用蘋果推出的官方解鎖
如果你現(xiàn)在已經(jīng)解鎖了,并且解鎖工具是用iUnlock
1.0.2 / anysim 1.0.2 / anysim 1.1.1 / anysim
1.1.1p,那么將來蘋果推出官方解鎖的時(shí)候,你是可以使用蘋果官方的辦法來解鎖的,所需要的就是重新修復(fù)seczone(1.02)或者重新刷回原廠
baseband firmware(1.0.2 / 1.1.1)
如果你現(xiàn)在已經(jīng)解鎖了,并且解鎖工具用的是iPhoneSimFree.com推出的付費(fèi)方案的話,我也不知道你將來是否能用官方的辦法。我個(gè)人覺得:你的機(jī)器將來可能連升級(jí)1.1.2或者更高級(jí)的firmware都不行了,更別說解鎖了,你唯一能希望的就是iPhoneSimFree.com在解鎖的時(shí)候備份了你的seczone
另外:
覺得自己運(yùn)氣實(shí)在太好的朋友,真的想要嘗試猜測(cè)自己的NCK的:
先刷回原廠firmware(恢復(fù)一次即可),然后參考n000b的這個(gè)帖子:http://bbs./v...,按照這個(gè)帖子的辦法進(jìn)入minicom,在minicom輸入:
AT+CLCK="N",0,"NCK碼"
NCK碼從00000000 到
99999999,8位
然后再用n000b帖子中的辦法判斷是否已經(jīng)解鎖。
警告:這個(gè)辦法完全完全完全是按照目前的知識(shí)得出來的,是否能成功,是否有危險(xiǎn),我完全不知道,如果你真的要嘗試,那我先謝謝你為iPhone機(jī)友作出的貢獻(xiàn),請(qǐng)?jiān)趪L試后告訴我們你的壯烈經(jīng)過。
警告:如果你嘗試了超過NCK計(jì)數(shù)器的次數(shù)還失敗了,你的iPhone很有可能就永遠(yuǎn)屬于AT&T了