Cover channel using CPU Load as data carrier. The system consists of a client and a server, both running on the same processor.
- The clocks are synchronised. To achieve this, both processes waits untill a new second begins.
- Uses signals to measure time. A SIGALRM is scheduled once per second.
- The client do hard computations to send an 1 or waits to send a 0.
- The server samples every second. The threshold is computed one time and saved in settings file. This may not work at first try, so other settings needs to be created. To do this, remove settings file and run again.
-
Every frame begins with 4 bits = 1101. This solution was chosen to avoid noise.
-
Then 8 bits of data is send.
-
Checksum, 3 bits.
-
Receive 4 bits for ack:
- 1101 ACK
- 1011 NOT ACK
-
If session is over, instead of start sequence (1101), client sends end sequence 1011 then session is closed
Run the make command in the main folder. '''>> make''' This creates 2 executables, one for server called '''s''' and one for client called '''c'''. The server should be run first.
- After the build is done, run the command '''>> ./s ''' where the filename parameter is the name of the file to write the data.
- When the server is running, run the command '''>> ./c <filename''' where the filename parameter is the name of the file containing ascii characters to be sent.
- Wait for the program to finish. Please, use 1 or 2 characters because the speed is 1 bit per second and the process may take too long.
THRESHOLD situation samples just one time for 0 and one time for 1. Sometimes it isn't enough. Due to the deadline I couldn't implement a better algorithm.
The client does not detect when the server is not listening.