TCP Pakete abfangen bzw. kontrollieren

  • Moin,

    ich würde gerne eine Art "kindersicherung" machen, die einen bestimmten port sagen wir mal Port: 80 überwacht.
    Die Kindersicherung wird bei systemstart automatisch gestartet und stellt dann ein TCPListen her.

    Spoiler anzeigen
    [autoit]

    $GOOEY = GUICreate("Mein Server", 627, 447, 192, 124)
    $edit = GUICtrlCreateEdit("", 0, 0, 625, 273)
    GUICtrlSetData(-1, "")
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    ;=========================================================
    ; Verbindung aufbauen und Packete abfangen
    ;=========================================================

    [/autoit] [autoit][/autoit] [autoit]

    $Start = TCPStartup()
    $IP = "127.0.0.1"
    $Port = 80
    $Connection = TCPListen($IP, $Port)
    $Accept = -1

    [/autoit] [autoit][/autoit] [autoit]

    Do
    $Accept = TCPAccept($Connection)
    Until $Accept <> -1

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(0, "Verbindung aufgebaut", "Die Verbinung wurde erfolgreich aufgebaut.")

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $GetData = TCPRecv($Accept, 2048)
    If $GetData <> "" Then
    GUICtrlSetData($edit, _
    @HOUR & ":" & @MIN & ":" & @SEC & $GetData & @CRLF & GUICtrlRead($edit))
    EndIf
    WEnd

    [/autoit]

    Wenn jetzt z.B. der Browser gestartet wird und der Script ein Paket mit dem Inhalt "Host: https://autoit.de/www.google.de" empfängt soll er das Paket NICHT senden bzw. blockieren und evtl ein anderes zurückschicken bzw wo anders umleiten. Das Problem ist bei meinem au3 script kommt nix an :(

    Würde mich über Hilfe freuen gruß

    i3illig

  • Hallo,

    also entweder ich habe nicht Verstanden was du machen willst oder das was du vor hast kann so nicht gehen.
    Wenn du überwachen willst was so an den Browser zurückgeschikt wird könntest du sowas wie einen Proxy bauen ... (wobei es davon ja schon genug gibt)
    So könntest du im IE einen Localhost Port 80 als Proxy einstellen ... allserding müsstest du dich dann im Script um alles kümmern was zwischen webserver und Client hin und herläuft.
    Keine leichte aufgabe wie ich finde.

    Nochmal zu dem Thema du öffnest local einen Port 80 und möchtes, dass wenn du im Browser Google aufrufst das dein Localer Port was davon mitbekommt, das ist nicht möglich der Port 80 gehört zu dem Webserver mit dem ein Browser sprechen will und der Browser deffiniert den Antwort Port irgentwo über 1024 und teilt diesen dem Webserver mit.
    Der webserver antwortet auf dem Port der ihm vom Client zugewiesen wurde.

    Also wenn dein Browser den Webserver google.de (216.239.59.104) auf port 80 Anspricht ist die natürlich nicht 127.0.0.1 Port 80 und somit kommt das Paket nie dort an.

  • vielen dank erstmal für die antwort!

    Ja du hast das richtig verstanden :)
    Ich weiß das ich jedes Paket dann einzeln managen muss in meinem script und ich kenne mich auch schon im TCP protokoll weitgehenst aus nur ich bruache starthilfe um die pakete, die z.B. von meinem browser an google gesendet werden mit dem Programm abzufangen und dann dort modifikationen vorzunehmen!

    lg i3illig

    edit: hast du evtl einen bespielskript dafür? ;D

  • Dann Versuch doch mal im IE den Proxy einzustellen auf localhost:80 und prüfe mal wie sich das ganze verhält ... ansonsten könnte man mal überlegen die Netzwerkkarte in den Promiscuous Mode
    zu schalten ... vielleich mit der Software wincap dann die Pakete zu Filtern und wirklich jedes paket mitlesen dann können Sie aber nicht Manipuliert werden.