用Arduino暴力破解电脑的BIOS密码

想设置CMOS,但忘记了BIOS密码,您会告诉我CMOS放电、跳线短接或BiosPwds软件都可以破解BIOS密码。但作为Maker,我们要有自己的Style,所以今天我们就试试Arduino能不能暴力破解BIOS密码。

这个项目的目的是将Arduino开发板做成USB键盘,再配合VGA嗅探,用暴力破解法猜出BIOS密码。事实上,这种破解方法速度很慢,还可能永远破解不了BISO密码,和其他方法相比没有什么优势可言,我们之所以这么做,是因为这很有意思。通过远程访问(remote access)破解BIOS密码。据我所知,目前的还没有其他人使用过这种方法。

理论上讲,这中方法需要在特定的环境下才能使用。比如说,破解时可以连续多次输入错误密码而不被限制使用。

还有一个非常重要的限制是我们没办法读取完整的VGA帧和步骤,所以我们需要替代的方法。我们在屏幕中间的位置选取了一个像素,然后根据这个像素的颜色判断当前的状态。比如说,屏幕中间的像素显示红色就意味着输入的BIOS密码是错误的,如果像素是蓝色就意味着正在测试新的密码。

下面我们就看一下操作这个项目的概要。

第一步:制作USB键盘模拟器

在用Arduino制作USB键盘模拟器时,我用的是V-USB代码,其实就是V-USB库.您需要的就是安装好V-USB代码,此时Arduino板便是USB键盘了。

第二步:线路

这个项目中Arduino扩展板的电路也很简单。LCD屏与其相连,这样不用电脑就可以知道破解的进程和结果了。

为了稳定USB键盘接口电压,我使用了一对稳压二极管。

另外,这个线路中还有一个按钮,可以在破解过程中实现暂停和继续的功能。如果长按按钮超过2秒钟,破解过程会重置。

第三步:嗅探VGA

为了知道屏幕中间的颜色,我们需要读取红色模拟信号;同时,为了确定读取红色信号的时间,我们也需要读取水平和垂直的同步信号。所以我们使用Arduino的中断函数attachInterrupt监控水平同步信号和垂直同步信号,不过这时会暂停USB键盘的工作。

如果在这个项目中使用中断服务程序ISR和信号(SIGNAL)宏命令,效果会好的多。这时垂直同步信号需要设置为全局变量h_line,水平同步信号为增量,以便确定VGA帧中具体的行数。

我们的waitWrongPassword函数会分析这个像素。如果像素是红色,这个函数会等待几秒,然后继续扫描。当扫描到第238列时(像素640×480的垂直中间位置),扫描会延迟一下,这时是在确定水平中间定时,进而读取红色模拟输入信号。

然后将读取的信号值进行比对,来判定是否显示“wrong password”对话框,。现在设定的是if (valueR > 140),显示“wrong password”,当然您需要根据您显卡的等级来设置这个值。

第四步:代码

您需要定义用来破解BIOS的字符组。为此,您需要更改charset矩阵,添加USB密钥代码即可。我的代码示例中,默认有3种,分别是KEY_A, KEY_B, KEY_C。同时,您还需要修改名为charset_log的矩阵,它需要和前面的矩阵大小一样,它的作用是输出可打印字符,方便破解密码后登录BISO。

此外,还需要做一件事情,修改密码的最大长度。默认设置是4位,你可以通过改MAX_LEN定义密码长度。

EEPROM储存器会定期保存数据,防止系统断电。如果真的断电了,恢复供电后,你可以从中断的地方(或中断前的某个附近的地方)继续测试密码。

点击这里下载代码,然后根据自己的需要自行更改代码。

via

坐沙发

发表评论

你的邮件地址不会公开


*