通俗基础教程
电脑操作教程
电脑怎样拨号上网
如何做个人网页
怎样做局域网
Word教程(文字处理)
图形图象处理入门
经典提高教程
怎样使用代理服务器
如何做无盘工作站
Photoshop教程
Dreamweaver3教程
Flash4&5教程
Firework3教程
Frontpage2000教程
Authware教程
Office2000教程
如何制作动画图片
OICQ&ICQ使用方法

高手学习指南

硬件升级技巧
CGI教程
ASP教程

PHP教程

注册表使用技巧
路由器的设置
网站建设指南
SQL
最近更新:
操作使用
相关内容

动态改变CMOS密码的方法


现代微机的CMOS设置中均有密码,但单一的密码可能被旁人偷看,例如公共机房的超级用户专用机等。那么CMOS的密码能否动态改变?这样较为保险,经过思考,想出了一种方法,思路如下:

微机中的CMOS信息是可以更改的,因此我们可以编制类似的程序,将CMOS中的信息读出保存,需要时从磁盘文件上恢复.一般来说,CMOS主体信息长度为64字节,其中包括各种计算机参数和CMOS密码,其索引端口号为70H,数据端口号为71H,有些资料上介绍开机状态下清除CMOS密码用的下面的两条DEBUG指令:

-O 70,23

-O 70,34

其中23和34为随机数,这种方法清除CMOS的原理是改写CMOS的第23H字节的内容为34H,只要原CMOS第23H字节的内容不是34H,就会导致计算机在启动时CMOS数据校验通不过而使CMOS数据失效,所以在一般情况下,我们不能直接修改CMOS中的数据.但是我们如果修改后使其通过校验的话,则也可以使其内容满足我们的需要,但一般人对其数据校验原理并不知情,我们可否用其它的方法来间接实现呢?可以,本人实现的方法就是保存数次CMOS的设置,然后根据需要将其从磁盘上恢复到CMOS上去.下面是用TC 2.0实现的将CMOS读出保存为磁盘文件CDDATA.DAT的程序:
#include <dos.h>
#include <stdio.h>
#include <stdlib.h>
main()
{
FILE *fp;
int indexport=0x70,dataport=0x71,i;
char data[256]; /*此程序读出256字节*/
fp=fopen("c:\\cdata.dat","wb");
for (i=0;i<256;i++)
{outportb(indexport,i); /*定位数据端口*/
data[i]=inportb(dataport);/*从端口读字节*/
}
fwrite(data,1,256,fp);/*写字节到文件*/
fclose(fp);
}
上述的程序将当前的CMOS数据读出并保存.根据此原理,我们可以在CMOS中分别设置三次密码,每次保存为一个文件,三个文件分别取名,如:cdata01.dat,cdata02.dat,cdata03.dat,如保存的CMOS密码分别为"111","222","333",然后随机的从磁盘文件读出写入CMOS中,开机时就不定是哪一个密码了,最多试三次就可解密,但旁人无法知其奥妙,就不好将密码试出来了.从文件将密码读出的程序如下:
#include <dos.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
char *filename[]={"c:\\cdata01.dat","c:\\cdata02.dat","c:\\cdata03.dat"};
main()
{
FILE *fp;
int indexport=0x70,dataport=0x71,i;
char data[256],num;
num=random(3);
fp=fopen(filename[num],"rb");/*随机取三个文件名*/
fread(data,1,256,fp);
for (i=0;i<256;i++)
{outportb(indexport,i); /*定位数据端口*/
outportb(dataport,data[i]);
}
fclose(fp);
}
将此文件编译后加在自动批处理文件中,每次启动后,自动恢复三个密码中的一个,实现了CMOS动态密码.在以上的思路中,可以编程控制密码根据某种情况具体变化,就看你怎么想了.

启动?先关闭吧!
小秘诀:替电脑驱魔
Windows NT4.0安装及自动安装
NT下的修理工具
怎样提高WindowsNT的使用效率
Windows NT4.0几十问
BIOS与CMOS
什么是CMOS
浅谈CMOS
CMOS密码破解全攻略
忘记CMOS密码之后
动态改变CMOS密码的方法
 
 
 
 
 
教程站
收集整理
服务大家