首先需要指出,由于文章篇幅和性質(zhì)的限制,本文不可能將新方案實(shí)施過程中涉及到的所有知識(shí)以“入門講座”的方式加以介紹。因此,在閱讀本小節(jié)前,讀者應(yīng)具備下列基礎(chǔ):熟悉硬盤主引導(dǎo)扇區(qū)和UNIX分區(qū)及UNIX文件系統(tǒng)的構(gòu)造(這對UNIX系統(tǒng)管理員來說不成問題)、了解中斷13H入口參數(shù)含義、使用過DEBUG命令。一臺(tái)COMPAQDESKPROXL/466服務(wù)器,主板內(nèi)含PCISCSI-2控制器一個(gè),上接富士通硬盤一只,該硬盤主要參數(shù)為:1041柱面,64頭,32扇。硬盤上裝有 SCOUNIXSystemV/386Release3.2operatingsystemVersion4.2?,F(xiàn)在假設(shè)其超級(jí)用戶口令被忘記。首先,隨便找一臺(tái)安裝了DOS的計(jì)算機(jī),制作一張DOS系統(tǒng)盤,并在系統(tǒng)盤上拷貝一個(gè)DEBUG.EXE文件。  

C:DOS>format/sa:  

C:DOS>copydebug.exea:  

然后將該盤插入COMPAQ服務(wù)器A驅(qū),開機(jī)啟動(dòng)DOS操作系統(tǒng),執(zhí)行DEBUG命令。  

A:>debug  

現(xiàn)在我們就編寫一段匯編語言程序(以下簡稱app),來讀出硬盤0柱0頭1扇區(qū)的內(nèi)容。該扇區(qū)存放的是主引導(dǎo)記錄,讀出它是為了確定SCOUNIX分區(qū)的起始位置。app是調(diào)用中斷13H實(shí)現(xiàn)的,以后我們還要反復(fù)用到它,當(dāng)然入口參數(shù)將隨所讀內(nèi)容物理地址的變化而變化。  

-a  

2039:0100MOVAX,0201  

2039:0103MOVBX,1000  

2039:0106MOVCX,0001  

2039:0109MOVDX,0080  

2039:010CINT13  

2039:010EINT20  

2039:0110  

-g  

Programterminatednormally   

現(xiàn)在我們可以用"dump"命令查看被讀到內(nèi)存里的扇區(qū)內(nèi)容。從偏移11BEH處開始是分區(qū)表,其中類型標(biāo)志字節(jié)為63H的分區(qū)是SCOUNIX分區(qū)。該分區(qū)起始于1柱面0磁頭1扇。  

下面,讀出UNIX根文件系統(tǒng)i-node表的第一個(gè)扇區(qū),以確定根目錄的物理位置。  

根據(jù)UNIX分區(qū)起始位置可知根文件系統(tǒng)始于2柱0頭1扇。并且,由于2柱0頭1扇是引導(dǎo)塊,2扇是超級(jí)塊,3、4扇為間隔,所以i-node表必定始于第5扇。  

我們用app讀出它(CX的賦值應(yīng)改為"0205")。  

讀出后用"dump"命令查看偏移1040H至107FH的64個(gè)字節(jié),這就是2號(hào)i-node,即根目錄的i-node。  

 下面我們就根據(jù)i-node計(jì)算根目錄在硬盤上的物理地址。  

我們從偏移1040H看起:  

ED41H表示文件類型 與存取權(quán)限為"drwxr-xr-x";  

1000H表示文件連結(jié)數(shù)為16;  

0000H表示文件屬主ID為0;  

0200H 表示文件組ID為2;  

80020000H表示文件字節(jié)數(shù)為640個(gè);

DA0500H表示第一個(gè)數(shù)據(jù)塊地址。由于其它12個(gè)數(shù)據(jù)塊地址均為0,所以可斷定根目錄在硬盤上只占了一個(gè)數(shù)據(jù)塊?,F(xiàn)在我們必須依據(jù)DA0500H計(jì)算 出這個(gè)數(shù)據(jù)塊存放在硬盤的第幾柱面、第幾磁頭、第幾扇區(qū)。計(jì)算公式如下:  

C=TRUNC(P/(H*S))  

C1=C0+C  

H1=TRUNC((P-C*H*S)/S)  

S1=P-C*H*S-H1*S+1  

其中:  

C1、 H1、S1分別為數(shù)據(jù)塊物理地址柱面號(hào)、磁頭號(hào)、扇區(qū)號(hào)  

P等于數(shù)據(jù)塊地址翻譯成十進(jìn)制數(shù)后再乘以2  

H為硬盤磁頭 數(shù)  

S為每磁頭扇區(qū)數(shù)  

C0為根文件系統(tǒng)起始柱面  

C只是一個(gè)中間量  

將 DA0500H代入上述公式,并根據(jù)H=64,S=32,C0=2,可算出 C1=3,H1=29,S1=21。因此根目錄在硬盤上的物理地址為:3柱面29頭21扇。  

用app把它讀出來(  CX 和DX的賦值應(yīng)分別改為"0315"和"1D80")。  
讀出后用"dump"命令查看,可以發(fā)現(xiàn)偏移1050H至105FH是 /etc目錄的i-node號(hào)和文件名,其中i-node號(hào)為22H,即34D。因?yàn)槊總€(gè)扇區(qū)有8個(gè)i-node,所以34號(hào)i- node必定在2柱面0頭9扇。  

用app讀出它(CX和DX的賦值分別改為"0209"和"0080")。  

用"dump" 命令可看出偏移1040H至107FH正是/etc目錄的i-node。我們把它的數(shù)據(jù)塊也讀出來。先計(jì)算第一個(gè)數(shù)據(jù)塊的物理地址。將2D0700H代入 公式,算出/etc第一個(gè)數(shù)據(jù)塊物理地址是3柱面50頭27扇。  

用app讀出它(CX和DX的賦值分別改為"031B" 和"3280")。  

用"dump"命令可看出偏移11A0H至11AFH是/etc目錄下的passwd文件名。我們 用"enter"命令把它改成zls,然后再運(yùn)行app(AX的賦值應(yīng)改為0301)。   

現(xiàn)在退出DEBUG命令。  

取 出軟盤,重啟機(jī)器,引導(dǎo)UNIX操作系統(tǒng)。  

按照引導(dǎo)順序,UNIX顯示出硬件配置信息后就該提問超級(jí)用戶口令了,但就在此時(shí)它卻突然 發(fā)現(xiàn)/etc /passwd文件失蹤了!(其實(shí)只是被改名為zls,但UNIX對此一無所知。)沒有了這個(gè)文件,UNIX無法提問超級(jí)用戶口令,于是它只好在屏幕上顯 示如下 :

信息并允許用戶以系統(tǒng)管理員身份直接進(jìn)入系統(tǒng)維護(hù)態(tài):  

su:Unknownid:root  

/etc/tcbck:file/etc/passwd  

ismissingorzerolength  

/etc/tcbck:eitherslash(/)ismissingfrom  

/etc/auth/system/filesortherearemalformedentries  

in/etc/passwdor/etc/group  

/etc/smmck:restoremissingfiles  

frombackupordistribution.  

INIT:SINGLEUSERMODE  

****PASSWORDFILEMISSING!****  

EnteringSystemMaintenanceMode  

#

進(jìn)入維護(hù)態(tài)后,當(dāng)然就可以“為所欲為”了。但最好先設(shè)置一個(gè)新的超級(jí)用戶口令。要想這樣做,首先必須恢復(fù) passwd文件名。  

#mv/etc/zls/etc/passwd  

然后,就可以用/bin/passwd命令 設(shè)置新的超級(jí)用戶口令了。  

結(jié)束語  

—-在本文行將結(jié)束時(shí),我們再來作一個(gè)小小的總結(jié)。  

—-傳統(tǒng)方案有操作平臺(tái)、操作工具和操作對象 局限性。新方案則突破了這三大局限性。  

一、新方案突破了操作平臺(tái)局限性。傳統(tǒng)方案的操作平臺(tái)必須是UNIX,而新方案則是DOS。 DOS比 UNIX普及得多,中國的絕大部分計(jì)算機(jī)用戶對UNIX陌生,但對DOS卻相當(dāng)熟悉,使用起來也有親切感。  

二、新方案突破 了操作工具局限性。傳統(tǒng)方案的操作工具必須是兩張緊急啟動(dòng)軟盤,而新方案僅使用一張 DOS系統(tǒng)盤,其上只需拷貝一個(gè)DEBUG.EXE文件。緊急啟動(dòng)軟盤只能專盤專用,DOS系統(tǒng)盤卻不存在這個(gè)問題–用任何一臺(tái)機(jī)器上的DOS制作出的 系  

統(tǒng)盤,可以用來解決任何一臺(tái)機(jī)器上的UNIX超級(jí)用戶口令被忘記的問題。至于用來訪問物理硬盤的軟件,當(dāng)然更不是非DEBUG不 可,任何軟件–只要支持訪問物理盤–均可。作者推薦使用Norton8.0軟件包里的diskedit程序,對不懂匯編語言編程的人來說該程序無疑是 一個(gè)最好的選擇。  

三、新方案突破了操作對象局限性。傳統(tǒng)方案的操作對象是文件系統(tǒng)管理下的文件,而新方案撇開了文件系統(tǒng),直接在底層 修改數(shù)據(jù)。  

最后需要說明的是,對于SCOOpenServerRelease5,因條件所限,作者還沒有使用過,所以關(guān)于新方案在該 版本上執(zhí)行時(shí)步驟是否需要修改以及如何修改的問題,如果有機(jī)會(huì),作者會(huì)加以適當(dāng)?shù)难a(bǔ)充。

分享到

wangliang

相關(guān)推薦