'Start parsing packets here'

def pkt_parser(self, pkt):

    global pkt_frag_loads, mail_auths
    if pkt.haslayer(Raw):
        load = pkt[Raw].load
    if (pkt.haslayer(Ether) and pkt.haslayer(Raw) and (not pkt.haslayer(IP)) and (not pkt.haslayer(IPv6))):
        return
    if (pkt.haslayer(UDP) and pkt.haslayer(IP) and pkt.haslayer(Raw)):
        src_ip_port = ((str(pkt[IP].src) + ':') + str(pkt[UDP].sport))
        dst_ip_port = ((str(pkt[IP].dst) + ':') + str(pkt[UDP].dport))
        if pkt.haslayer(SNMP):
            self.parse_snmp(src_ip_port, dst_ip_port, pkt[SNMP])
            return
        decoded = self.Decode_Ip_Packet(str(pkt)[14:])
        kerb_hash = self.ParseMSKerbv5UDP(decoded['data'][8:])
        if kerb_hash:
            self.printer(src_ip_port, dst_ip_port, kerb_hash)
    elif (pkt.haslayer(TCP) and pkt.haslayer(Raw) and pkt.haslayer(IP)):
        ack = str(pkt[TCP].ack)
        seq = str(pkt[TCP].seq)
        src_ip_port = ((str(pkt[IP].src) + ':') + str(pkt[TCP].sport))
        dst_ip_port = ((str(pkt[IP].dst) + ':') + str(pkt[TCP].dport))
        self.frag_remover(ack, load)
        pkt_frag_loads[src_ip_port] = self.frag_joiner(ack, src_ip_port, load)
        full_load = pkt_frag_loads[src_ip_port][ack]
        if (0 < len(full_load) < 750):
            ftp_creds = self.parse_ftp(full_load, dst_ip_port)
            if (len(ftp_creds) > 0):
                for msg in ftp_creds:
                    self.printer(src_ip_port, dst_ip_port, msg)
                return
            mail_creds_found = self.mail_logins(full_load, src_ip_port, dst_ip_port, ack, seq)
            irc_creds = self.irc_logins(full_load, pkt)
            if (irc_creds != None):
                self.printer(src_ip_port, dst_ip_port, irc_creds)
                return
            self.telnet_logins(src_ip_port, dst_ip_port, load, ack, seq)
        self.other_parser(src_ip_port, dst_ip_port, full_load, ack, seq, pkt)
