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}"
}