用DOS命令解除UNIX管理员密码(5)


  ----三、新方案突破了操作对象局限性。传统方案的操作对象是文件系统管理下的文件,而新方案撇开了文件系统,直接在底层修改数据。
  ----最后需要说明的是,对于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个;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wzgdsp.html