TCP Payload mit nfqueue / scapy ändern

Hallo, ich verwende nfqueue und scapy und mein Ziel ist es, Pakete in meiner NFQUEUE zu empfangen, die Nutzlast zu ändern und sie erneut zu senden.

Ich kann Felder wie die TTL ohne Probleme ändern, aber wenn es um die Änderung der Nutzlast geht, stoße ich auf Probleme.

Wenn ich die Payload ändere, schnüffle ich das Paket mit Wireshark und sende anscheinend das Paket mit der geänderten Payload, aber der Server antwortet nicht.

Dies ist mein Code:

#!/usr/bin/env python

import nfqueue
from scapy.all import *
def callback(payload):
    data = payload.get_data()
    pkt = IP(data)

    pkt[TCP].payload = str(pkt[TCP].payload).replace("ABC","GET")

    pkt[IP].ttl = 40

    print 'Data: '+ str(pkt[TCP].payload)
    print 'TTL: ' + str(pkt[IP].ttl)

    del pkt[IP].chksum
    payload.set_verdict_modified(nfqueue.NF_ACCEPT, str(pkt), len(pkt))
def main():
    q = nfqueue.queue()
    q.open()
    q.bind(socket.AF_INET)
    q.set_callback(callback)
    q.create_queue(0)
    try:
        q.try_run() # Main loop
    except KeyboardInterrupt:
        q.unbind(socket.AF_INET)
        q.close()

main()

Ich habe diese Regel für ausgehenden Datenverkehr auf Port 80 festgelegt:iptables -I OUTPUT -s 192.168.1.10 -p tcp --dport 80 -j NFQUEUE

Und um es zu testen, zum Beispiel öffne ich Telnet, um Port 80 zu googeln, mache einGET / HTTP/1.1 und das sehe ich:

TTL: 40
DATA: GET / HTTP/1.1

Nun, wenn ich das tueABC / HTTP/1.1 Ich bekomme keine antwort! Mein Telnet bleibt einfach hängen.

Ich habe auch auf HTTP-Webseiten versucht, Browser zu durchsuchen, auf wireshark zu überprüfen, wie sich meine TTL wirklich auf 40 ändert, dann die Zeichenfolge "ABC" durchsuchen und mein Browser bleibt wieder hängen. Ich schnüffle an der Anfrage, die in GET geändert wurde, erhalte aber keine Antwort.

Danke bereitet mir Kopfschmerzen und ich würde mich sehr freuen, wenn mich jemand mit mehr Erfahrung auf den richtigen Weg bringen könnte. Danke im Voraus

Antworten auf die Frage(4)

Ihre Antwort auf die Frage