SYN Packet PHP

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • SYN Packet PHP

    Hi,
    ich möchte mithilfe eines SYN Packet feststellen ob ein bestimmter Port geöffnet ist. Dazu habe ich folgenden Code, aber wie erstelle ich ein SYN Packet, dass ich dann mit $package senden kann?

    PHP-Code:
        $socket socket_create(AF_INETSOCK_RAWSOL_TCP);

        
    socket_connect($socket'127.0.0.1'21);

        
    $package "";

        
    socket_send($socket$packagestrlen($package), 0);

        
    socket_close($socket); 
    Schonmal vielen Dank für eure Hilfe

  • #2
    Mit socket_connect() bist du schon übers Ziel hinausgeschossen, denn das macht den kompletten Handshake.

    PHP-Code:
    $sock socket_create(AF_INETSOCK_RAWSOL_TCP);
    socket_sendto($sock$packetstrlen($packet), 0$host$port); 
    So müßte es gehen. $packet muß natürlich ein TCP-SYN-Paket sein. Wie das aussieht, verrät dir Wireshark bzw. RFC 793.

    Kommentar


    • #3
      Hm also soweit ich das in wireshark seh macht socket_connect noch nicht den ganzen Handshake.

      Außerdem funktioniert es, wenn ich unter wireshark auf ein SYN Packet mit copy-> copy hex stream klicke und dieses dann mit socket_send verschicke. Mit socket_sendto funktioniert es dagegen nichtmehr, weil laut wireshark der Packet Header zu kurz ist.

      Mein Hauptproblem ist eigentlich, dass ich nicht weiß wie ich das Packet erzeuge.

      Kommentar


      • #4
        Original geschrieben von TimeRaider
        Mein Hauptproblem ist eigentlich, dass ich nicht weiß wie ich das Packet erzeuge.
        Mit pack() oder chr(). Du mußt halt eine Variable erzeugen, deren Binärdarstellung einem SYN-Paket gleicht. Das ist nicht das selbe wie ein String aus Einsen und Nullen.
        Zuletzt geändert von onemorenerd; 01.02.2008, 09:40.

        Kommentar


        • #5
          Re: SYN Packet PHP

          Original geschrieben von TimeRaider
          ich möchte mithilfe eines SYN Packet feststellen ob ein bestimmter Port geöffnet ist.
          und warum benutzt du nicht einfach fsockopen()?

          Kommentar


          • #6
            Hey,
            beim überprüfen des ssh Port mit fsockopen kommt immer ein Eintrag in die Logdatei und die wird bei einer Überprüfung im 2 Minuten abstand doch ziemlich voll.

            Außerdem klappt es mit dem SYN Packet wahrscheinlich auch nicht, weil ich auch noch einen extra Socket bräuchte um die Antwort auszulesen, also z.b ACK und das ist mit PHP nicht möglich oder?

            Kommentar

            Lädt...
            X