A protocol model for transporting the raw 0s and 1s of any interface on a given server via UDP to a client in such a way that the client can interact with the traffic as if the traffic was being generated by a physically attached interface of the client.
The traffic sent back and forth between the server and client are represented to the client and server as a native interface such as eth0, wlan0mon, tap and so on. The user is able to launch common programs such as Airodump-ng or Kismet via the same methods they are accustomed when physically present.
An example visual scenario of RICP usage is provided here.
RICP utilizes the PyNaCl library for security. At a minimum --password must be invoked by default with --salt and --key being optional. To disable security for RICP invoke the --weak flag.
Users of this protocol should take measures to ensure they are receiving traffic only from trusted sources. They should also take the time to ensure if and when running in server mode that a good filtering of the expected input from users is appropriately vetted for the syntax.
python3 -m venv env
source env/bin/activate
python3 -m pip install -r requirements.txt
python3 -m pip install RESOURCEs/*
The files in RESOURCEs/ are simple copies from my other git repos.
As a server
python3 ./ricp.py --monnic eth0 --dstport 55000 --dstip 192.168.200.106 -s --weak
As a client
python3 ./ricp.py --dstport 55000 --dstip 192.168.200.106 -c --monnic wlan0 --snfnic tap0 -t --wired --weak
With the above done, now interact with tap0
tcpdump -i tap0
As a server
python3 ./ricp.py --dstip 192.168.200.106 --dstport 20001 --monnic wlan1mon -s --weak
As a client
python3 ./ricp.py --dstport 20001 --dstip 192.168.200.106 -c --monnic wlan0 --snfnic wlan1mon --weak
With the above done, now interact with wlan1mon
tcpdump -i wlan1mon
from IPython import embed
embed()
%run ./ricp.py --dstport 55000 --dstip 192.168.200.106 -c --monnic wlan0 --snfnic wlan1mon --debug --weak