def test_is_correct(self): b = Builder() b.set_template(TMPL_TWO_FIELDS) b.prepare() self.assertFalse(b.is_correct()) b = Builder() b.set_template("foo[1] = 128") b.prepare() self.assertTrue(b.is_correct()) b = Builder() b.set_template("foo[1] = 0, foe[2], bar[1] = 2") b.prepare() self.assertFalse(b.is_correct()) b.fields["foe"].value = 3 self.assertTrue(b.is_correct())
def test_get_raw(self): b = Builder() b.set_template("foo[1] = 1, foe[2] = 2") b.prepare() self.assertTrue(b.is_correct()) target = "\x01\x00\x02" self.assertEqual(target, b.get_raw())
#!/usr/bin/python from builder import Builder import socket from sys import exit f = open("dhcp/discover.pkt") s = f.read() b = Builder(s) if b.is_correct() is not True: print("Msg is NOT correct") exit() else: print("Msg is correct") raw = b.get_raw() SERVER_IP = "255.255.255.255" SERVER_PORT = 67 CLIENT_PORT = 68 server_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) server_sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) client_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) server_sock.sendto(raw, (SERVER_IP, SERVER_PORT)) data, addr = client_sock.recvfrom(CLIENT_PORT) print("I received something!")