Ejemplo n.º 1
0
 def test_hops_src_dst_addrs(self, ):
     # Pack
     f = heymac.APv6Frame(
         hops=b"\x33",
         src=
         b"\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
         dst=
         b"\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDa\xDb\xDc\xDd\xDe\xDf"
     )
     b = bytes(f)
     self.assertEqual(
         b,
         b"\xD0\x33\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDa\xDb\xDc\xDd\xDe\xDf"
     )
     # Unpack
     f = heymac.APv6Frame(b)
     self.assertEqual(f.iphc_prefix, 6)
     self.assertEqual(f.iphc_nhc, 1)
     self.assertEqual(f.iphc_hlim, 0)
     self.assertEqual(f.iphc_sam, 0)
     self.assertEqual(f.iphc_dam, 0)
     self.assertEqual(f.hops, 0x33)
     self.assertEqual(
         f.src,
         b"\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
     )
     self.assertEqual(
         f.dst,
         b"\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDa\xDb\xDc\xDd\xDe\xDf"
     )
Ejemplo n.º 2
0
 def test_regression_hops_from_int(self, ):
     """Allow hops to be given as an int
     """
     # Pack
     f = heymac.APv6Frame(
         hops=0x33,
         src=
         b"\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
         dst=
         b"\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDa\xDb\xDc\xDd\xDe\xDf"
     )
     b = bytes(f)
     self.assertEqual(
         b,
         b"\xD0\x33\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDa\xDb\xDc\xDd\xDe\xDf"
     )
     # Unpack
     f = heymac.APv6Frame(b)
     self.assertEqual(f.iphc_prefix, 6)
     self.assertEqual(f.iphc_nhc, 1)
     self.assertEqual(f.iphc_hlim, 0)
     self.assertEqual(f.iphc_sam, 0)
     self.assertEqual(f.iphc_dam, 0)
     self.assertEqual(f.hops, 0x33)
     self.assertEqual(
         f.src,
         b"\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
     )
     self.assertEqual(
         f.dst,
         b"\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDa\xDb\xDc\xDd\xDe\xDf"
     )
Ejemplo n.º 3
0
 def test_hlim_3(self, ):
     # Pack
     f = heymac.APv6Frame(iphc_hlim=0b11)
     b = bytes(f)
     self.assertEqual(b, b"\xDF")
     # Unpack
     f = heymac.APv6Frame(b)
     self.assertEqual(f.iphc_prefix, 6)
     self.assertEqual(f.iphc_nhc, 1)
     self.assertEqual(f.iphc_hlim, 3)
     self.assertEqual(f.iphc_sam, 1)
     self.assertEqual(f.iphc_dam, 1)
     self.assertEqual(f.hops, 0xFF)
     self.assertEqual(f.src, b"")
     self.assertEqual(f.dst, b"")
Ejemplo n.º 4
0
 def test_hops_32(self, ):
     # Pack
     f = heymac.APv6Frame(hops=b"\x20")
     b = bytes(f)
     self.assertEqual(b, b"\xD3\x20")
     # Unpack
     f = heymac.APv6Frame(b)
     self.assertEqual(f.iphc_prefix, 6)
     self.assertEqual(f.iphc_nhc, 1)
     self.assertEqual(f.iphc_hlim, 0)
     self.assertEqual(f.iphc_sam, 1)
     self.assertEqual(f.iphc_dam, 1)
     self.assertEqual(f.hops, 0x20)
     self.assertEqual(f.src, b"")
     self.assertEqual(f.dst, b"")
Ejemplo n.º 5
0
 def test_nhc_default(self, ):
     # Pack
     f = heymac.APv6Frame(iphc_nhc=1)
     b = bytes(f)
     self.assertEqual(b, b"\xD7")
     # Unpack
     f = heymac.APv6Frame(b)
     self.assertEqual(f.iphc_prefix, 6)
     self.assertEqual(f.iphc_nhc, 1)
     self.assertEqual(f.iphc_hlim, 1)
     self.assertEqual(f.iphc_sam, 1)
     self.assertEqual(f.iphc_dam, 1)
     self.assertEqual(f.hops, 0x01)
     self.assertEqual(f.src, b"")
     self.assertEqual(f.dst, b"")
Ejemplo n.º 6
0
 def test_hops_special_255(self, ):
     # Pack
     f = heymac.APv6Frame(hops=b"\xFF")
     b = bytes(f)
     self.assertEqual(b, b"\xDF")
     # Unpack
     f = heymac.APv6Frame(b)
     self.assertEqual(f.iphc_prefix, 6)
     self.assertEqual(f.iphc_nhc, 1)
     self.assertEqual(f.iphc_hlim, 3)
     self.assertEqual(f.iphc_sam, 1)
     self.assertEqual(f.iphc_dam, 1)
     self.assertEqual(f.hops, 0xFF)
     self.assertEqual(f.src, b"")
     self.assertEqual(f.dst, b"")
Ejemplo n.º 7
0
 def test_mac_net_min(self, ):
     # Pack
     fmac = heymac.HeyMacFrame(fctl_type=heymac.HeyMacFrame.FCTL_TYPE_NET)
     fnet = heymac.APv6Frame()
     fmac.data = fnet
     b = bytes(fmac)
     self.assertEqual(b, b"\xe2\x80\xD7")
     # Unpack HeyMacFrame
     fmac = heymac.HeyMacFrame(b)
     self.assertEqual(fmac.pv_pid, fmac.PV_PID_HEYMAC)
     self.assertEqual(fmac.pv_ver, fmac.PV_VER_HEYMAC2)
     self.assertEqual(fmac.fctl_type, heymac.HeyMacFrame.FCTL_TYPE_NET)
     self.assertEqual(fmac.fctl_l, 0)
     self.assertEqual(fmac.fctl_p, 0)
     self.assertEqual(fmac.fctl_n, 0)
     self.assertEqual(fmac.fctl_d, 0)
     self.assertEqual(fmac.fctl_i, 0)
     self.assertEqual(fmac.fctl_s, 0)
     self.assertEqual(fmac.exttype, b"")
     self.assertEqual(fmac.netid, b"")
     self.assertEqual(fmac.daddr, b"")
     self.assertEqual(fmac.saddr, b"")
     self.assertTrue(len(fmac.data) > 0)
     # Unpack APv6Frame
     fnet = fmac.data
     self.assertEqual(type(fnet), heymac.APv6Frame)
     self.assertEqual(fnet.iphc_prefix, 6)
     self.assertEqual(fnet.iphc_nhc, 1)
     self.assertEqual(fnet.iphc_hlim, 1)
     self.assertEqual(fnet.iphc_sam, 1)
     self.assertEqual(fnet.iphc_dam, 1)
     self.assertEqual(fnet.hops, 0x01)
     self.assertEqual(fnet.src, b"")
     self.assertEqual(fnet.dst, b"")
Ejemplo n.º 8
0
 def test_mac_net_udp_to_google(self, ):
     # Pack
     fmac = heymac.HeyMacFrame(
         fctl_type=heymac.HeyMacFrame.FCTL_TYPE_NET,
         pend=0,
         saddr=b"\x35\x16",
     )
     google_ipv6_addr = b"\x20\x01\x48\x60\x48\x60\x00\x00\x00\x00\x00\x00\x00\x00\x88\x88"
     fnet = heymac.APv6Frame(dst=google_ipv6_addr, )
     fudp = heymac.APv6Udp(src_port=0xF0B0, dst_port=53, data=b"DnsRequest")
     fmac.data = fnet
     fnet.data = fudp
     b = bytes(fmac)
     self.assertEqual(
         b, b"\xe2\x81\x35\x16\xD6" + google_ipv6_addr +
         b"\xF6\xB0\x00\x35DnsRequest")
     # Unpack HeyMacFrame
     fmac = heymac.HeyMacFrame(b)
     self.assertEqual(fmac.pv_pid, fmac.PV_PID_HEYMAC)
     self.assertEqual(fmac.pv_ver, fmac.PV_VER_HEYMAC2)
     self.assertEqual(fmac.fctl_type, heymac.HeyMacFrame.FCTL_TYPE_NET)
     self.assertEqual(fmac.fctl_l, 0)
     self.assertEqual(fmac.fctl_p, 0)
     self.assertEqual(fmac.fctl_n, 0)
     self.assertEqual(fmac.fctl_d, 0)
     self.assertEqual(fmac.fctl_i, 0)
     self.assertEqual(fmac.fctl_s, 1)
     self.assertEqual(fmac.exttype, b"")
     self.assertEqual(fmac.netid, b"")
     self.assertEqual(fmac.daddr, b"")
     self.assertEqual(fmac.saddr, b"\x35\x16")
     self.assertTrue(len(fmac.data) > 0)
     # Unpack APv6Frame
     fnet = fmac.data
     self.assertEqual(type(fnet), heymac.APv6Frame)
     self.assertEqual(fnet.iphc_prefix, 6)
     self.assertEqual(fnet.iphc_nhc, 1)
     self.assertEqual(fnet.iphc_hlim, 1)
     self.assertEqual(fnet.iphc_sam, 1)
     self.assertEqual(fnet.iphc_dam, 0)
     self.assertEqual(fnet.hops, 1)
     self.assertEqual(fnet.src, b"")
     self.assertEqual(fnet.dst, google_ipv6_addr)
     # Unpack UDP
     fudp = fnet.data
     self.assertEqual(type(fudp), heymac.APv6Udp)
     self.assertEqual(fudp.hdr_type, 0b11110)
     self.assertEqual(fudp.hdr_co, 1)
     self.assertEqual(fudp.hdr_ports, 0b10)
     self.assertEqual(fudp.chksum, b"")
     self.assertEqual(fudp.src_port, 0xF0B0)
     self.assertEqual(fudp.dst_port, 53)
     self.assertEqual(fudp.data, b"DnsRequest")
Ejemplo n.º 9
0
 def test_mac_net_udp_to_node(self, ):
     # Pack
     fmac = heymac.HeyMacFrame(fctl_type=heymac.HeyMacFrame.FCTL_TYPE_NET,
                               pend=0,
                               saddr=b"\x35\x16",
                               daddr=b"\x83\x11")
     fnet = heymac.APv6Frame()
     fudp = heymac.APv6Udp(src_port=0xF0BA,
                           dst_port=0xF0BF,
                           data=b"nodedata")
     fmac.data = fnet
     fnet.data = fudp
     b = bytes(fmac)
     self.assertEqual(b, b"\xe2\x85\x83\x11\x35\x16\xD7\xF7\xAFnodedata")
     # Unpack HeyMacFrame
     fmac = heymac.HeyMacFrame(b)
     self.assertEqual(fmac.pv_pid, fmac.PV_PID_HEYMAC)
     self.assertEqual(fmac.pv_ver, fmac.PV_VER_HEYMAC2)
     self.assertEqual(fmac.fctl_type, heymac.HeyMacFrame.FCTL_TYPE_NET)
     self.assertEqual(fmac.fctl_l, 0)
     self.assertEqual(fmac.fctl_p, 0)
     self.assertEqual(fmac.fctl_n, 0)
     self.assertEqual(fmac.fctl_d, 1)
     self.assertEqual(fmac.fctl_i, 0)
     self.assertEqual(fmac.fctl_s, 1)
     self.assertEqual(fmac.exttype, b"")
     self.assertEqual(fmac.netid, b"")
     self.assertEqual(fmac.daddr, b"\x83\x11")
     self.assertEqual(fmac.saddr, b"\x35\x16")
     self.assertTrue(len(fmac.data) > 0)
     # Unpack APv6Frame
     fnet = fmac.data
     self.assertEqual(type(fnet), heymac.APv6Frame)
     self.assertEqual(fnet.iphc_prefix, 6)
     self.assertEqual(fnet.iphc_nhc, 1)
     self.assertEqual(fnet.iphc_hlim, 1)
     self.assertEqual(fnet.iphc_sam, 1)
     self.assertEqual(fnet.iphc_dam, 1)
     self.assertEqual(fnet.hops, 1)
     self.assertEqual(fnet.src, b"")
     self.assertEqual(fnet.dst, b"")
     # Unpack UDP
     fudp = fnet.data
     self.assertEqual(type(fudp), heymac.APv6Udp)
     self.assertEqual(fudp.hdr_type, 0b11110)
     self.assertEqual(fudp.hdr_co, 1)
     self.assertEqual(fudp.hdr_ports, 0b11)
     self.assertEqual(fudp.chksum, b"")
     self.assertEqual(fudp.src_port, 0xF0BA)
     self.assertEqual(fudp.dst_port, 0xF0BF)
     self.assertEqual(fudp.data, b"nodedata")
Ejemplo n.º 10
0
 def test_dst_addr(self, ):
     # Pack
     f = heymac.APv6Frame(
         dst=
         b"\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
     )
     b = bytes(f)
     self.assertEqual(
         b,
         b"\xD6\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
     )
     # Unpack
     f = heymac.APv6Frame(b)
     self.assertEqual(f.iphc_prefix, 6)
     self.assertEqual(f.iphc_nhc, 1)
     self.assertEqual(f.iphc_hlim, 1)
     self.assertEqual(f.iphc_sam, 1)
     self.assertEqual(f.iphc_dam, 0)
     self.assertEqual(f.hops, 0x01)
     self.assertEqual(f.src, b"")
     self.assertEqual(
         f.dst,
         b"\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
     )
Ejemplo n.º 11
0
 def test_net_data(self,):
     # Pack
     f = heymac.HeyMacFrame()
     f.data = heymac.APv6Frame()
     b = bytes(f)
     self.assertEqual(b, b"\xE0\x00\xD7")
     # Unpack
     f = heymac.HeyMacFrame(b)
     self.assertEqual(f.fctl_x, 0)
     self.assertEqual(f.fctl_l, 0)
     self.assertEqual(f.fctl_n, 0)
     self.assertEqual(f.fctl_d, 0)
     self.assertEqual(f.fctl_i, 0)
     self.assertEqual(f.fctl_s, 0)
     self.assertEqual(f.fctl_m, 0)
     self.assertEqual(f.fctl_p, 0)
     self.assertEqual(f.netid, b"")
     self.assertEqual(f.daddr, b"")
     self.assertEqual(f.saddr, b"")
     self.assertEqual(type(f.payld), heymac.APv6Frame)
Ejemplo n.º 12
0
 def test_nhc_extreme_value(self, ):
     # Pack
     with self.assertRaises(AssertionError):
         f = heymac.APv6Frame(iphc_nhc=999)
Ejemplo n.º 13
0
 def test_nhc_uncompressed(self, ):
     # Only compressed next-headers are supported at this time
     # Uncompressed headers should raise an AssertionError
     with self.assertRaises(AssertionError):
         f = heymac.APv6Frame(iphc_nhc=0)