def __init__(self, data, tcp_total_length): ''' data be the part of tcp tcp_total_length = ip.total_length - ip_header_length ''' self.source_port = int(data[:4], 16) self.destination_port = int(data[4:8], 16) self.sequence_number = int(data[8:16], 16) self.acknowledgement_number = int(data[16:24], 16) self.header_length = int(data[24], 16) * 4 # bytes self.reserved = byte2bin(data[25:28])[:3] self.flags = byte2bin(data[25:28])[3:] # self.nonce = self.flags[0] # self.cwr = self.flags[1] # self.ecn = self.flags[2] # self.urgent = self.flags[3] # self.reset = self.flags[6] # self.syn = self.flags[7] # self.ack = self.flags[4] # self.push = self.flags[5] # self.fin = self.flags[8] self.window_size_value = int(data[28:32], 16) self.checksum = data[32:36] self.urgent_pointer = data[36:40] self.options = data[40:self.header_length * 2] self.kind = [] self.segment_data_length = tcp_total_length - self.header_length self.actual_data = b'' self.stream_index = self.source_port + self.destination_port self.get_data(data) if self.options: self.get_options(self.options)
def __init__(self, header): self.version = header[0] self.traffic_class = '0x' + header[1:3] self.differentiated_service_codepoint = int( byte2bin(header[1:3])[:6], 2) self.explicit_congestion_notification = int( byte2bin(header[1:3])[6:], 2) self.flow_label = '0x' + header[3:8] self.payload_length = int(header[8:12], 16) self.next_proto = Ipv6.next_proto_map[header[12:14]] self.hop_limit = int(header[14:16], 16) self.source = get_ipv6(header[16:48]) self.destination = get_ipv6(header[48:80])
def __init__(self, header): self.version = header[0] self.header_length = int(header[1], 16) * 4 # bytes self.dsf = header[2:4] self.total_length = int(header[4:8], 16) # bytes self.identification = header[8:12] self.flags = byte2bin(header[12:14])[:3] self.fragment_offset = byte2bin(header[12:16])[3:] self.time_to_live = header[16:18] # ttl self.next_proto = Ipv4.next_proto_map[header[18:20]] self.checksum = header[20:24] self.source = get_ipv4(header[24:32]) self.destination = get_ipv4(header[32:40])
def __init__(self, header): self.type = int(header[:2], 16) self.code = int(header[2:4], 16) self.checksum = header[4:8] self.cur_hop_limit = int(header[8:10], 16) self.flags = byte2bin(header[10:12]) self.router_lifetime = int(header[12:16], 16) self.reachable_time = int(header[16:24], 16) self.retrans_time = int(header[24:32], 16) self.icmpv6_options = header[32:]
def __init__(self, header): self.transaction_id = header[:4] self.flags = byte2bin(header[4:8]) self.response = Dns.message_type[self.flags[0]] self.questions = int(header[8:12], 16) self.answer_rrs = int(header[12:16], 16) self.authority_rrs = int(header[16:20], 16) self.additional_rrs = int(header[20:24], 16) if self.response == 'query': self.query_name = hexstr2bytes(header[24:-8]) self.query_type = header[-8:-4] self.query_class = header[-4:] else: self.answer_data = hexstr2bytes(header[24:])
def __init__(self, data, tcp_total_length): ''' data be the part of tcp tcp_total_length = ip.total_length - ip_header_length ''' self.source_port = int(data[:4], 16) self.destination_port = int(data[4:8], 16) self.sequence_number = int(data[8:16], 16) self.acknowledgement_number = int(data[16:24], 16) self.header_length = int(data[24], 16) * 4 # bytes self.flags = byte2bin(data[25:28])[3:] self.syn = self.flags[7] self.ack = self.flags[4] self.push = self.flags[5] self.fin = self.flags[8] self.window_size_value = int(data[28:32], 16) self.checksum = data[32:36] self.urgent_pointer = data[36:40] self.options = data[40:self.header_length * 2] self.segment_data_length = tcp_total_length - self.header_length self.actual_data = None self.next_proto = None self.stream_index = self.get_stream() self.get_proto(data)