Seite 1 von 3

"Falsche" IP-Adresse an Server schicken

Verfasst: Donnerstag 31. Juli 2008, 20:02
von Area51
Servus, ich mal wieder.

Ich habe einen kleinen IP-Adressen-Filter gebastelt. Nun möchte mit Python einen Test machen, ob dieser auch wirklich funktioniert.
Um die Datei aufzurufen, verwende ich urllib. Nun würde ich gerne wissen, ob es ein Modul gibt, mit dem man eine andere IP-Adresse an den Server schicken kann.

Nehmen wir an, meine IP wäre sowas wie "88.45.212.34", aber das Script soll nun z.B diese IP verschicken: "32.112.32.54".

Gibt es sowas in der Art? Wäre ganz gut :)

Verfasst: Donnerstag 31. Juli 2008, 20:38
von EyDu
Dann wirst du allerdings niemals eine Antwort vom Server bekommen ;-) Das macht höchstens Sinn bei UDP-Packeten, oder in einem lokalen Netz im Promiscuous Mode.

Verfasst: Donnerstag 31. Juli 2008, 20:49
von Area51
Ob ich ne Antwort vom Server bekomme ist mir egal, ich will bloss schaun, ob der Filter das macht, was er soll :)

Verfasst: Donnerstag 31. Juli 2008, 21:22
von Leonidas
Letztendlich wirst du tiefer greifen müssen als Layer 7 (Anwendungsschicht: HTTP), denn die IP-Adresse des Senders wird logischerweise in Layer 3 (Vermittlungsschicht: IP) eingetragen. Ich denke mit Scrapy könntest du HTTP-Pakete von Hand zusammensetzen und schicken.

Verfasst: Donnerstag 31. Juli 2008, 22:31
von lunar
Dafür musst du auf raw sockets zurückgreifen und das komplette TCP Paket selbst aufbauen. Das ist aber keineswegs trivial und auch nicht "mal ebenso implementiert", insofern wurde ich dir raten, da was fertiges zu nehmen.

Verfasst: Freitag 1. August 2008, 06:22
von Area51
Leonidas hat geschrieben:Ich denke mit Scrapy könntest du HTTP-Pakete von Hand zusammensetzen und schicken.
Muss ich Scrapy lokal oder auf einen Server installieren? Das Problem ist, dass ich normalen Webspace habe und letzteres somit nicht machen kann.
lunar hat geschrieben:insofern wurde ich dir raten, da was fertiges zu nehmen
Könntest du mir da etwas empfehlen, was auf Windows beim Client lauffähig ist?

Verfasst: Freitag 1. August 2008, 08:27
von bughunter
falls Du kein "Hacker-Tool" benutzen möchtest :wink: kannst Du auch bei Heise einen Portscan machen - einfach mal nach "Heise Security Portscan" suchen, die IP des scannenden Server ist üblicherweise angegeben.
Ich glaube man sollte sehen können ob Port 80 dann offen ist.

Gruß
bughunter

Verfasst: Freitag 1. August 2008, 11:21
von Leonidas
Scrapy brauchst du auf dem Client, denn logischerweise konstruierst du die Pakete die du senden willst auch auf dem Client und schickst die dann zum Server und nicht andersrum.

Verfasst: Sonntag 3. August 2008, 19:19
von Area51
Ich hab mir jetzt Scrapy heruntergeladen, jedoch kann man das, was die Anbeiten, nicht wirklich "Dokumentation" nennen.

Wenn ich das richtig sehe, sollte man das Paket "http" importieren.
Mal schauen, ob ich einen Header zusammenfriemeln kann :)

Verfasst: Donnerstag 7. August 2008, 18:39
von Area51
Ich hab mich eben wieder drangesetzt, aber ich glaube, ich bin zu doof scrapy zu "installieren". Ich hab den Ordner schon in den Installationsordner von Python und in meinen Projektordner rein kopiert, aber die Imports scheitern...
Ich geh mal davon aus, dass der Import richtig ist, wenn nicht, bitte ich um Hilfestellung :)

Code: Alles auswählen

from scrapy.http import request

Verfasst: Montag 11. August 2008, 10:59
von Leonidas
Naja, eigentlich sollte es reichen, ``scrapy.py`` in ``site-packages`` zu kopieren.

Verfasst: Mittwoch 13. August 2008, 12:05
von Y0Gi
Werden hier gerade Scapy und Scrapy verwechselt? Ersteres ist *das* Tool (ok, aber eines der besten) für Packet Forgery und dergleichen. Das läuft soweit ich weiß jedoch nicht auf Windows-uffuff-XP (oder zumindest nicht mehr seit in SP 2 der Zugriff auf Raw Sockets eingeschränkt wurde).

Verfasst: Mittwoch 13. August 2008, 13:08
von Leonidas
Ja, tatsächlich meinte ich Scapy, welches tatsächlich nur eine Python-Datei enthält.

Verfasst: Mittwoch 13. August 2008, 23:19
von epsilon
Habe mich schon gefragt, was ein Webscraper mit IP-Spoofing zu tun haben soll. Jetzt frage ich mich nur noch, was HTTP-Pakete damit zu tun haben (Vermutlich meintest du IP-Pakete, du hattest ja geschrieben, dass das Ganze "weiter unten" abläuft).

@ Area51:

Warum so kompliziert? Schnapp' dir einfach 'nen Proxy, ban seine IP und ruf die Datei über den Proxy auf. Wenn du die Datei über HTTP aufrufen willst (wovon ich ausgehe, wenn du urllib verwenden willst) reicht ein Webproxy, ansonsten verwendest du beispielsweise Tor ("The Onion Router").

Verfasst: Sonntag 17. August 2008, 18:53
von Area51
Tagchen :)
Bin eben endlich dazugekommen, Scapy auszuprobieren.
Import hat geklappt, aber das Tel hat das Modul "pcap" vermisst. Also hab ich das auch heruntergeladen.
Jetzt vermisst das Modul pcap das Modul "_pcap".

Wo bekomme ich dieses Modul nun her? Hab überall im kleinen g gesucht, aber nichts dazu gefunden.

@epsilon:
Ich möchte gezielte IP-Adress-Bereiche verbannen, da bringt mir Tor herzlich wenig, da ich ja immer zufällig eine IP bekomme, soweit ich weiß ^^

Verfasst: Sonntag 17. August 2008, 19:32
von Fabian Kochem
Wenn es nur darum geht, die Funktionalität von der Funktion zu testen, die prüft, ob eine IP erlaubt ist oder nicht, warum musst du dann unbedingt die IP spoofen?
Schick doch einfach einen String an die Funktion und überprüfe den Output. Sollte reichen.

Verfasst: Sonntag 17. August 2008, 22:27
von Leonidas
Area51 hat geschrieben:Jetzt vermisst das Modul pcap das Modul "_pcap".

Wo bekomme ich dieses Modul nun her? Hab überall im kleinen g gesucht, aber nichts dazu gefunden.
Ist in python-libpcap enthalten.

Verfasst: Montag 18. August 2008, 09:44
von epsilon
@epsilon:
Ich möchte gezielte IP-Adress-Bereiche verbannen, da bringt mir Tor herzlich wenig, da ich ja immer zufällig eine IP bekomme, soweit ich weiß ^^
Du verbindest dich nicht bei jedem Request über andere Tor Server. Default-mäßig wird die Server-Kette alle 7 Minuten gewechselt (es sei denn, ein Server ist nicht zu erreichen, dann werden sofort neue Tor nodes genommen).

Außerdem kann man das Alles über die Konfigurationsfile ändern.
Soweit ich mich erinnere, kann auch eingestellt werden, dass nur exit nodes aus bestimmten Ländern genommen werden.

Verfasst: Montag 18. August 2008, 18:55
von Area51
pylibpcap hab ich bereits heruntergeladen. Ich habe die pcap.py in meinen Projektordner kopiert, aber ich erhalte den Fehler "No module named _pcap".

Wenn ich die Datei pcap.py direkt über die Python-Shell ausführe, gehts auch in die Hose.

Hab ich irgendetwas vergessen?

Verfasst: Montag 18. August 2008, 19:41
von Leonidas
Area51 hat geschrieben:Hab ich irgendetwas vergessen?
Ja, kompilieren. _pcap ist ein C-Modul, das musst do vorher kompilieren. Normalerweise muss man Python Module immer mit ``python setup.py install`` installieren, aber wenn es reine Python-Module sind, dann reicht es, diese in den richtigen Ordner zu kopieren. Bei C-Modulen sieht das anders aus.