Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class DnsPacket(BigEndianStructure):
- """ Class representative to DNS header.
- This class handle a bytes buffer in ctypes field mode """
- def __new__(cls, buffer):
- return cls.from_buffer_copy(buffer)
- _fields_ = [('identification', c_uint, 16),
- ('query_type', c_uint, 1),
- ('optional_code', c_uint, 4),
- ('authoritative_answer', c_uint, 1),
- ('truncation', c_uint, 1),
- ('recursion_desired', c_uint, 1),
- ('recursion_available', c_uint, 1),
- ('reserved_for_future', c_uint, 3),
- ('response_code', c_uint, 4),
- ('question_count', c_uint, 16),
- ('answer_count', c_uint, 16),
- ('nameserver_count', c_uint, 16),
- ('aditional_count', c_uint, 16)]
- 1 1 1 1 1 1
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | |
- / QNAME /
- / /
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | QTYPE |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | QCLASS |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- class QuestionSection(BigEndianStructure):
- _fields_ = [('size', c_uint), # Primeiro octeto contendo o número de caracteres na label.
- ('name', size)] # Label em sí
- def get_domain_name(self, data):
- array_data = bytearray(data[sizeof(self):])
- expected_lenght = array_data.pop(0)
- nameserver = ''
- while expected_lenght is not 0:
- for _ in range(expected_lenght):
- nameserver += chr(array_data.pop(0))
- expected_lenght = array_data.pop(0)
- if expected_lenght is not 0:
- nameserver += '.'
- return nameserver
Add Comment
Please, Sign In to add comment