This covert channel transmits UDP datagrams from a client written in python to a server written in python. We are in the process of rewriting the python client to a C client. We communite data via modulating the size of the data section of the UDP datagrams we send.
The client:
- Accepts user input
- Converts each individual character of the user input into its ASCII decimal equivalent
- Creates a key between values 0 and 15 for each character in the message
- Encrypts each plaintext ASCII decimal value by adding the randomly generated key
- Generates the UDP datagram's "Data" field to be the length of the encrypted ASCII decimal value
- Inserts they key into the "Data" field
- Sends the crafted UDP datagram to the server
The server:
- Recieves the UDP datagram from the client
- Parses the data for the value of the key used to encrypt a given character
- Subtracts the key's value from the length of the datagram's "Data" field
- Prints out the plaintext ASCII character value