예제 #1
0
 def test_auth_8021x_packs(self):
     expected_packed_message = build_byte_string("010000050101000501")
     message = Auth8021x(version=1,
                         packet_type=0,
                         data=build_byte_string("0101000501"))
     packed_message = message.pack()
     self.assertEqual(expected_packed_message, packed_message)
예제 #2
0
def supplicant_replies():
    """generator for packets supplicant sends"""
    header = "0000000000010242ac17006f888e"
    replies = [build_byte_string(header + "01000009027400090175736572"),
               build_byte_string(header + "010000160275001604103abcadc86714b2d75d09dd7ff53edf6b")]

    for reply in replies:
        yield reply
예제 #3
0
 def test_ethernet_packet_packs(self):
     expected_packed_message = build_byte_string(
         "0180c2000003001906eab88c888e0100000501010005010000")
     message = EthernetPacket(
         dst_mac=MacAddress.from_string("01:80:c2:00:00:03"),
         src_mac=MacAddress.from_string("00:19:06:ea:b8:8c"),
         ethertype=0x888e,
         data=build_byte_string("0100000501010005010000"))
     packed_message = message.pack()
     self.assertEqual(expected_packed_message, packed_message)
예제 #4
0
 def test_ethernet_packet_parses(self):
     packed_message = build_byte_string(
         "0180c2000003001906eab88c888e0100000501010005010000")
     message = EthernetPacket.parse(packed_message)
     self.assertEqual(message.src_mac,
                      MacAddress.from_string("00:19:06:ea:b8:8c"))
     self.assertEqual(message.dst_mac,
                      MacAddress.from_string("01:80:c2:00:00:03"))
     self.assertEqual(message.ethertype, 0x888e)
     self.assertEqual(message.data,
                      build_byte_string("0100000501010005010000"))
예제 #5
0
 def test_md5_challenge_request_message_parses(self):
     packed_message = build_byte_string(
         "0180c2000003001906eab88c888e01000016010100160410824788d693e2adac6ce15641418228cf0000"
     )
     message = MessageParser.parse(packed_message)
     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(build_byte_string("824788d693e2adac6ce15641418228cf"),
                      message.challenge)
     self.assertEqual(b"", message.extra_data)
예제 #6
0
 def test_md5_challenge_response_message_parses(self):
     packed_message = build_byte_string(
         "0180c2000003001422e9545e888e010000220201002204103a535f0ee8c6b34fe714aa7dad9a0e154a6f686e2e4d63477569726b"
     )
     message = MessageParser.parse(packed_message)
     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(build_byte_string("3a535f0ee8c6b34fe714aa7dad9a0e15"),
                      message.challenge)
     self.assertEqual(b"John.McGuirk", message.extra_data)
예제 #7
0
 def test_md5_challenge_request_message_packs(self):
     expected_packed_message = build_byte_string(
         "0180c2000003001906eab88c888e01000016010100160410824788d693e2adac6ce15641418228cf"
     )
     message = Md5ChallengeMessage(
         src_mac=MacAddress.from_string("00:19:06:ea:b8:8c"),
         message_id=1,
         code=Eap.REQUEST,
         challenge=build_byte_string("824788d693e2adac6ce15641418228cf"),
         extra_data=b"")
     packed_message = MessagePacker.pack(
         message, MacAddress.from_string("01:80:c2:00:00:03"))
     self.assertEqual(expected_packed_message, packed_message)
예제 #8
0
 def test_md5_challenge_response_message_packs(self):
     expected_packed_message = build_byte_string(
         "0180c2000003001422e9545e888e010000220201002204103a535f0ee8c6b34fe714aa7dad9a0e154a6f686e2e4d63477569726b"
     )
     message = Md5ChallengeMessage(
         src_mac=MacAddress.from_string("00:14:22:e9:54:5e"),
         message_id=1,
         code=Eap.RESPONSE,
         challenge=build_byte_string("3a535f0ee8c6b34fe714aa7dad9a0e15"),
         extra_data=b"John.McGuirk")
     packed_message = MessagePacker.pack(
         message, MacAddress.from_string("01:80:c2:00:00:03"))
     self.assertEqual(expected_packed_message, packed_message)
예제 #9
0
 def test_radius_access_challenge_packs2(self):
     expected_packed_message = build_byte_string(
         "0b06042c"
         "54dbc73332c00c0347fc4b462d1811a74fff016a03ec15c000000a76160303003e0200003a0303114aa9dae3f9d452ca12535b03aee03cd4dabe3ca7639929dd3b645d1f86ad6500c030000012ff01000100000b000403000102000f00010116030308d30b0008cf0008cc0003de308203da308202c2a003020102020101300d06092a864886f70d01010b0500308193310b3009060355040613024652310f300d06035504080c065261646975733112301006035504070c09536f6d65776865726531153013060355040a0c0c4578616d706c6520496e632e3120301e06092a864886f70d010901161161646d696e406578616d706c652e6f72673126302406035504030c1d4578616d706c6520434fff6572746966696361746520417574686f72697479301e170d3138303630353033353134345a170d3138303830343033353134345a307c310b3009060355040613024652310f300d06035504080c0652616469757331153013060355040a0c0c4578616d706c6520496e632e3123302106035504030c1a4578616d706c65205365727665722043657274696669636174653120301e06092a864886f70d010901161161646d696e406578616d706c652e6f726730820122300d06092a864886f70d01010105000382010f003082010a0282010100cf5456d7e6142383101cf79275f6396e2c9b3f7cb2878d35e5ecc6f47ee11ef20bc8a8b3217a89351c554fff856e5cd5eed2d10037c9bcce89fbdf927e4cc4f069863acbac4accee7e80f2105ad80d837fa50a931c5b41d03c993f5e338cfd8e69e23818360053501c34c08132ec3d6e14df89ff29c5cec5c7a87d48c4afdcf9d3f8290050be5b903ba6a2a5ce2eb79c922cae70869618c75923059f9a8d62144e8ecdaf0a9f02886afa0e73e3d68037ea9fdca2bdd0f0785e05f5ac88031010c105575dbb09eb4f307547622120ee384ab454376de8e14e0afea02f1211801b6c932324ef6dba7abf3f48f8e3e84716c40b59041ec936cb273d684b22aa1c9d24e10203010001a34f304d30130603551d25040c300a06082b0601050507030130360603551d1f042f4ff7302d302ba029a0278625687474703a2f2f7777772e6578616d706c652e636f6d2f6578616d706c655f63612e63726c300d06092a864886f70d01010b0500038201010054fdcdabdc3a153dc167d6b210d1b324ecfac0e3b8d385704463a7f8ebf46e2e6952f249f4436ec66760868860e5ed50b519ec14628179472c312f507bc9349971d21f8f2b7d6b329b02fab448bd90fd4ce4dfbc78f23a8c4eed74d5589f4c3bd11b552535b8ab8a1a6ab9d1dfda21f247a93354702c12fdde1113cb8dd0e46e2a3a94547c9871df2a88943751d8276dc43f7f6aed921f43f6a33f9beba804c3d2b5781d754abe36ba58461798be8585b8b2"
         "501226e219fc875fd78976eb2b9b475b1488"
         "1812c1591073c33305b4fa8bd26dd27eafd9")
     attr_list = list()
     attr_list.append(
         EAPMessage.parse(
             bytes.fromhex(
                 "016a03ec15c000000a76160303003e0200003a0303114aa9dae3f9d452ca12535b03aee03cd4dabe3ca7639929dd3b645d1f86ad6500c030000012ff01000100000b000403000102000f00010116030308d30b0008cf0008cc0003de308203da308202c2a003020102020101300d06092a864886f70d01010b0500308193310b3009060355040613024652310f300d06035504080c065261646975733112301006035504070c09536f6d65776865726531153013060355040a0c0c4578616d706c6520496e632e3120301e06092a864886f70d010901161161646d696e406578616d706c652e6f72673126302406035504030c1d4578616d706c652043"
                 "6572746966696361746520417574686f72697479301e170d3138303630353033353134345a170d3138303830343033353134345a307c310b3009060355040613024652310f300d06035504080c0652616469757331153013060355040a0c0c4578616d706c6520496e632e3123302106035504030c1a4578616d706c65205365727665722043657274696669636174653120301e06092a864886f70d010901161161646d696e406578616d706c652e6f726730820122300d06092a864886f70d01010105000382010f003082010a0282010100cf5456d7e6142383101cf79275f6396e2c9b3f7cb2878d35e5ecc6f47ee11ef20bc8a8b3217a89351c55"
                 "856e5cd5eed2d10037c9bcce89fbdf927e4cc4f069863acbac4accee7e80f2105ad80d837fa50a931c5b41d03c993f5e338cfd8e69e23818360053501c34c08132ec3d6e14df89ff29c5cec5c7a87d48c4afdcf9d3f8290050be5b903ba6a2a5ce2eb79c922cae70869618c75923059f9a8d62144e8ecdaf0a9f02886afa0e73e3d68037ea9fdca2bdd0f0785e05f5ac88031010c105575dbb09eb4f307547622120ee384ab454376de8e14e0afea02f1211801b6c932324ef6dba7abf3f48f8e3e84716c40b59041ec936cb273d684b22aa1c9d24e10203010001a34f304d30130603551d25040c300a06082b0601050507030130360603551d1f042f"
                 "302d302ba029a0278625687474703a2f2f7777772e6578616d706c652e636f6d2f6578616d706c655f63612e63726c300d06092a864886f70d01010b0500038201010054fdcdabdc3a153dc167d6b210d1b324ecfac0e3b8d385704463a7f8ebf46e2e6952f249f4436ec66760868860e5ed50b519ec14628179472c312f507bc9349971d21f8f2b7d6b329b02fab448bd90fd4ce4dfbc78f23a8c4eed74d5589f4c3bd11b552535b8ab8a1a6ab9d1dfda21f247a93354702c12fdde1113cb8dd0e46e2a3a94547c9871df2a88943751d8276dc43f7f6aed921f43f6a33f9beba804c3d2b5781d754abe36ba58461798be8585b8b2"
             )))
     attr_list.append(
         MessageAuthenticator.parse(
             bytes.fromhex("26e219fc875fd78976eb2b9b475b1488")))
     attr_list.append(
         State.parse(bytes.fromhex("c1591073c33305b4fa8bd26dd27eafd9")))
     attributes = RadiusAttributesList(attr_list)
     access_challenge = RadiusAccessChallenge(
         6, "54dbc73332c00c0347fc4b462d1811a7", attributes)
     packed_message = access_challenge.pack()
     self.assertEqual(len(expected_packed_message), len(packed_message))
     self.assertEqual(expected_packed_message, packed_message)
예제 #10
0
 def test_radius_access_request_parses(self):
     packed_message = build_byte_string(
         "010000a3982a0ba06d3557f0dbc8ba6e823822f1010b686f737431757365721e1434342d34342d34342d34342d34342d34343a3d06000000130606000000021f1330302d30302d30302d31312d31312d30314d17434f4e4e45435420304d627073203830322e3131622c12433634383030344139433930353537390c06000005784f100201000e01686f73743175736572501273f82750f6f261a95a7cc7d318b9f573"
     )
     message = Radius.parse(packed_message, secret="SECRET")
     self.assertEqual(message.packet_id, 0)
     self.assertEqual(message.authenticator,
                      "982a0ba06d3557f0dbc8ba6e823822f1")
     msg_attr = message.attributes
     self.assertEqual(len(msg_attr.attributes), 10)
     self.assertEqual(
         msg_attr.find(UserName.DESCRIPTION).data_type.data, 'host1user')
     self.assertEqual(
         msg_attr.find(CalledStationId.DESCRIPTION).data_type.data,
         "44-44-44-44-44-44:")
     self.assertEqual(
         msg_attr.find(NASPortType.DESCRIPTION).data_type.data, 19)
     self.assertEqual(
         msg_attr.find(ServiceType.DESCRIPTION).data_type.data, 2)
     self.assertEqual(
         msg_attr.find(ConnectInfo.DESCRIPTION).data_type.data,
         "CONNECT 0Mbps 802.11b")
     self.assertEqual(
         msg_attr.find(AcctSessionId.DESCRIPTION).data_type.data,
         "C648004A9C905579")
     self.assertEqual(
         msg_attr.find(FramedMTU.DESCRIPTION).data_type.data, 1400)
     self.assertEqual(
         msg_attr.find(EAPMessage.DESCRIPTION).data_type.data.hex(),
         "0201000e01686f73743175736572")
     self.assertEqual(
         msg_attr.find(
             MessageAuthenticator.DESCRIPTION).data_type.data.hex(),
         "73f82750f6f261a95a7cc7d318b9f573")
예제 #11
0
 def test_auth_8021x_parses(self):
     packed_message = build_byte_string(
         "0180c2000003001906eab88c888e01000005010100050100000000")
     message = Auth8021x.parse(packed_message)
     self.assertEqual(message.version, 1)
     self.assertEqual(message.packet_type, 0)
     self.assertEqual(len(message.data), 5)
예제 #12
0
    def test_radius_access_request_packs(self):
        expected_packed_message = build_byte_string(
            "010e01dc688d6504db3c757243f995d5f0d32e50010b686f737431757365721e1434342d34342d34342d34342d34342d34343a3d06000000130606000000021f1330302d30302d30302d31312d31312d30314d17434f4e4e45435420304d627073203830322e3131622c12433634383030344139433930353537390c06000005784fff02250133150016030101280100012403032c36dbf8ee16b94b28efdb8c5603e07823f9b716557b5ef2624b026daea115760000aac030c02cc028c024c014c00a00a500a300a1009f006b006a0069006800390038003700360088008700860085c032c02ec02ac026c00fc005009d003d00350084c02fc02bc027c023c013c00900a400a200a0009e00670040003f003e0033003200310030009a0099009800970045004400430042c031c02dc029c025c00ec004009c003c002f00960041c011c007c00cc00200050004c012c008001600130010000dc00dc003000a00ff01000051000b000403000102000a001c001a00170019001c001b0018001a004f3816000e000d000b000c0009000a000d0020001e060106020603050105020503040104020403030103020303020102020203000f0001011812cefe6083cfdb75dd64722c274ec353725012ab67ed568931f12d258f9ffda931159e"
        )

        attr_list = list()
        attr_list.append(UserName.parse("host1user".encode()))
        attr_list.append(CalledStationId.parse("44-44-44-44-44-44:".encode()))
        attr_list.append(NASPortType.parse(bytes.fromhex("00000013")))
        attr_list.append(ServiceType.parse(bytes.fromhex("00000002")))
        attr_list.append(CallingStationId.parse("00-00-00-11-11-01".encode()))
        attr_list.append(ConnectInfo.parse("CONNECT 0Mbps 802.11b".encode()))
        attr_list.append(AcctSessionId.parse("C648004A9C905579".encode()))
        attr_list.append(FramedMTU.parse(bytes.fromhex("00000578")))

        attr_list.append(
            EAPMessage.parse(
                bytes.fromhex(
                    "02250133150016030101280100012403032c36dbf8ee16b94b28efdb8c5603e07823f9b716557b5ef2624b026daea115760000aac030c02cc028c024c014c00a00a500a300a1009f006b006a0069006800390038003700360088008700860085c032c02ec02ac026c00fc005009d003d00350084c02fc02bc027c023c013c00900a400a200a0009e00670040003f003e0033003200310030009a0099009800970045004400430042c031c02dc029c025c00ec004009c003c002f00960041c011c007c00cc00200050004c012c008001600130010000dc00dc003000a00ff01000051000b000403000102000a001c001a00170019001c001b0018001a0016000e000d000b000c0009000a000d0020001e060106020603050105020503040104020403030103020303020102020203000f000101"
                )))
        attr_list.append(
            State.parse(bytes.fromhex("cefe6083cfdb75dd64722c274ec35372")))
        attr_list.append(
            MessageAuthenticator.parse(
                bytes.fromhex("00000000000000000000000000000000")))

        attributes = RadiusAttributesList(attr_list)
        access_request = RadiusAccessRequest(
            14, "688d6504db3c757243f995d5f0d32e50", attributes)
        packed_message = access_request.build("SECRET")

        self.assertEqual(len(expected_packed_message), len(packed_message))
        self.assertEqual(expected_packed_message, packed_message)
예제 #13
0
 def test_eapol_logoff_message_parses(self):
     packed_message = build_byte_string(
         "0180c2000003001906eab88c888e01020000")
     message = MessageParser.parse(packed_message)
     self.assertEqual(MacAddress.from_string("00:19:06:ea:b8:8c"),
                      message.src_mac)
     self.assertTrue(isinstance(message, EapolLogoffMessage))
예제 #14
0
 def test_auth_8021x_parses(self):
     packed_message = build_byte_string("0101000501")
     message = Eap.parse(packed_message)
     self.assertEqual(message.code, 1)
     self.assertEqual(message.packet_id, 1)
     self.assertEqual(message.length, 5)
     self.assertEqual(message.packet_type, 1)
예제 #15
0
 def test_failure_message_parses(self):
     packed_message = build_byte_string(
         "0180c2000003001906eab88c888e0100000404ff0004")
     message = MessageParser.parse(packed_message)
     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))
예제 #16
0
 def test_eapol_logoff_message_packs(self):
     expected_packed_message = build_byte_string(
         "0180c2000003001906eab88c888e01020000")
     message = EapolLogoffMessage(
         src_mac=MacAddress.from_string("00:19:06:ea:b8:8c"))
     packed_message = MessagePacker.pack(
         message, MacAddress.from_string("01:80:c2:00:00:03"))
     self.assertEqual(expected_packed_message, packed_message)
예제 #17
0
 def test_identity_request_message_parses(self):
     packed_message = build_byte_string(
         "0180c2000003001906eab88c888e010000050101000501000000")
     message = MessageParser.parse(packed_message)
     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)
예제 #18
0
 def test_success_message_packs(self):
     expected_packed_message = build_byte_string(
         "0180c2000003001906eab88c888e0100000403ff0004")
     message = SuccessMessage(
         src_mac=MacAddress.from_string("00:19:06:ea:b8:8c"),
         message_id=255)
     packed_message = MessagePacker.pack(
         message, MacAddress.from_string("01:80:c2:00:00:03"))
     self.assertEqual(expected_packed_message, packed_message)
예제 #19
0
 def test_failure_message_packs(self):
     expected_packed_message = build_byte_string(
         "000000000001001906eab88c888e0100000404ff0004")
     message = FailureMessage(
         src_mac=MacAddress.from_string("00:19:06:ea:b8:8c"),
         message_id=255)
     packed_message = MessagePacker.pack(
         message, MacAddress.from_string("00:00:00:00:00:01"))
     self.assertEqual(expected_packed_message, packed_message)
예제 #20
0
파일: chewy.py 프로젝트: samrussell/chewy
    def run_demo(self):
        print("Sending packet")
        identity_request = build_byte_string("888e010000050101000501")
        packet = self.EAP_ADDRESS + self.interface_address + identity_request
        self.socket.send(packet)
        response = self.socket.recv(4096)
        self.handle_eap_packet(response)
        challenge = build_byte_string(
            "888e01000016010100160410824788d693e2adac6ce15641418228cf")
        packet = self.EAP_ADDRESS + self.interface_address + challenge
        self.socket.send(packet)
        response = self.socket.recv(4096)
        self.handle_eap_packet(response)
        # send success to keep it happy
        success = build_byte_string("888e0100000403010004")
        packet = self.EAP_ADDRESS + self.interface_address + success
        self.socket.send(packet)

        self.socket.close()
예제 #21
0
 def test_identity_response_message_parses(self):
     packed_message = build_byte_string(
         "0180c2000003001422e9545e888e0100001102000011014a6f686e2e4d63477569726b"
     )
     message = MessageParser.parse(packed_message)
     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)
예제 #22
0
 def test_incorrect_challenge_received_moves_to_idle(self):
     txn_id = 123
     challenge = build_byte_string("01234567890abcdef01234567890abcdef")
     password = "******"
     id_string = struct.pack("B", txn_id)
     challenge_response = md5(id_string + password.encode() + challenge).digest()
     message = Md5ChallengeMessage(
         MacAddress.from_string("00:12:34:56:78:90"), self.state_machine.txn_id, Eap.RESPONSE, challenge_response, b"who cares")
     self.state_machine.event(EventMessageReceived(message))
     self.assertEqual(self.state_machine.state, "idle")
     self.assertEqual(self.state_machine.output_messages.qsize(), 1)
예제 #23
0
 def test_identity_request_message_packs(self):
     expected_packed_message = build_byte_string(
         "0180c2000003001906eab88c888e010000050101000501")
     message = IdentityMessage(
         src_mac=MacAddress.from_string("00:19:06:ea:b8:8c"),
         message_id=1,
         code=Eap.REQUEST,
         identity="")
     packed_message = MessagePacker.pack(
         message, MacAddress.from_string("01:80:c2:00:00:03"))
     self.assertEqual(expected_packed_message, packed_message)
예제 #24
0
 def test_identity_response_message_packs(self):
     expected_packed_message = build_byte_string(
         "0180c2000003001422e9545e888e0100001102000011014a6f686e2e4d63477569726b"
     )
     message = IdentityMessage(
         src_mac=MacAddress.from_string("00:14:22:e9:54:5e"),
         message_id=0,
         code=Eap.RESPONSE,
         identity="John.McGuirk")
     packed_message = MessagePacker.pack(
         message, MacAddress.from_string("01:80:c2:00:00:03"))
     self.assertEqual(expected_packed_message, packed_message)
예제 #25
0
    def test_success_dot1x(self):
        """Test success api"""

        FROM_SUPPLICANT.put(build_byte_string("0000000000010242ac17006f888e01010000"))
        time.sleep(5)
        with open('%s/faucet.log' % self.tmpdir, 'r') as log:
            for line in log.readlines():
                if 'Successful auth' in line:
                    break
            else:
                self.fail('Cannot find "Successful auth" string in faucet.log')
        self.assertEqual(1,
                         len(self.last_flows_to_dp[1]), self.last_flows_to_dp)
예제 #26
0
 def test_radius_access_accept_parses(self):
     packed_message = build_byte_string(
         "0201004602970aff2ef0700780f70848e90d24101a0f00003039010973747564656e744f06030200045012d7ec84e8864dd6cd00916c1d5a3cf41b010b686f73743175736572"
     )
     message = Radius.parse(
         packed_message,
         secret="SECRET",
         request_authenticator="a0b4ace0b367114b1a16d76e2bfed5d8")
     self.assertEqual(message.packet_id, 1)
     self.assertEqual(message.authenticator,
                      "02970aff2ef0700780f70848e90d2410")
     msg_attr = message.attributes
     self.assertEqual(len(msg_attr.attributes), 4)
     self.assertEqual(
         msg_attr.find(EAPMessage.DESCRIPTION).data_type.data.hex(),
         "03020004")
     self.assertEqual(
         msg_attr.find(
             MessageAuthenticator.DESCRIPTION).data_type.data.hex(),
         "d7ec84e8864dd6cd00916c1d5a3cf41b")
     self.assertEqual(
         msg_attr.find(UserName.DESCRIPTION).data_type.data, 'host1user')
예제 #27
0
 def test_radius_access_challenge_parses(self):
     packed_message = build_byte_string(
         "0b00005056d9280d3e4fed327eb31cf1823f8c244f1801020016041074d3db089b727d9cc5774599e4a32a295012ecc840b316217c851bd6708afb554b24181219ddf6d119dff272fa2fe16c34990c7d"
     )
     message = Radius.parse(
         packed_message,
         secret="SECRET",
         request_authenticator="982a0ba06d3557f0dbc8ba6e823822f1")
     self.assertEqual(message.packet_id, 0)
     self.assertEqual(message.authenticator,
                      "56d9280d3e4fed327eb31cf1823f8c24")
     msg_attr = message.attributes
     self.assertEqual(len(msg_attr.attributes), 3)
     self.assertEqual(
         msg_attr.find(EAPMessage.DESCRIPTION).data_type.data.hex(),
         "01020016041074d3db089b727d9cc5774599e4a32a29")
     self.assertEqual(
         msg_attr.find(
             MessageAuthenticator.DESCRIPTION).data_type.data.hex(),
         "ecc840b316217c851bd6708afb554b24")
     self.assertEqual(
         msg_attr.find(State.DESCRIPTION).data_type.data.hex(),
         "19ddf6d119dff272fa2fe16c34990c7d")
예제 #28
0
 def test_radius_access_accept_packs(self):
     expected_packed_message = build_byte_string(
         "02010046"
         "02970aff2ef0700780f70848e90d2410"
         "1a0f00003039010973747564656e74"
         "4f0603020004"
         "5012d7ec84e8864dd6cd00916c1d5a3cf41b"
         "010b686f73743175736572")
     attr_list = list()
     attr_list.append(
         VendorSpecific.parse(bytes.fromhex("00003039010973747564656e74")))
     attr_list.append(EAPMessage.parse(bytes.fromhex("03020004")))
     attr_list.append(
         MessageAuthenticator.parse(
             bytes.fromhex("d7ec84e8864dd6cd00916c1d5a3cf41b")))
     attr_list.append(UserName.parse("host1user".encode()))
     attributes = RadiusAttributesList(attr_list)
     access_accept = RadiusAccessAccept(1,
                                        "02970aff2ef0700780f70848e90d2410",
                                        attributes)
     packed_message = access_accept.pack()
     self.assertEqual(len(expected_packed_message), len(packed_message))
     self.assertEqual(expected_packed_message, packed_message)
예제 #29
0
파일: chewy.py 프로젝트: samrussell/chewy
 def handle_eap_packet(self, packed_message):
     auth_8021x = Auth8021x.parse(packed_message)
     print("packed message: %s" % packed_message)
     eap = Eap.parse(auth_8021x.data)
     print("data: %s" % auth_8021x.data)
     if eap.packet_type == 1:
         print("Eap packet type identity")
         identity = EapIdentity.parse(eap.data)
         print("Identity: %s" % identity.identity)
     elif eap.packet_type == 4:
         print("Eap packet type md5-challenge")
         challenge = EapMd5Challenge.parse(eap.data)
         print("Response: %s" % unpack_byte_string(challenge.value))
         challenge_salt = build_byte_string(
             "824788d693e2adac6ce15641418228cf")
         password = "******".encode()
         challenge_id = 1
         challenge_id_string = struct.pack("B", challenge_id)
         expected_response = md5(challenge_id_string + password +
                                 challenge_salt).digest()
         print("Expected response: %s" %
               unpack_byte_string(expected_response))
     else:
         print("Unknown Eap packet type: %d" % eap.packet_type)
예제 #30
0
파일: test_eap.py 프로젝트: gizmoguy/chewie
 def test_eap_identity_parses(self):
     packed_message = build_byte_string("0101000501")
     message = Eap.parse(packed_message)
     self.assertEqual(message.packet_id, 1)
     self.assertEqual(message.identity, "")