Ejemplo n.º 1
0
    def test_without_auth(self):
        rtes = [{'route_tag': 1337,
                 'ip': "222.173.190.239", # 0xdeadbeef
                 'mask': "255.255.255.255", #0xffffffff
                 'next_hop': "27.173.202.254", # 0x1badcafe
                 'metric': 123456}]

        password = None
        auth_type = None
        seqno = 56789

        pkt = drip.rip_packet(rtes, seqno, password, auth_type)

        b = []
        for i in range(len(pkt)/4):
            b.append(byte2hex(pkt[i*4:i*4+4]))

        # header
        self.assertEquals(b[0], "02020000")
        # RTE entry
        self.assertEquals(b[1], "00020539")
        self.assertEquals(b[2], "deadbeef")
        self.assertEquals(b[3], "ffffffff")
        self.assertEquals(b[4], "1badcafe")
        self.assertEquals(b[5], "0001e240")

        # should not raise error
        drip.rip_packet(rtes*25, seqno, password, auth_type)

        with self.assertRaises(ValueError):
            drip.rip_packet(rtes*26, seqno, password, auth_type)
Ejemplo n.º 2
0
    def test_poison(self):
        rtes = [{'route_tag': 1337,
                 'ip': "222.173.190.239", # 0xdeadbeef
                 'mask': "255.255.255.255", #0xffffffff
                 'next_hop': "27.173.202.254", # 0x1badcafe
                 'metric': drip.RIP_METRIC_POISON}]

        password = None
        auth_type = None
        seqno = 56789

        pkt = drip.rip_packet(rtes, seqno, password, auth_type)

        b = []
        for i in range(len(pkt)/4):
            b.append(byte2hex(pkt[i*4:i*4+4]))

        # header
        self.assertEquals(b[0], "02020000")
        # RTE entry
        self.assertEquals(b[1], "00020539")
        self.assertEquals(b[2], "deadbeef")
        self.assertEquals(b[3], "ffffffff")
        self.assertEquals(b[4], "1badcafe")
        self.assertEquals(b[5], "0000000f")
Ejemplo n.º 3
0
    def test_md5_auth(self):
        rtes = [{'route_tag': 1337,
                 'ip': "222.173.190.239", # 0xdeadbeef
                 'mask': "255.255.255.255", #0xffffffff
                 'next_hop': "27.173.202.254", # 0x1badcafe
                 'metric': 123456}]

        password = "******"
        auth_type = "md5"
        seqno = 56789

        pkt = drip.rip_packet(rtes, seqno, password, auth_type)

        b = []
        for i in range(len(pkt)/4):
            b.append(byte2hex(pkt[i*4:i*4+4]))

        # header
        self.assertEquals(b[0],  "02020000")
        # MD5 auth header
        self.assertEquals(b[1],  "ffff0003")
        self.assertEquals(b[2],  "002c0110")
        self.assertEquals(b[3],  "0000ddd5")
        self.assertEquals(b[4],  "00000000")
        self.assertEquals(b[5],  "00000000")
        # RTE entry
        self.assertEquals(b[6],  "00020539")
        self.assertEquals(b[7],  "deadbeef")
        self.assertEquals(b[8],  "ffffffff")
        self.assertEquals(b[9],  "1badcafe")
        self.assertEquals(b[10], "0001e240")
        # MD5 hash of packet + password
        self.assertEquals(b[11], "ffff0100")
        self.assertEquals(b[12], "81b20579")
        self.assertEquals(b[13], "cc3ec992")
        self.assertEquals(b[14], "4383badd")
        self.assertEquals(b[15], "3f111569")

        # should not raise error
        drip.rip_packet(rtes*23, seqno, password, auth_type)

        with self.assertRaises(ValueError):
            drip.rip_packet(rtes*24, seqno, password, auth_type)