Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Jastak en 17 Junio 2017, 05:36 am



Título: Php websocket wss
Publicado por: Jastak en 17 Junio 2017, 05:36 am
Ok, hola a todos, tengo un pequeño problema que me lleva ya rato jodiendo la cabeza.
He estado intentando crear un servidor webscoket con php (del lado del servidor) y con javascript (del lado del cliente), todo bien. Pero.. ya se presenta el problema cuando pongo toda la página en https, resultaba que el handshake no lograba hacer el proceso, vi que pasaba si el header tenia algo malo y ví que estaba codificado (con http, no lo estaba, lógico xD, es texto plano), ahora mi pregunta es.. ¿como hago para poder leer eso codificado, o evitar que venga codificado?


Título: Re: Php websocket wss
Publicado por: engel lex en 17 Junio 2017, 05:39 am
donde lo viste codificado?

el navegador debe hacerse cargo por completo del cifrado


Título: Re: Php websocket wss
Publicado por: Jastak en 17 Junio 2017, 05:59 am
a ver, te explico, yo corro un codigo servidor socket aparte con el comando "php" en la consola, este servidor se encarga de recibir conexiones FancyWebSockets de javascript, y claro.. la conexión cuando la lees te suelta las características (en el caso de HTTP (ws) me suelta esto):

GET /server HTTP/1.1
Host: proyectoz.tk:9000
Connection: Upgrade
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket
Origin: http://proyectoz.ml
Sec-WebSocket-Version: 13
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: es-US,es-419;q=0.8,es;q=0.6
Sec-WebSocket-Key: KEY
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits

Pero con el SSL (HTTPS, WSS) de por medio me suelta esto:

����y?1��T1�����o֡�[w�������̨̩�+�/�,�0����/5
h
                                                                             uP
�proyectoz.tk#

 


Título: Re: Php websocket wss
Publicado por: engel lex en 17 Junio 2017, 06:05 am
repito, como lees la conexión?

directamente al correr el servidor te muestra en consla esa información sobre la conexión entrante?


Título: Re: Php websocket wss
Publicado por: Jastak en 17 Junio 2017, 06:19 am
no sea, del socket..

Código
  1. if (in_array($server, $readSocks)) {
  2.                    $newClient = stream_socket_accept($server, 0);
  3.                    if ($newClient) {
  4.                        $headers = fread($newClient, self::HEADER_BYTES_READ); // <-------- Aquí es donde leo la conexion
  5. echo "HEADERS: ".$headers; // <---------------------------------
  6.                         // -------------> Todo esto lo necesito para posteriormente validar la conexión con el handshake
  7.                        $this->setPathParams($headers);
  8.                        $this->clients[] = $newClient;
  9.                        $this->stepRecursion = true;
  10.  
  11.                        $this->handler->onOpen($this->connImpl->getConnection($newClient));
  12.                        $this->handshake($newClient, $headers);
  13.                    }
  14.                    unset($readSocks[array_search($server, $readSocks)]);
  15.                }
(https://proyectoz.tk/img/ssh.png)


Título: Re: Php websocket wss
Publicado por: engel lex en 17 Junio 2017, 06:28 am
revisate esto... parece ser un bug de fancywebsockets
https://stackoverflow.com/questions/30872839/wss-fails-over-https-on-apache-server (https://stackoverflow.com/questions/30872839/wss-fails-over-https-on-apache-server)


Título: Re: Php websocket wss
Publicado por: Jastak en 17 Junio 2017, 06:33 am
voy a tratar de probar eso, editaré este post para informar luego de hacer la prueba.


Título: Re: Php websocket wss
Publicado por: engel lex en 17 Junio 2017, 07:13 am
responde en comentario