Inspired by Parrot, we're building Carrot, an interposition library that captures file and networking system calls and distributes them across machines.
First, install necessary dependencies:
sudo apt-get update
sudo apt install g++ libprotobuf-dev libcurl4-openssl-dev libssl-dev libcrypto++-dev libresolv-dev
Then, set up the protobufs:
cd protobufs
protoc -I=. --cpp_out=./messages ./message.proto
protoc -I=. --cpp_out=./files ./file.proto
Finally, compile all of the files:
make
To interpose on file system calls, look at the folder fsc
. On one machine, run the receiver:
fsc/file_receiver
On another machine, run the interposition library on top of an executable doing file system calls
fsc/file_carrot fsc/file_test1
To interpose on networking system calls, look at the folder nsc
. On one machine, run the receiver:
nsc/networking_receiver
On another machine, run the interposition library on top of an executable doing file system calls
nsc/networking_carrot nsc/curl http://www.example.com