From 970a1c7e01ca915c216ca875406d09291700c8ed Mon Sep 17 00:00:00 2001 From: Simon Moser Date: Thu, 4 Nov 2021 19:07:24 +0100 Subject: [PATCH] README and envctl help updated --- README.md | 75 ++++++++++++++++++++----------------------------- test-env/envctl | 8 +++--- 2 files changed, 34 insertions(+), 49 deletions(-) diff --git a/README.md b/README.md index 4af1951..31af8cc 100644 --- a/README.md +++ b/README.md @@ -4,53 +4,12 @@ ![overview](README.assets/overview.png) -## Pseudocode - -```python -class vde_proxy: - def handle_frame(frame): - try: - frame.mac = self.new_mac - except NameError: - self.new_mac = random_mac() - self.new_ip = do_dhcp(new_mac) - finally: - frame.mac = self.new_mac - frame.packet = handle_packet(frame.packet) - - def handle_packet(packet): - protocols = { - "ip" : handle_ip, - "arp": handle_arp, - } - return protocols[packet.protocol](packet) - - def handle_ip(packet): - # Todo: Check DHCP lease and get new one if necessary - packet.ip = self.new_ip - if is_dhcp(packet): - packet = handle_dhcp(packet) - return packet - - def handle_arp(packet): - pass - - def handle_dhcp(packet): - pass - - def do_dhcp(mac): - # Do DHCP - return ip -``` - - - ## Problematic protocols Important: * DHCP -* ARP +* ARP (implemented) Nice to have: @@ -67,8 +26,34 @@ Keep in mind: ### Go: * gopacket (~libpcap): https://github.com/google/gopacket / https://pkg.go.dev/github.com/google/gopacket -* (Link layer frame modification: https://github.com/mdlayher/ethernet / https://pkg.go.dev/github.com/mdlayher/ethernet) -### Rust: +## Binaries +### envctl - control VMs, network etc +``` +$ ./envctl +Usage: envctl {start|stop|restart} {all|network|vms|alpine|alpine1|alpine2|kali|proxy2|proxy3|proxies} +``` -* https://docs.rs/etherparse/0.9.0/etherparse +### proxy - main binary +``` +$ ./proxy -help +Usage of ./proxy: + -log int + allowed: 5 (debug), 4 (info), 3 (warning), 2 (error), 1 (fatal) (default 4) + -logfile string + Location to write output to + -newip string + IP after change (default "10.0.0.15") + -newmac string + MAC after change + -oldip string + IP before change + -oldmac string + MAC before change + -passthrough + Whether to pass every traffic through + -pidfile string + Location to write the pid to + -proxy string + Number of the proxy switch (default "1") +``` diff --git a/test-env/envctl b/test-env/envctl index a6e89e9..9246296 100755 --- a/test-env/envctl +++ b/test-env/envctl @@ -45,7 +45,7 @@ start) $proxy -proxy 3 -passthrough -logfile $RUN/proxy_3.log -pidfile $proxy3 & ;; *) - echo "Usage: envctl start {all|network|vms|alpine|alpine1|alpine2|kali}" + echo "Usage: envctl start {all|network|vms|alpine|alpine1|alpine2|kali|proxy2|proxy3|proxies}" esac #echo "Run:\nqemu -m 512 -nic vde,mac='52:54:00:12:34:56',sock=$RUN/sw_proxy.sock -hda alpine1.qcow2 -nographic" ;; @@ -58,7 +58,7 @@ stop) echo "$2 is not running" fi else - echo "Usage: envctl stop {all|network|vms|alpine|alpine1|alpine2|kali}" + echo "Usage: envctl stop {all|network|vms|alpine|alpine1|alpine2|kali|proxy2|proxy3|proxies}" fi ;; restart) @@ -74,11 +74,11 @@ status) echo "$2 is not running" fi else - echo "Usage: envctl status {all|network|vms|alpine|alpine1|alpine2|kali}" + echo "Usage: envctl status {all|network|vms|alpine|alpine1|alpine2|kali|proxy2|proxy3|proxies}" fi ;; *) - echo "Usage: envctl {start|stop|restart} {all|network|vms|alpine|alpine1|alpine2|kali}" + echo "Usage: envctl {start|stop|restart} {all|network|vms|alpine|alpine1|alpine2|kali|proxy2|proxy3|proxies}" exit 1 ;; esac