1# Copyright (c) 2017, The MITRE Corporation. All rights reserved. 2# See LICENSE.txt for complete terms. 3 4from mixbox import entities 5from mixbox import fields 6 7import cybox.bindings.dns_query_object as dns_query_binding 8from cybox.common import DateTime, ObjectProperties, String, HexBinary 9from cybox.objects.uri_object import URI 10from cybox.objects.dns_record_object import DNSRecord 11 12 13class DNSResourceRecords(entities.EntityList): 14 _binding = dns_query_binding 15 _binding_class = dns_query_binding.DNSResourceRecordsType 16 _namespace = "http://cybox.mitre.org/objects#DNSQueryObject-2" 17 resource_record = fields.TypedField("Resource_Record", DNSRecord, multiple=True) 18 19 20class DNSQuestion(entities.Entity): 21 _namespace = "http://cybox.mitre.org/objects#DNSQueryObject-2" 22 _binding = dns_query_binding 23 _binding_class = dns_query_binding.DNSQuestionType 24 25 qname = fields.TypedField("QName", URI) 26 qtype = fields.TypedField("QType", String) 27 qclass = fields.TypedField("QClass", String) 28 29 30class DNSQuery(ObjectProperties): 31 _binding = dns_query_binding 32 _binding_class = dns_query_binding.DNSQueryObjectType 33 _namespace = "http://cybox.mitre.org/objects#DNSQueryObject-2" 34 _XSI_NS = "DNSQueryObj" 35 _XSI_TYPE = "DNSQueryObjectType" 36 37 successful = fields.TypedField("successful") 38 transaction_id = fields.TypedField("Transaction_ID", HexBinary) 39 question = fields.TypedField("Question", DNSQuestion) 40 answer_resource_records = fields.TypedField("Answer_Resource_Records", DNSResourceRecords) 41 authority_resource_records = fields.TypedField("Authority_Resource_Records", DNSResourceRecords) 42 additional_records = fields.TypedField("Additional_Records", DNSResourceRecords) 43 date_ran = fields.TypedField("Date_Ran", DateTime) 44 service_used = fields.TypedField("Service_Used", String) 45