用DOS命令解除UNIX管理員密碼
----用app讀出它(CX和DX的賦值分別改為0209和0080)。
----用dump命令可看出偏移1040H至107FH正是/etc目錄的i-node。我們把它的數據塊也讀出來。先計算第一個數據塊的物理地址。將2D0700H代入公式,算出/etc第
一個數據塊物理地址是3柱面50頭27扇。
----用app讀出它(CX和DX的賦值分別改為031B和3280)。
----用dump命令可看出偏移11A0H至11AFH是/etc目錄下的passwd文件名。我們用enter命令把它改成zls,然后再運行app(AX的賦值應改為0301)。
----現在退出DEBUG命令。
----取出軟盤,重啟機器,引導UNIX操作系統。----按照引導順序,UNIX顯示出硬件配置信息后就該提問超級用戶口令了,但就在此時它卻突然發現/etc/passwd文件失蹤了!(其實只是被改名為zls,但UNIX對此一無所知。)沒有了這個文件,UNIX無法提問超級用戶口令,于是它只好在屏幕上顯示如下 :
信息并允許用戶以系統管理員身份直接進入系統維護態:
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
#
----進入維護態后,當然就可以為所欲為了。但最好先設置一個新的超級用戶口令。要想這樣做,首先必須恢復passwd文件名。
#mv/etc/zls/etc/passwd
----然后,就可以用/bin/passwd命令設置新的超級用戶口令了。
結束語
----在本文行將結束時,我們再來作一個小小的總結。
----傳統方案有操作平臺、操作工具和操作對象局限性。新方案則突破了這三大局限性。
----一、新方案突破了操作平臺局限性。傳統方案的操作平臺必須是UNIX,而新方案則是DOS。DOS比UNIX普及得多,中國的絕大部分計算機用戶對UNIX陌生,但對DOS卻相當熟悉,使用起來也有親切感。
----二、新方案突破了操作工具局限性。傳統方案的操作工具必須是兩張緊急啟動軟盤,而新方案僅使用一張DOS系統盤,其上只需拷貝一個DEBUG.EXE文件。緊急啟動軟盤只能專盤專用,DOS系統盤卻不存在這個問題--用任何一臺機器上的DOS制作出的系
統盤,可以用來解決任何一臺機器上的UNIX超級用戶口令被忘記的問題。至于用來訪問物理硬盤的軟件,當然更不是非DEBUG不可,任何軟件--只要支持訪問物理盤--均可。作者推薦使用Norton8.0軟件包里的diskedit程序,對不懂匯編語言編程的人來說該程序無疑是一個最好的選擇。
----三、新方案突破了操作對象局限性。傳統方案的操作對象是文件系統管理下的文件,而新方案撇開了文件系統,直接在底層修改數據。
----最后需要說明的是,對于SCOOpenServerRelease5,因條件所限,作者還沒有使用過,所以關于新方案在該版本上執行時步驟是否需要修改以及如何修改的問題,如果有機會,作者會加以適當的補充。
首先需要指出,由于文章篇幅和性質的限制,本文不可能將新方案實施過程中涉及到的所有知識以入門講座的方式加以介紹。因此,在閱讀本小節前,讀者應具備下列基礎:熟悉硬盤主引導扇區和UNIX分區及UNIX文件系統的構造(這對UNIX系統管理員來說不成問題)、了解中斷13H入口參數含義、使用過DEBUG命令。一臺COMPAQDESKPROXL/466服務器,主板內含PCISCSI-2控制器一個,上接富士通硬盤一只,該硬盤主要參數為:1041柱面,64頭,32扇。硬盤上裝有SCOUNIXSystemV/386Release3.2operatingsystemVersion4.2。現在假設其超級用戶口令被忘記。首先,隨便找一臺安裝了DOS的計算機,制作一張DOS系統盤,并在系統盤上拷貝一個DEBUG.EXE文件。
C:DOS>format/sa:
C:DOS>copydebug.exea:
----然后將該盤插入COMPAQ服務器A驅,開機啟動DOS操作系統,執行DEBUG命令。
A:>debug
現在我們就編寫一段匯編語言程序(以下簡稱app),來讀出硬盤0柱0頭1扇區的內容。該扇區存放的是主引導記錄,讀出它是為了確定SCOUNIX分區的起始位置。app是調用中斷13H實現的,以后我們還要反復用到它,當然入口參數將隨所讀內容物理地址的變化而變化。
-a
2039:0100MOVAX,0201
2039:0103MOVBX,1000
2039:0106MOVCX,0001
2039:0109MOVDX,0080
2039:010CINT13
2039:010EINT20
2039:0110
-g
Programterminatednormally
現在我們可以用dump命令查看被讀到內存里的扇區內容。從偏移11BEH處開始是分區表,其中類型標志字節為63H的分區是SCOUNIX分區。該分區起始于1柱面0磁頭1扇。
下面,讀出UNIX根文件系統i-node表的第一個扇區,以確定根目錄的物理位置。
根據UNIX分區起始位置可知根文件系統始于2柱0頭1扇。并且,由于2柱0頭1扇是引導塊,2扇是超級塊,3、4扇為間隔,所以i-node表必定始于第5扇。
我們用app讀出它(CX的賦值應改為0205)。
讀出后用dump命令查看偏移1040H至107FH的64個字節,這就是2號i-node,即根目錄的i-node。
----下面我們就根據i-node計算根目錄在硬盤上的物理地址。
----我們從偏移1040H看起:
----ED41H表示文件類型與存取權限為drwxr-xr-x;
----1000H表示文件連結數為16;
----0000H表示文件屬主ID為0;
----0200H表示文件組ID為2;
----80020000H表示文件字節數為640個;












評論