# RCMD: 一个简易的远程CMD工具

昨天闲着没事翻了翻之前写的玩意儿，发现很早之前时候写的一个小程序--远程执行CMD命令。之前高中受到CSDN一篇帖子的启发加上当时只会Python，所以就用电子邮件实现的远程通讯，功能虽然正常实现了，但弊端也很明显，由于用于通信的是免费的邮箱服务器，延时会很大且不稳定。

![远古代码，当时还叫自己Wyatt](pic/image-20220916134323590.png)

现在捣鼓了挺久网站所以也稍微懂那么一点网络知识了，所以就在想要不再用自己的服务器实现个同样的功能（也是闲得慌。所以说干就干，昨晚花了几个小时把基础功能实现了，今早8点起来又写了个界面便于操作... 程序目前已经基本完工了，也就是说现在又能水一篇文章了（笑

### 功能介绍

RCMD, Remote CMD，顾名思义，就是能远程执行电脑的CMD指令。软件分为三个部分： 1. `控制端` 2. `客户端` 3. `服务端`。其中`客户端` 需要安装在被控制电脑上面，`控制端` 操控安装了`客户端` 的电脑，`服务端` 由PHP实现，实现控制端和服务端的通讯。如下界面结合了`控制端` 和 `客户端` 的功能，通过双击 <button>Build</button>  即可在电脑上安装`客户端`。其他所有功能均为 `控制端` 所用，通过配置 `Server` ,  `Token`, `CMD` ， 即可远程执行CMD命令。

![image-20220916134523916](pic/image-20220916134523916.png)

### 服务端

把`server` 文件夹下所有文件放在网站文件夹下，然后对网站: [example.com/build.php](example.com/build.php) post请求`pwd={你的密码}`，进行`token` 的设置

```
--EXAMPLE--
example.com/build.php?pwd=mypassword
```

设置完成后即可完成所有服务端的配置

![成功配置](pic/image-20220916135954630.png)

### 客户端

在`server_config`文件中写入你上一步的服务端网址并保存

![image-20220916140231917](pic/image-20220916140231917.png)

配置完成后运行`RCMD.exe` 进行`客户端` 部署，双击 <button>Build</button> 后开始部署，部署完成后会显示如下字样：

```
>> Welcome to RCMD System V1.0.0!
>> Click Again to build Client
>> ok!
```

通过编辑`build.bat` 即可实现自定义部署内容，默认部署内容为：

1. C盘根目录备份程序
2. 开机自动启动
3. 运行程序

### 服务端

配置`server_config `后运行`RCMD.exe` 并配置`Server` (默认为`server_config` 配置) 和`Token`，`CMD` 中输入你想执行的命令行操作，最后点击 <button>Send Command</button> 即可把执行发送到`客户端` 执行。

![成功执行命令](pic/image-20220916141223356.png)

`CMD` 还支持一些特殊指令：

**Sp Code:**
`/check`: 检查服务端状态
`/clear`: 强制清除指令
`/help`: 获取帮助文档
`/build`: 部署客户端
`/uninstall`: 卸载客户端
`/clc`: 清屏
`/cmd`: 本地执行cmd命令
`/status`: 检查客户端接受状态

**Er Code (后缀特殊标符 ):** 
`:freeze`: 禁止客户端运行指令后更新状态

### 开发者文档

**服务端API：**

**参数：**

**e**: 1/0, 可选, 阅后即焚设置

**m**: 1/0, 可选, 需要token, 开启/关闭阅后即焚选项

**token**: 字符串, 可选,  获取设置 **m** 和写入的权限

**返回：**

返回格式为`Json` 

**status**: 1/0, 状态码

**error**: 错误码

**msg**: 信息

