Please read carefully before using! This code is for research purposes only. Our recommendation is to run the tool inside a private secured network. Use at your own risk with no expectation of privacy or security.
For avoidance of doubt,
-
Data is transferred unencrypted through an open protocol
-
Users should expect that potential attackers could get root privileges on both the server and client
x264: https://x264.org
avcodec, avdevice: https://www.ffmpeg.org
X11, Xext, Xi, Xtst: https://www.freedesktop.org
pthread
popt
isal
- Install.sh
Installs all required libs if missing.
If there is no libisal2 for your Linux - download, build and install from: https://github.com/intel/isa-l.git
-
Make: GNU 'make'
-
Compiler: gcc
On client side (where user is controlling): make client
On server side (where game or some application running): make server
For help:
On client side (to print help):
- sudo ./client --help
On Server side (to print help):
- sudo ./server --help
To test client side:
- make clientMouse
- ./clientMouse
To start Server on a running network interface (for example eth0, 4 links, ports 5910, 5911): Interface name could differ from "eth0". You can look up the name(s) using "ifconfig".
-
sudo ./server eth0:5910 eth0:5911 -n=5 -d=2 -l=2 -r=2 -D=:12 -s=4
This will start server that expect 4 links:2 local (-l=2) and 2 remote (-r=2); All transmitters will be at "eth0", 2 on port 5910, 2 on port 5911; An encoding to prevent packet loss will be with 2 redundant packets (-d=2) per 5 real (-n=5); A display ":12" (-D=:12) square from 0, 0 to 1024, 768 will be grabbed with 60fps (-s=4) and send to network; Other modes are 1920x1080 60fps (-s=0)... full list is in help "./server --help"
To start Client:
WARNING! When connection established client will grab mouse and keyboard control. To exit client and server (if Ctrl^C does not work): hold left mouse button, then press ESC.
To switch to relative mouse: hold left mouse button, then press left shift.
To switch to absolute mouse: hold left mouse button, then press right shift.
-
sudo ./client eth0 eth0 [server.ip.address]:5910 [server.ip.address]:5911 -l=2 -r=2 -n=5 -d=2 -g
This will start client that will try to initiate connection with server using network interface "eth0" with server at [server.ip.address] and ports 5910, 5911 All receivers will be at "eth0". Client will expect 4 links: 2 local (-l=2) and 2 remote (-r=2); An encoding to prevent packet loss will be with 2 redundant packets (-d=2) per 5 real (-n=5); The client will start in game mode (-g) meaning window with server content will pop up in the center, mouse will not be able to exit the window, only relative mouse coordinates will be used.
avcodec, avdevice: https://www.ffmpeg.org
sdl 2.0: https://libsdl.org
isal: https://github.com/intel/isa-l.git
Install to some folder:
isal from: https://github.com/intel/isa-l.git
avcodec, avdevice (https://www.ffmpeg.org) and SDL 2.0 (https://libsdl.org)
- Compiler: Microsoft or Intel compiler for Windows
set REPO to folder where you installed all libs from above
To build client: compile.bat
Server is not supported on Windows
To build test: compile_test.bat
For help:
On client side (to print help):
- Client.exe --help
To test client side:
- ClientTest.exe
To start Client:
WARNING! When connection established client will grab mouse and keyboard control.
-
Make sure all library paths are added (for the installed libraries)
-
Client ethernet_0 ethernet_0 [server.ip.address]:5910 [server.ip.address]:5911 -l=2 -r=2 -n=5 -d=2 -g
This will start client that will try to initiate connection with server using network interface "ethernet_0" with server at [server.ip.address] and ports 5910, 5911 All receivers will be at "ethernet_0". Client will expect 4 links: 2 local (-l=2) and 2 remote (-r=2); An encoding to prevent packet loss will be with 2 redundant packets (-d=2) per 5 real (-n=5); The client will start in game mode (-g) meaning window with server content will pop up in the center, mouse will not be able to exit the window, only relative mouse coordinates will be used.
Apache 2.0