cmos密码破解原理介绍
有关cmos密码破解及原理
我们的天性就是破坏!!!!
…… ……
…… ……
哈哈,Sorry,失态了。我叫糖醋排骨,今天由我跟大家上一节破解课,我实在是不讨厌破坏,因为我们要防止一切阻挠我们的东西存在,首先呢,就是可恼的CMOS密码。尽管有很多文章介绍了这方面的知识,我还是想介绍一点与单纯破坏不同的东西以及原理。
首先介绍CMOS,你要是不感兴趣,可以睡觉。
经过我的努力,总算找到了CMOS中128个字节各自的功用(查书查了我一天):
00 ~~ 09 系统时钟
0A ~~ 0D 寄存器状态
0E 诊断状态 (不知道什么意思)
0F 下电状态 (不知道什么意思)
10 软驱类型
11 密码域/保留 (还是不清楚是什么)
12 硬盘类型
14 设备字节
15 ~~ 18 内存 (基本,扩充)
19 ~~ 1A 硬盘参数
2E ~~ 2F 校检和 (非常重要,以后有用!!)
30 ~~ 31 扩充内存
32 世纪值
33 标志码
38 ~~ 3B 密码储存区域 (关键的东东!)
没提到的就都是保留字节。
下面说说最基本的破解方法及原理:
debug
-o 70 10
-o 71 11
-q
这是流传得最广泛的破解方法,破解率为 99.609375%,这个数字不是胡诌的,在写入的地方总共有256种可能,万一你倒霉到写入的和原来的一样,就等于白干了,所以破解率为255/256为99.609375%。原理在于上面所说的2E~~2F字节储存的内容,它是10~~2D单元的和,每次计算机都要校检,如果不对的话,则需要重新设置。无耻的“黑客”(如果算得上的话)利用了这一点来破解,尽管它也许并不知道原理。其中端口70h是个只写的端口,设置CMOS中数据的读写地址,端口71h就是在70h设置的地址进行读写的端口(很拗口)。上面两句意思是设置地址为10h,然后写入数据11。你也可以用其他的高级语言实现:
Basic out 70,10:
out 71,11:
(输出语句是 out 端口值,写入数据)
C/C++ outport(70,10);
outport(71,11);
(输出函数是 void outport(int,int))
很遗憾,我只知道Basic和C/C++,而且Basic是初中学的,C++是大学才接触,如果有错的,希望同学们能指出来。
下面就是最精彩的了,密码的加密与破解原理!!请大家坐好,那位同学,请不要乱动,嗯……很好,我喝口水就来,渴死我了,现在是15:15,天气异常的炎热,成都怎么会这样呢……
上面说了38h~~3Bh是密码储存的区域,具体来说,39h和3Bh长期为零,估计没有什么用处(事实上也是),关键呢,就在38h和3Ah,这两个字节储存了可恶的密码,我们要搞定它!!
有的密码长达7、8位,怎么可以只存在2个字节里呢?原因就是经过了相应的一些处理,方法如下:
假如有一密码,ABCDEFGH,将其按下列公式运算:
┌─────────────────────┐
│ H+4*G+10*F+40*E+100*D+400*C+1000*B+4000*A│
└─────────────────────┘
结果转化为十六进制,设由低到高位为A B C,那么,A+C就是38h的值,B就是3Ah的值!
至于解密呢,你知道怎么办吗?嗯……那位举手的同学,你说说?
斗鸡眼同学甲:“就是用逆向工程,反算出密码1
旁听的领导乙:“笨蛋,来上这个班的智商怎么这么低,拖出去,毙了!所谓的加密,一般都是用的不可逆的映射,像2的2的X次方等等。为什么是一般呢?因为如果像刚才那个白痴,用可逆的映射也是完全有可能的!所以呢,我们可以用一个古老而又有效的办法,穷举法!反正计算机速度快,很快就试出密码了。”
……两个白痴……
既然什么都知道了,为什么还要去算密码呢?我们可以自选一个密码,经过运算,然后写回CMOS不就行了吗?程序太简单了,同学们自己做成家庭作业交上来。嗯……时间不早了,我还要看Cartoon Network,好了,下课!
糖醋排骨于2000年7月10日下午3:52
中华技术网整理发布 http://www.asfocus.com http://www.netqu.com
本文地址:http://www.45fan.com/a/question/69370.html