Example #1
0
 def test_ttls_message_parses(self):
     packed_message = bytes.fromhex("000000111101444444444444888e"
                                    "01000006016900061520")
     message = MessageParser.ethernet_parse(packed_message)[0]
     self.assertEqual(MacAddress.from_string("44:44:44:44:44:44"),
                      message.src_mac)
     self.assertEqual(105, message.message_id)
     self.assertIsInstance(message, TtlsMessage)
Example #2
0
 def test_legacy_nak_message_parses(self):
     packed_message = bytes.fromhex("0180c2000003000000111101888e"
                                    "01000006026800060315")
     message = MessageParser.ethernet_parse(packed_message)[0]
     self.assertEqual(MacAddress.from_string("00:00:00:11:11:01"),
                      message.src_mac)
     self.assertEqual(104, message.message_id)
     self.assertIsInstance(message, LegacyNakMessage)
Example #3
0
 def test_failure_message_parses(self):
     packed_message = bytes.fromhex(
         "0180c2000003001906eab88c888e0100000404ff0004")
     message = MessageParser.ethernet_parse(packed_message)[0]
     self.assertEqual(MacAddress.from_string("00:19:06:ea:b8:8c"),
                      message.src_mac)
     self.assertEqual(255, message.message_id)
     self.assertTrue(isinstance(message, FailureMessage))
Example #4
0
 def test_peap_message_parses(self):
     packed_message = bytes.fromhex("000000111101444444444444888e"
                                    "010000b2026900b2190016030100a7010000a303038c8007fa4ffe8f11fbe62debce4a1385e70be51efe77b105d205d2dc9ae815a5000038c02cc030009fcca9cca8ccaac02bc02f009ec024c028006bc023c0270067c00ac0140039c009c0130033009d009c003d003c0035002f00ff01000042000b000403000102000a000a0008001d0017001900180016000000170000000d0020001e060106020603050105020503040104020403030103020303020102020203")  # pylint: disable=line-too-long
     message = MessageParser.ethernet_parse(packed_message)[0]
     self.assertEqual(MacAddress.from_string("44:44:44:44:44:44"),
                      message.src_mac)
     self.assertEqual(105, message.message_id)
     self.assertEqual(0, message.flags)
     self.assertIsInstance(message, PeapMessage)
Example #5
0
 def test_identity_request_message_parses(self):  # pylint: disable=invalid-name
     packed_message = bytes.fromhex(
         "0180c2000003001906eab88c888e010000050101000501000000")
     message = MessageParser.ethernet_parse(packed_message)[0]
     self.assertEqual(MacAddress.from_string("00:19:06:ea:b8:8c"),
                      message.src_mac)
     self.assertEqual(1, message.message_id)
     self.assertEqual(Eap.REQUEST, message.code)
     self.assertEqual("", message.identity)
Example #6
0
 def test_identity_response_message_parses(self):  # pylint: disable=invalid-name
     packed_message = bytes.fromhex(
         "0180c2000003001422e9545e888e0100001102000011014a6f686e2e4d63477569726b"
     )
     message = MessageParser.ethernet_parse(packed_message)[0]
     self.assertEqual(MacAddress.from_string("00:14:22:e9:54:5e"),
                      message.src_mac)
     self.assertEqual(0, message.message_id)
     self.assertEqual(Eap.RESPONSE, message.code)
     self.assertEqual("John.McGuirk", message.identity)
Example #7
0
 def test_md5_challenge_response_message_parses(self):  # pylint: disable=invalid-name
     packed_message = bytes.fromhex(
         "0180c2000003001422e9545e888e010000220201002204103a535f0ee8c6b34fe714aa7dad9a0e154a6f686e2e4d63477569726b")  # pylint: disable=line-too-long
     message = MessageParser.ethernet_parse(packed_message)[0]
     self.assertEqual(MacAddress.from_string("00:14:22:e9:54:5e"),
                      message.src_mac)
     self.assertEqual(1, message.message_id)
     self.assertEqual(Eap.RESPONSE, message.code)
     self.assertEqual(bytes.fromhex("3a535f0ee8c6b34fe714aa7dad9a0e15"),
                      message.challenge)
     self.assertEqual(b"John.McGuirk", message.extra_data)
Example #8
0
 def test_md5_challenge_request_message_parses(self):  # pylint: disable=invalid-name
     packed_message = bytes.fromhex(
         "0180c2000003001906eab88c888e01000016010100160410824788d693e2adac6ce15641418228cf0000"
     )
     message = MessageParser.ethernet_parse(packed_message)[0]
     self.assertEqual(MacAddress.from_string("00:19:06:ea:b8:8c"),
                      message.src_mac)
     self.assertEqual(1, message.message_id)
     self.assertEqual(Eap.REQUEST, message.code)
     self.assertEqual(bytes.fromhex("824788d693e2adac6ce15641418228cf"),
                      message.challenge)
     self.assertEqual(b"", message.extra_data)
Example #9
0
 def receive_eap_messages(self):
     """receive eap messages from supplicant forever."""
     while self.running():
         sleep(0)
         self.logger.info("waiting for eap.")
         packed_message = self.eap_socket.receive()
         self.logger.info("Received packed_message: %s",
                          str(packed_message))
         try:
             eap, dst_mac = MessageParser.ethernet_parse(packed_message)
         except MessageParseError as exception:
             self.logger.info(
                 "MessageParser.ethernet_parse threw exception.\n"
                 " packed_message: '%s'.\n"
                 " exception: '%s'.", packed_message, exception)
             continue
         self.send_eap_to_state_machine(eap, dst_mac)
Example #10
0
 def test_eapol_logoff_message_parses(self):  # pylint: disable=invalid-name
     packed_message = bytes.fromhex("0180c2000003001906eab88c888e01020000")
     message = MessageParser.ethernet_parse(packed_message)[0]
     self.assertEqual(MacAddress.from_string("00:19:06:ea:b8:8c"),
                      message.src_mac)
     self.assertTrue(isinstance(message, EapolLogoffMessage))
Example #11
0
 def test_eapol_start_message_parses(self):
     packed_message = bytes.fromhex("0180c2000003001906eab88c888e01010000")
     message = MessageParser.ethernet_parse(packed_message)[0]
     self.assertEqual(MacAddress.from_string("00:19:06:ea:b8:8c"),
                      message.src_mac)
     self.assertTrue(isinstance(message, EapolStartMessage))