版主: wanchong , wangyu , eepwwp , firedom |
2007zoz
最后登陆时间:2015-09-29 16:36:14 |
这个项目的目的是将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储存器会定期保存数据,防止系统断电。如果真的断电了,恢复供电后,你可以从中断的地方(或中断前的某个附近的地方)继续测试密码。 点击这里下载代码,然后根据自己的需要自行更改代码。 还有几张作品照片,一起展示给小伙伴们。
▲用iPod的包装盒做的外壳
▲碳粉热转印法制作的底板。烤的有点过度,所有导致板子烧焦了点。
▲前面
▲后面
|
此帖由nakey于2015-09-29 16:37:05最后编辑
|
|
共1条 1/1 1 |