Wie erstelle ich einen einfachen c # http Monitor / Blocker?

7

Ich habe diese Frage gelesen ( Wie erstelle ich einen einfachen Proxy in C #? ) das ist nah an meinen Wünschen.

Ich möchte einfach eine c # -App entwickeln, die beispielsweise Firefox, IE usw. überwacht und alle navigierten Seiten protokolliert. Abhängig von der besuchten Seite möchte ich die Seite blockieren (wie ein Elternfilter).

Code-Schnipsel / Beispiele sind gut, aber wenn Sie mir nur ein paar Anweisungen geben können, welche Klassen zu verwenden sind, werde ich Ihnen dankbar sein. : -)

    
Click Ok 29.05.2009, 04:58
quelle

2 Antworten

18

Ich antworte passend für einen Elternteil: ala "Parental Controls"

Sie können mit einem Proxy-Server beginnen, wenn die Kinder weniger als 10 Jahre alt sind. Danach werden sie herausfinden, wie sie den Proxy umgehen (oder ihre eigenen Client-Anwendungen ausführen, die den Proxy umgehen). In den frühen Teenagerjahren können Sie rohe Sockets verwenden. Geben Sie dieses Programm in Visual Studio (C #) ein.

%Vor%

Beachten Sie, dass dies nur ein "Schnipsel" ist, dem es an entsprechender Design- und Fehlerprüfung mangelt. [Bitte verwenden Sie nicht "wie besehen" - Sie haben nur einen Vorwand angefordert] Ändern Sie die IP-Adresse auf Ihrem Computer. Führen Sie das Programm AS Administrator aus (verwenden Sie "runas" in der Befehlszeile oder klicken Sie mit der rechten Maustaste auf "Als Administrator ausführen"). Nur Administratoren können Raw-Sockets in modernen Windows-Versionen erstellen und verwenden. Lehn dich zurück und schau dir die Show an.

Der gesamte Netzwerkverkehr wird an Ihren Code übermittelt (angezeigt auf dem Bildschirm, der mit diesem Programm nicht gut aussieht).

Ihr nächster Schritt besteht darin, einige Protokollfilter zu erstellen. Informieren Sie sich über die verschiedenen Internet-Anwendungsprotokolle (sofern Sie dies noch nicht wissen), ändern Sie das Programm, um die Pakete zu untersuchen. Suchen Sie nach dem HTTP-Protokoll und speichern Sie die entsprechenden Daten (wie GET-Anforderungen).

Ich habe persönlich Filter für AIM (AOL Instant Messenger), HTTP, MSN Messenger (Windows Live Messenger), POP und SMTP eingerichtet. Heute bekommt HTTP fast alles, seit die Kinder die Facebook-Wand zu AIM heutzutage bevorzugen.

Wenn die Kinder ihre frühen bis mittleren Teenagerjahre erreichen, werden Sie sich auf das Monitoring verlassen wollen. Einige sagen, dies soll den Kindern ermöglichen, "erwachsen zu werden", aber der wahre Grund ist, dass " du willst nicht wissen ". Ich habe mich zurückgezogen, um nur URLs von get-Anfragen und Benutzernamen / Passwörter (für Notfallsituationen) zu sammeln, die im Klartext sind (pop, basic auth, etc.).

Ich weiß nicht, was in den späten Teenagerjahren passiert; Ich kann mir nicht vorstellen, dass es viel schlimmer wird, aber mir wurde gesagt, dass "ich noch nichts gesehen habe".

Wie jemand früher gesagt hat, funktioniert das nur, wenn es auf dem Zielcomputer ausgeführt wird (ich führe eine Kopie auf allen Maschinen im Haus aus). Andernfalls überprüfe deinen Router zur einfachen Überwachung - meins hat einige nette Protokollierungsfunktionen.

Mein letzter Kommentar lautet, dass diese Anwendung direkt in C / C ++ für die Win32-API geschrieben und als Dienst mit Administratorrechten auf dem Computer installiert werden sollte. Ich denke nicht, dass diese Art von Code für Managed c # geeignet ist. Sie können in C # eine Benutzeroberfläche zur Überwachung und Kontrolle anhängen. Sie müssen den Code so konstruieren, dass er keine spürbaren Auswirkungen auf das System hat.

    
Bill 09.06.2009, 01:39
quelle
7

Ihr Ansatz hängt davon ab, ob Sie diese Anwendung auf derselben Box installieren, die Sie zum Durchsuchen verwenden, oder auf einem separaten Proxy-Server.

Wenn Sie dies auf einem separaten Server tun, wird es einfacher, dies in C # / verwaltetem Code zu tun, da Sie einfach einen C # -Proxy-Server schreiben, auf den der Client-PC zeigen wird. System.Net.Sockets Namespace TcpListener und TcpClient werden dein Freund sein.

Wenn Sie dies jedoch auf demselben Computer installieren, schauen Sie sich WinPcap und SharpPCap und vielleicht auch Fiddler Ideen.

Ich hoffe, das hilft.

    
sbeskur 29.05.2009 16:25
quelle

Tags und Links