Du kannst nicht mehr als 25 Themen auswählen
Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
Simon Moser 4df287e73b | vor 3 Jahren | |
---|---|---|
README.assets | vor 3 Jahren | |
proxy | vor 3 Jahren | |
test-env | vor 3 Jahren | |
.gitignore | vor 3 Jahren | |
LICENSE | vor 3 Jahren | |
README.md | vor 3 Jahren |
README.md
eaas-vde-proxy
Overview
Pseudocode
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
Nice to have:
- NetBEUI / NetBIOS
Keep in mind:
- IPv6 (NDP, Interface Identifier, ...)
- IPSec
- 802.1X
Library support
Go:
- Internet layer packet modification: 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 (not recently updated, alternative?)