Add IpHeader.to_byte_string()
This commit is contained in:
parent
8271b616e9
commit
fcc2c4ec81
25
main.py
25
main.py
|
@ -7,6 +7,8 @@ import ipaddress
|
||||||
import json
|
import json
|
||||||
import socket
|
import socket
|
||||||
|
|
||||||
|
MAGIC = b'\x16\xd9\x6b\x52'
|
||||||
|
|
||||||
class Config:
|
class Config:
|
||||||
def __init__(self, data):
|
def __init__(self, data):
|
||||||
if data['mode'] == 'server':
|
if data['mode'] == 'server':
|
||||||
|
@ -50,6 +52,24 @@ class IpHeader:
|
||||||
self.src = ipaddress.IPv4Address(src)
|
self.src = ipaddress.IPv4Address(src)
|
||||||
self.dst = ipaddress.IPv4Address(dst)
|
self.dst = ipaddress.IPv4Address(dst)
|
||||||
|
|
||||||
|
def to_byte_string(self):
|
||||||
|
return struct.pack(
|
||||||
|
'>BBHHHBBH4s4sHBB',
|
||||||
|
self.ver_ihl,
|
||||||
|
self.tos,
|
||||||
|
self.total_length,
|
||||||
|
self.ident,
|
||||||
|
self.flags_fragoffset,
|
||||||
|
self.ttl,
|
||||||
|
self.proto,
|
||||||
|
self.chksum,
|
||||||
|
self.src.packed,
|
||||||
|
self.dst.packed,
|
||||||
|
self.opt1,
|
||||||
|
self.opt2,
|
||||||
|
self.pad,
|
||||||
|
)
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
config_filename = sys.argv[1]
|
config_filename = sys.argv[1]
|
||||||
|
|
||||||
|
@ -105,5 +125,10 @@ def handle_ip_packet(ip_packet, conn, tun_iface, config):
|
||||||
'len: %d' % ip_packet.header.total_length,
|
'len: %d' % ip_packet.header.total_length,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if ip_packet.header.dst == config.iface_addr:
|
||||||
|
pass
|
||||||
|
elif ip_packet.header.dst == config.iface_dstaddr:
|
||||||
|
pass
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
|
Reference in New Issue