伯樂線上注:
- 本文來自文章作者 Duke(@OvationDuke)的投稿,其他媒體如需轉載,請先聯絡獲得作者的許可。
- 本文只做技術交流之用,對於應用本文涉及到技術所造成任何損失,均與作者和伯樂線上無關,請自行負責。
一般情況下沒人會去設系統BIOS管理員密碼(Supervisor Password,以下簡稱SVP)。但是如果你很無聊,設定了SVP,並且又忘記了,並不代表你不能用電腦了,只要你不需要進入BIOS更改系統設定還是可以用電腦的。但是有些情況下開機就要你輸入BIOS SVP密碼,比如BIOS設定出現錯誤,開機無法通過自檢,系統一定要你進入BIOS重設引數,這種情況下電腦生產廠商會告訴你,沒救了,只有換主機板了。我在08年購買了一臺ThinkPad T400,後來很快被偷了,然後又被Fremont的警察找到還給了我(感謝他們),於是我設定了BIOS SVP,因為那臺電腦幾乎閒置沒用,所以我也不記得當初的密碼是什麼了,最近發現開機就必須要我輸入SVP。然後打電話到聯想北美Thinkpad維修中心,被告知只能換主機板了,大概要400刀。接下來這篇文章就是告訴你怎樣只用一塊錢就找回你的SVP密碼。
BIOS本身是寫在ROM上的,BIOS的引數存放在一小塊特殊的RAM中,叫做CMOS Memory,有專門的電池給CMOS Memory供電保持RAM上資料。多年前的電腦SVP是儲存在CMOS Memory上的,所以拔掉電池放電就能夠清除SVP。這裡順便說一下,Thinkpad系列電腦還可以設定開機密碼(不同於SVP),開機密碼是存放在CMOS Memory上的,所以你如果忘記開機密碼的話,開啟鍵盤下的蓋子,找到一個黃色鈕釦電池(CMOS Battery)拔掉和主機板的連線,過一分鐘再連上然後開機,進入BIOS從新設定引數。不同於開機密碼,Thinkpad是把SVP加密後存放在eeprom上的,eeprom能夠永久儲存,所以放電對SVP不起任何作用。
我們的思路很簡單,讀取eeprom的資料,解密SVP。我手裡正好就有一個DediProg SF100專門讀寫ISP eeprom的工具。但是T400用的是I2C介面的eeprom跟ISP介面不一樣。I2C介面只需要兩個埠即可讀寫,比ISP還要簡單些。網路上有人已經做出了很簡單的通過Serial Port讀I2Ceeprom的電路。我在這裡借用簡化後的電路圖。原文可以在這裡找到http://sodoityourself.com/hacking-ibm-thinkpad-bios-password/ 。但是這篇文章很老了,而且步驟不詳細。
為了組成這個電路你需要準備兩個2.2千歐的電阻,兩個5.1v的穩壓二極體,按照圖示分別連線到Serial Port的4587埠上,另一端連到eeprom I2C的SDA和SCL兩個引腳。買這些東西,我只花了一美元。
下面要做的是找到T400的eeprom的位置。T400用的NXP的P24S08 eeprom,你需要開啟T400後蓋,如圖所示找到P24S08的SCL和SDA位置。
同時下載軟體PonyProg。PonyProg通過serial port讀寫eeprom。首先需要正確配置的eeprom型號。P24S08是8bit I2C,型號24xxx。設定好之後,開啟T400電源,等到Thinkpad Logo出現後即將消失那一瞬間(timing很重要),將以上電路連線到eeprom的SDA和SCL引腳上。同時點選PonyProg的read button,你會發現eeprom的內容被讀到PonyProg上,然後將其儲存為bin二進位制檔案。這個時候你就可以用軟體IBM Pass 2.0 Lite解碼bin檔案,從解碼的結果中很容易發現疑似密碼的字串。這個電路和PonyProg配合是一個非常不錯的DIY工具可以讀取任何I2Ceeprom內容。
如果你不在乎知道以前的SVP,讀eeprom內容和解碼這兩步完全可以省略。在連線上SCL和SDA埠後,不需要輸入SVP就可以進入BIOS,有些時候你會發現設定項Supervisor Password是Disabled(取決於連線的timing,需要多試幾次),然後你就可以Enable該選項,不需要輸入以前的SVP,只要重設密碼,儲存重啟就行了。
Ovation Duke
2013-4-13