Only POST requests are allowed.
For every request, you should have Authorization on its header.
Authorization header is a string like Basic <token>(basic auth).
Authorization: Basic <base64('username:password')>
Example:
Authorization: Basic WFpCOjEyNDg=
After basic authentication, server will assign you an Authorization cookie.
You can use this token cookie to authenticate rest of your requests.
All responses are JSON encoded.
| code | meaning |
|---|---|
| -1 | invalid or missing params |
| 0 | success |
| 1 | failure and msg are given |
{
"code": -1,
"msg": "${i18n|COMMON.INVALID_PARAMETER}"
}
{
"code": 0,
"data": {
...
}
}
{
"code": 1,
"msg": "${i18n|COMMON.DEVICE_NOT_EXIST}"
}
Parameters: None
The id of device is persistent, its length always equals 64.
It's unique for every device and won't change.
You're recommend to recognize your device by device ID.
The key of the device object is its connection UUID, it's random and temporary.
{
"code": 0,
"data": {
"1de601ca-7738-4b77-a081-57d3fc9c4482": {
"id": "1a23e7660cde01285ca241d5f5d3cf2c5bc39e02c1df7a30b58fbde2938b0375",
"os": "windows",
"arch": "amd64",
"lan": "192.168.1.1",
"wan": "1.1.1.1",
"mac": "00:00:00:00:00:00",
"net": {
"sent": 0,
"recv": 60
},
"cpu": {
"model": "Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz",
"usage": 8.658854166666668,
"cores": {
"logical": 8,
"physical": 4
}
},
"ram": {
"total": 8432967680,
"used": 5109829632,
"usage": 60.593492420452385
},
"disk": {
"total": 1373932810240,
"used": 185675567104,
"usage": 13.51416646579435
},
"uptime": 1015,
"latency": 10,
"hostname": "LOCALHOST",
"username": "EXAMPLE"
}
}
}
Parameters: :act and device (device ID)
The :act could be lock, logoff, hibernate, suspend, restart, shutdown and offline.
For example, when you call /device/restart, your device will restart.
{
"code": 0
}
Parameters: cmd, args and device (device ID)
Example:
POST http://localhost:8000/api/device/exec HTTP/1.1
Host: localhost:8000
Content-Length: 116
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.47
Origin: http://localhost:8000
Referer: http://localhost:8000/
cmd=taskkill&args=%2Ff%20%2Fim%20regedit.exe&device=bc7e49f8f794f80ffb0032a4ba516c86d76041bf2023e1be6c5dda3b1ee0cf4c{
"code": 0
}
Parameters: device (device ID)
If screenshot is captured successfully, it gives you the image directly.
If failed, then the following response are given.
{
"code": 1,
"msg": "${i18n|DESKTOP.NO_DISPLAY_FOUND}"
}
Parameters: files (array of files) and device (device ID)
If files exist and are accessible, then the archive file or file itself is given directly.
If unable to read files, then the following response are given.
A zip file is given if multiple files (including directory) are given.
{
"code": 1,
"msg": "${i18n|EXPLORER.FILE_OR_DIR_NOT_EXIST}"
}
Parameters: files (array of files) and device (device ID)
If files exist and are deleted successfully, then code will be 0.
{
"code": 0
}
{
"code": 1,
"msg": "${i18n|EXPLORER.FILE_OR_DIR_NOT_EXIST}"
}
Query Parameters: file (file name), path and device (device ID)
File itself should be sent in the request body.
Anything represented in the request body will be saved to the device.
If same file exists, then it will be overwritten.
Example:
POST http://localhost:8000/api/device/file/upload?path=D%3A%5C&file=Test.txt&device=bc7e49f8f794f80ffb0032a4ba516c86d76041bf2023e1be6c5dda3b1ee0cf4c HTTP/1.1
Host: localhost:8000
Content-Length: 12
Content-Type: application/octet-stream
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.47
Origin: http://localhost:8000
Referer: http://localhost:8000/
Hello World.If file uploaded successfully, then code will be 0.
And D:\Test.txt will be created with the content of Hello World..
{
"code": 0
}
{
"code": 1,
"msg": "${i18n|EXPLORER.FILE_OR_DIR_NOT_EXIST}"
}
Parameters: path (folder to be listed) and device (device ID)
If path is empty, then it gives you volumes list (windows) or gives files on /.
type 0 means file, 1 means folder and 2 means volume (windows).
{
"code": 0,
"data": {
"files": [
{
"name": "home",
"size": 4096,
"time": 1629627926,
"type": 1
},
{
"name": "Spark",
"size": 8192,
"time": 1629627926,
"type": 0
}
]
}
}
{
"code": 1,
"msg": "${i18n|EXPLORER.FILE_OR_DIR_NOT_EXIST}"
}
Parameters: device (device ID)
{
"code": 0,
"data": {
"processes": [
{
"name": "[System Process]",
"pid": 0
},
{
"name": "System",
"pid": 4
},
{
"name": "Registry",
"pid": 124
},
{
"name": "smss.exe",
"pid": 392
},
{
"name": "winlogon.exe",
"pid": 456
}
]
}
}
Parameters: pid and device (device ID)
{
"code": 0
}
{
"code": 1,
"msg": "${i18n|COMMON.DEVICE_NOT_EXIST}"
}