AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke FreePascal packet sniffer / packet modifizieren
Thema durchsuchen
Ansicht
Themen-Optionen

packet sniffer / packet modifizieren

Ein Thema von thomasschaf · begonnen am 21. Dez 2012 · letzter Beitrag vom 23. Dez 2012
Antwort Antwort
thomasschaf
(Gast)

n/a Beiträge
 
#1

packet sniffer / packet modifizieren

  Alt 21. Dez 2012, 20:07
Hallo,

anhand dieses Codes (sniffer.zip Unit1.pas) möchte ich einen Filter bauen, der anhand der IP-Adresse der aufzurufenden Seite entscheidet, ob die Seite aufgerufen werden darf.
Ich nehme an, dass die IPs auf Internetseiten nicht dynamischen, sondern statisch sind, also die IP-Adresse von z.B. www.facebook.de immer dieselbe ist(?)
Darüberhinaus möchte ich abhängig von der aufzurufenden Seite einen Warnhinweis mit HTML anstatt der eigentlichen Seite ausgeben.
Mit PfAddFiltersToInterface hat es schon grundsätzlich funktioniert, aber damit kann ich nur wie im Beispiel hier (packet filter API example wanted: delphi / program netblock) Seiten sperren, sodass der Browser endlos lädt oder dann irgendwann eine internene Fehlermeldung anzeigt, aber ich kann keinen eigenes HTML verfassen.,
Ich vermute,dass hier ein ganz anderer Ansatz von Nöten ist, geht es denn überhaupt mit Winsock?
p.S.: Sehe ich es richtig, dass es nichts bringt, den Buffer buf hier
recv(RawSocket, buf, sizeof(buf), 0) zu ändern, da er nur ausgelesen wird und er sozusagen nur ein Kopie des eigentlichen Datenstroms ist?

Vielen Dank!
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: packet sniffer / packet modifizieren

  Alt 22. Dez 2012, 16:13
Mit deinen Filtern kenne ich mich nicht aus, von daher kann ich dir nicht sagen, ob dort nur mit Kopien des Datenstroms gearbeitet wird, oder ob der Filter wie eine Art recv() und send() Hook fungieren. In letzterem Falle könntest du Datenströme auf jeden Fall manipulieren.

Was du benötigst ist aber auch weniger ein Filter, als ein globaler HTTP Proxy. Grundsätzlich ist es definitiv möglich Websiten auch umzulenken, statt nur den Verbindungsaufbau zu verhindern. Eine Möglichkeit wäre hier die IdHTTPProxy Komponente zu verwenden und dann sämtliche Benutzeranwendungen mit dem kleinen Tool "Proxyfier" zu proxifizieren. Wenn deine Zielanwendung(en) von Haus aus Proxy Support mitbringen, ist Proxyfier natürlich nicht mehr nötig.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
thomasschaf
(Gast)

n/a Beiträge
 
#3

AW: packet sniffer / packet modifizieren

  Alt 22. Dez 2012, 23:55
Hallo,

meinst du die Komponente TIdHTTPProxyServer ?
Ich habe übrigens Lazarus, vielleicht ist dessen Indy-Version (indy-10.2.0.3) nicht mit Delphis identisch?

Leider habe ich mit der Komponente noch nicht gearbeitet.
Wie muss ich da vorgehen?
Ich denke der Befehl ist
IdHTTPProxyServer1.StartListening; aber dazu finde ich absolut nichts!

Habe in Proxifier mal die IP 127.0.0.1 (eigene)und den Port 8080 angegeben unter "Proxy Checker" und lasse dann testen aber es heißt
Could not connect to 127.0.0.1:8080

Im Objektinspektor habe ich
IdHTTPProxyServer1.Bindings = 127.0.0.1:8080
mal zum testen.

Liege ich mit allem total falsch?! Leider habe ich mit den Komponenten noch nichts gemacht und ich finde zu IdHTTPProxyServer auch fast nichts im Internet.
----

p.S.: Sehe ich es so richtig:
Internetanwendung (z.B. Internetbrowser) -> Proxifier -> Filterprogramm

Die Internetanwendung versucht eine Seite zu laden, die wird lokal am PC (also nicht im Netzwerk) , am PC aber global (also von der Anwendung unabhängig), "proxifiziert"-also über einen eigenen Proxy über das Filterprogramm dann übertragen und entsprechend gefiltert. Das Filterprogramm ist dann das zu schreibende Delphi-Programm mit der Komponente TIdHTTPProxyServer.

Vielen Dank schonmal für Deine Antwort!
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

AW: packet sniffer / packet modifizieren

  Alt 23. Dez 2012, 00:13
Also wenn es dir z.b. nur um den Browser geht, kannst du die Proxy Adresse auch direkt dort eintragen. Dann sparst du dir den Umweg über Proxyfier. Proxyfier sorgt nur dafür, dass auch Programme, die von "Haus aus" keinen Proxy Support mitbringen, um diese Funktionalität erweitert werden.

Versuche es mal mit IdHTTPProxyServer.Active := true. Dadurch sollte der Proxy schonmal erreichbar sein. Die Datenmanipulation bzw. Filterung selbst kannst du dann in den OnHTTPBeforeCommand, OnHTTPDocument und OnHTTPResponse Events der Komponente implementieren. Alle Informationen, wie z.b. das angeforderte Dokument, die HTTP Header und so weiter findest du im AContext Parameter, welcher jedem Event übergeben wird.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
thomasschaf
(Gast)

n/a Beiträge
 
#5

AW: packet sniffer / packet modifizieren

  Alt 23. Dez 2012, 15:22
das hat gut funktioniert, die datenströme wurden erkannt. nur wie kann ich ihn modifizieren oder blocken?
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz