@link_vrb

Как реализовать перехват пакетов питон?

У меня есть код:
from netfilterqueue import NetfilterQueue
from scapy.all import *
from subprocess import call
call('sudo iptables -I OUTPUT -j NFQUEUE --queue-num 1', shell=True)
call('sudo iptables -I INPUT -j NFQUEUE --queue-num 1', shell=True)
def process_packet(packet):
    scapy_packet = IP(packet.get_payload())
    if scapy_packet.haslayer(DNSRR):
        qname = scapy_packet[DNSQR].qname
        stq=str(qname)
        if "мойдомен" in stq:
            print("[+] Spoofing target...")
            answer = DNSRR(rrname = qname, rdata = "myip")
            scapy_packet[DNS].an = answer
            scapy_packet[DNS].ancount = 1
            scapy_packet.dport=port
            try:
                del scapy_packet[IP].len
                del scapy_packet[IP].chksum
            except:
                pass
            try:
                del scapy_packet[UDP].chksum
                del scapy_packet[UDP].len
            except:
                pass
            packet.set_payload(bytes(scapy_packet))
    packet.accept()


qu = NetfilterQueue()
qu.bind(1, process_packet)
try:
    qu.run()
except KeyboardInterrupt:
    call('iptables --flush', shell=True)

При его запуске и переходе на сайт 'мойдомен' программа не изменяет айпи 'мойдомен' на айпи 'myip' , хотя должна и выводит страницу 'мойдомен'.
  • Вопрос задан
  • 389 просмотров
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
if scapy_packet.haslayer(DNSRR):
qname = scapy_packet[DNSQR].qname

Ты уверен, что тут должны быть разные типы пакетов (DNSRR и DNSQR)? Они НЕ являются подклассами друг друга, они оба - подклассы InheritOriginDNSStrPacket, а значит, не взаимозаменяемы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы