def send_tcp_auto_reply(pkt, flag='PA'):
    # p = IP()/TCP(flags=flag) # for further use - we can get char of the flags instead of hex
    # [flags[x] for x in p.sprintf(flag)]
    if flag == 'SA':
        #handled 3 ways handshake
        print("TCP 3 ways handshake send")
        ip = IP()
        tcp = TCP()
        ip.src = pkt[IP].dst
        ip.dst = pkt[IP].src

        tcp.sport = pkt[TCP].dport
        tcp.dport = pkt[TCP].sport

        tcp.ack = pkt[TCP].seq + 1
        tcp.seq = pkt[TCP].ack
        tcp.flags = flag
        send(ip / tcp)

    else:
        print("Send tcp reply")
        ip = IP()
        tcp = TCP()
        ip.src = pkt[IP].dst
        ip.dst = pkt[IP].src
        tcp.ack = pkt[TCP].seq
        tcp.seq = pkt[TCP].ack
        tcp.sport = pkt[TCP].dport
        tcp.dport = pkt[TCP].sport
        tcp.flags = flag
        data = pkt[TCP].payload
        send(ip / tcp / data)
def send_tcp_fuzzed_reply(pkt):
    ip = IP()
    tcp = TCP()
    ip.src = pkt[IP].dst
    ip.dst = pkt[IP].src
    tcp.sport = pkt[TCP].dport
    tcp.dport = pkt[TCP].sport
    send(ip/fuzz(tcp))
def send_tcp_reply(pkt, flag):
    ip = IP()
    tcp = TCP()
    ip.src = pkt[IP].dst
    ip.dst = pkt[IP].src
    tcp.ack = pkt[TCP].ack
    tcp.sport = pkt[TCP].dport
    tcp.dport = pkt[TCP].sport
    tcp.flags = flag
    print("[UDP] Sending TCP reply to %s" % ip.dst)
    data = "Tcp reply"
    send(ip / tcp / data)