Пример #1
0
    def decompile_packet(self, pkt):
        if self.run_flag == False:
            raise StopCapture()
        try:
            if '.'.join(pkt.dns.qry_name.split('.')[-2:]) in self.res:
                return
            result = {
                'src': pkt.ip.src,
                'dst': pkt.ip.dst,
                'len': pkt.ip.len,
                'qr': pkt.dns.flags_response,
                'count_queries': pkt.dns.count_queries,
                'qry_name': pkt.dns.qry_name,
                'qry_type': pkt.dns.qry_type,
                'count_labels': pkt.dns.count_labels
            }

            if pkt.dns.flags_response == '1':
                attributes = pkt.dns.field_names
                r_types = [
                    'a', 'aaaa', 'cname', 'txt', 'ns', 'mx', 'soa', 'dnskey'
                ]
                result.update({
                    'resp_type':
                        pkt.dns.resp_type,
                    'resp_ttl':
                        pkt.dns.resp_ttl,
                    'resp_len':
                        pkt.dns.resp_len,
                    'count_auth_rr':
                        pkt.dns.count_auth_rr,
                    'count_add_rr':
                        pkt.dns.count_add_rr,
                    'count_answers':
                        pkt.dns.count_answers,
                    'count_rtypes':
                        len([x for x in attributes if x in r_types])
                })
            elif pkt.dns.flags_response == '0':
                result.update({
                    'resp_type': 0,
                    'resp_ttl': 0,
                    'resp_len': 0,
                    'count_auth_rr': 0,
                    'count_add_rr': 0,
                    'count_answers': 0,
                    'count_rtypes': 0
                })
            self.send_to_db(result)
        except:
            pass
Пример #2
0
 def callback(pkt):
     parsed_packets.append(pkt)
     if len(parsed_packets) == len(binary_packets):
         raise StopCapture()