hatte ich das gleiche Problem,
Ich denke, das Problem ist, dass Sie ip_forward aktiviert haben so das ursprüngliche Paket an das ursprüngliche Ziel vor dem modifizierten Paket weitergeleitet wird, wird durch scapy gesendet .
theorically ist die Lösung eine Regel in iptables zu erstellen, um die Pakete weitergeleitet werden, was Sie zu einem anderen Port ändern möchten (Dies ist mehr oder weniger das, was Ettercap tut internaly),
i.e = iptables -t nat -A PREROUTING -p tcp --destination-port "YourInterestingPort" -j REDIRECT --to-port 1234
Und dann in scapy hören Modifizieren Sie das Paket und senden Sie das Paket an den ursprünglichen Port.
Diese Lösung ist schwierig, da der Filter implementieren, müssen Sie nur die Pakete umleiten und ändern, die Sie wollen und verstehen sich inklusive syn ack arp etc ...
Wenn Sie die Antworten eines Servers ändern möchten , Ein einfacherer Weg, dies zu tun, ist, anstatt die Pakete im laufenden Betrieb zu modifizieren, um wie ein Vermittler zu agieren.
- arpspoof
- ipatbles
Öffnen Sie eine Buchse, das Paket empfangen, eine Verbindung öffnen und es an das ursprüngliche Ziel wie senden, wenn Sie ein Kunde waren und die Antwort erhalten, ändern Sie die Antwort und senden Sie es zum ursprünglichen Querier.
während True: c, addr = s_mb.accept() # Verbindung mit Client herstellen. query = c.recv (BUFFER_SIZE)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((IP, PORT))
s.send(PACKET)
response = s.recv(1024)
if response = "THIS IS THE RESPONSE THAT I WANT TO MODIFY":
if(real_simulation):
fakeresponse = "MODIFIED RESPONSE"
#print "The packet has beeb modified"
else:
fakeresponse = response
s.close()
c.send(fakeresponse)
(Sorry für die schmutzigen Code)
Ich weiß, das etwas älteren Thread ist aber ein ähnliches - Kann man das ausgehende Paket in einem mehr ändern komplexer Weg? ZB Einfügen einer anderen Art von HTTP-Header in eine HTTP-Payload, ohne IP- oder TCP-Header zu ändern. Irgendwelche Hinweise auf relevante API usw.? – fayyazkl
Absolut, abhängig davon, was Sie ändern möchten, können andere Module beteiligt sein. Zum Beispiel, wenn Sie die Payload für alle http GET-Request-Pakete ändern wollte, würde ich re verwenden, um den Header zu analysieren und dann das modifizierte Paket entsprechend zu senden. – dc5553
Ich möchte eigentlich einen neuen http-Header einfügen. Dies würde bedeuten, das letzte \ r \ n zu überschreiben und ein paar weitere Felder hinzuzufügen. – fayyazkl