破译普通密码的方法

是人类自己编的密码需要破译,不是电脑密码

工作中常遇到忘记了计算机的开机密码,以至于启动不了电脑,或者有需要破译开机密码的情况。目前常用的方法是打开机箱,对CMOS进行放电处理,清空CMOS中的内容。如果在某些特殊场合需要保留其内容,或者在机箱不便打开的情况下,能否用其它途径来破译开机密码呢?

目前主流计算机的BIOS均为AWARD公司生产的,CMOS开机密码最长为8个字符,采用穷举法看似有非常多的键盘组合,但经过加密运算后的有效“密文”只有16位,即65536种,因此有大量“重复”的密码,即虽然输入的键盘组合不一样,但CMOS中的密文是一样的,实际效果是一样的。对应这65536种密文,每个密文只需找出一种键盘组合即可。本文讲述如何用单片机来计算出这65536种键盘组合,并输给计算机,采用穷举法来破译CMOS密码。

一、CMOS密码加密运算方法

CMOS加密运算是:从低位到高位每一位的ASCII码左移2(n-1)位之后相加,其中n为位数,相加结果即为密文,存入CMOS。如果密码位数较多,运算结果超过16位,则将超出16位的部分再与低16位相加,保留此结果。

以4位密码“abcd”为例,计算机内部是将“d”的ASCII码64H保留,“c”的ASCII值63H向左移2位,b的ASCII值62H向左移4位,a的ASCII值61H左移6位,然后将这四个数相加得到一个16位数,此数2050H即为运算后的密文,存入CMOS。用十进制数表示此过程即为:100+99�4+98�16+97�64=8272转为十六进制为2050H。

二、密文向密码反推算法

由加密算法可知,肯定会存在多个密码运算后形成的密文相同的情况,因此用一个密文,可以反推出很多组密码来,我们只需要其中一组即可。

从10进制的角度出发,密码的ASCII码与密文的关系符合如下方程:

X1×1+X2×4+X3×16+X4×64+X5×256… …=密文

其中X1,X2,X3,X4等分别为密码从低到高位的ASCII码。这是一个不定方程,所有符合下列两个条件的解都满足要求:

1. X1,X2,X3,X4……为整数。

2. X1,X2,X3,X4……的值大于等于32,小于等于126(键盘向计算机输入的字符ASCII值最小为32,最大126)。

求出任意一组符合要求的解后,每一个数字查ASCII码表,换成对应的字符,即可作为计算机开机密码。以刚才密码为“abcd”为例,运算后密文十进制数为8272,用凑数的办法可知以下等式也成立:104+98�4+98�16+97�64=8272,查ASCII码表可知�97�98�98�104对应的字符为a,b,b,h,因此“abbh”也可以做为开机密码开启电脑。用程序来求解这个方程有多种计算方法。最简单的采用几个变量累加的办法求解,但收敛速度慢,有其它收敛速度非常快的算法,本文不再赘述。

三、键盘接口原理

PC系列键盘采用行列扫描法识别按下的键,键盘的扫描控制电路的核心是8048单片机,执行固化在ROM中的键盘扫描程序,当有键按下时,产生接通扫描码,而该按键松开时,产生断开扫描码。键盘向计算机发送的数据为扫描码,与该键的ASCII码并不相同,其关系如下表所示,计算机接收到此扫描码可求出按键的ASCII码:

键的接通扫描码用上表所示一个字节表示,断开扫描码由接通扫描码加上80H而得。例如,“D”键按下后又松开,则键盘控制器先输出23H,再输出A0H。

目前主机板上键盘的插座主要有两种接口,一种为老式的大五芯接口:其接口定义为:1�Clock 2�Data 3�Not connected 4�GND 5�Vcc+5V

目前较常见为小的六芯接口:其接口定义:1:Data 2�not connected 3� GND 4�VCC+5V 5�CLOCK 6�NOT CONNECTED,键盘扫描码经8048单片机通过data和clock两根信号线进行串行移位输出,串行序列发送时以clock信号的上升沿为准。四、用单片机来实现

单片机硬件很简单,从键盘插头中的data与clock信号接至单片机的两个I/O口,键盘接口中的VCC与GND信号直接向单片机供电,通过对单片机I/O口编程,控制data与clock的动作,实现向计算机传输数据。单片机内部从0开始,一直到65535,每一个密文经过程序反推出一组“键盘密码”,查出对应的键盘扫描码,依次发向计算机,然后发回车键。计算机接收到密码和回车后,开始校验密码,若密码不能通过验证,计算机会提示用户密码错误,单片机再发送下一组密码,依次循环。每秒种计算机可校验约10组密码,65536组密码两个小时可全部校验完毕,对于5位以下的密文,几分钟即可通过校验。

操作方法:按正常顺序打开计算机,在计算机提示输入密码的时候,将键盘插头拨下,把单片机上的键盘插头插在主机上,单片机上电后自动向计算机发送各组数据,直到其中有一组数据通过密码校验,计算机加载操作系统。此时将单片机电路拨下,将键盘插上即可正常操作。操作系统加载成功后,可用其它软件获取CMOS密码,下次启动计算机时即可用获取的密码进入操作系统。

本方法已采用AT89C51单片机上,用Franklin C编程实现,在多台BIOS为AWARD公司生产的计算机上试验通过
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-11-13

美国联邦调查局,是世界著名的美国最重要的情报机构之一,隶属于美国司法部,英文全称Federal Bureau of Investigation,英文缩写FBI。

本回答被网友采纳
相似回答