Announcement

Collapse
No announcement yet.

Websocket Verbindung Datenpaket Entschlüsseln (Serverseitig)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Websocket Verbindung Datenpaket Entschlüsseln (Serverseitig)

    Hi,



    ich Baue mir gerade eine Websocket Verbindung mit Javascript Client und PHP 7 Backend
    die Verbindung wird auch aufgebaut bis ich dem Client auf "wss" setze um die Verbindung zu verschlüsseln.

    Über diese Funktion von PHP hole ich mir die Header Informationen für den Handshak:


    // $bytes = @socket_recv( $clientUser , $data , 2048, 0);


    Variable "$data" beinhaltet die Daten was ich benötige für den Handshak,
    die Information ist über den Normalen weg nicht auslesbahr wenn der Client eine "wss" Verbindung aufbaut.
    Wie kann man in PHP dieses entschlüsseln?



    Grüße

  • #2
    Hi hier noch Code:

    Client ( Javascript ):

    Code:
                 javaScriptWebSocket = new WebSocket("wss://"+host+":"+ port );
    
                 javaScriptWebSocket.onopen = function()
                 {
    
                       alert("Verbindung wurde erfolgreich aufgebaut");
    
                 };
    
                 javaScriptWebSocket.onmessage = function(messageEvent)
                 {
    
                        alert(messageEvent.data);
                 };
    
    
                 javaScriptWebSocket.onerror = function(errorEvent)
                 {
                        alert("fehler");
                 };
    
    
                 javaScriptWebSocket.onclose = function( event )
                 {    
                      alert("Verbindung wurde geschlossen");
                 };

    Server ( PHP ):

    PHP Code:
    $host "xxx.xx.xx.xx";
                    
    $port 1414;          
                    
    $artSocket        AF_INET;  
                    
    $typSocket        SOCK_STREAM;
                    
    $protokollSocket  SOL_TCP;  

                    
    $sock socket_create$artSocket $typSocket $protokollSocket );

                    if(
    $sock === false )
                    {}
                    else
                    {  

                         
    $statusBindSocket socket_bind($sock$host $port );
                         if( 
    $statusBindSocket === false )
                         { }
                         else
                         {
                                
    $statusListSocket =  socket_listen($sock);
                             if( 
    $statusListSocket === false )
                             { }
                             else
                             {  
                                     
    $sockets   $sock;
                                  
    $sockets   = array($sock);
                                  
    $arClients = array();


                                  while (
    true)
                                  {
                                       
    $sockets_change $sockets;

                                       
    $ready = @socket_select($sockets_change$write null$expect nullnull);
                                       foreach(
    $sockets_change as $clientUser)
                                       {    
                                                if(
    $clientUser == $sock)
                                             {
                                                
    $client socket_accept($sock);
                                                if (
    $client 0)
                                                {
                                                      continue;
                                                }
                                                else
                                                {  }

                                                
    array_push($sockets$client);
                                             }
                                             else
                                             {

                                                 
    $numBytes = @socket_recv$clientUser $data 20480);
                                                 if(
    $numBytes === false)
                                                 {
                                                        
    socket_close($clientUser);
                                                 }
                                                 elseif(
    $numBytes == 0)
                                                 {
                                                        
    socket_close($clientUser);
                                                 }
                                                 else
                                                 {
                                                     
    // Handshake
                                                      
    if(preg_match("/Sec-WebSocket-Version: (.*)\r\n/"$data$match))
                                                          
    $version $match[1];
                                                      else
                                                      {
                                                               print(
    "The client doesn't support WebSocket");
                                                      }

                                                      if(
    $version == 13)
                                                      {
                                                           if(
    preg_match("/GET (.*) HTTP/"$data$match))
                                                             
    $root $match[1];
                                                           if(
    preg_match("/Host: (.*)\r\n/"$data$match))
                                                             
    $host $match[1];
                                                           if(
    preg_match("/Origin: (.*)\r\n/"$data$match))
                                                             
    $origin $match[1];
                                                           if(
    preg_match("/Sec-WebSocket-Key: (.*)\r\n/"$data$match))
                                                             
    $key $match[1];

                                                           
    $acceptKey $key.'258EAFA5-E914-47DA-95CA-C5AB0DC85B11';
                                                           
    $acceptKey base64_encode(sha1($acceptKeytrue));

                                                           
    $upgrade "HTTP/1.1 101 Switching Protocols\r\n".
                                                                      
    "Upgrade: websocket\r\n".
                                                                      
    "Connection: Upgrade\r\n".
                                                                      
    "Sec-WebSocket-Accept: $acceptKey".
                                                                      
    "\r\n\r\n";
                                                                       
    socket_write($clientUser$upgrade);

                                                      }
                                                      else
                                                      {
                                                                print(
    "WebSocket version 13 required (the client supports version {$version})");
                                                      }



                                                 }
                                             }
                                       }
                                  }
                             }

                         }

                    } 

    Comment


    • #3
      https://stackoverflow.com/questions/...ction-with-php ?

      Comment

      Working...
      X