Publi

  • ¿Cómo funcionan los WebSockets? Comunicación bidireccional en tiempo real con el navegador web

    photo-1434396505260-9ec0d6491795

    Internet poco a poco va haciéndose más y más grande. A medida que crecen sus usuarios y dispositivos conectados lo hacen las necesidades de los mismos, y de los servicios que ofrece. Hoy vamos a meternos con los WebSockets. Este sistema se utiliza para hacer una comunicación bidireccional y persistente entre un cliente y un servidor web. Pero, ¿para qué queremos esto?

    Un poco de background

    Para realizar una comunicación entre un cliente web (navegador) y un servidor web (cualquier programa que sea capaz de enviar información coherente a un navegador) se utiliza el protocolo HTTP (por debajo utiliza TCP/IP y muchas más cosas, pero no profundizaremos tanto).… Leer artículo completo

  • BITeS: bug en openSSH, C en 2016, Debian y PHP7, Apple, nmap, Kali Linux y reto poeta de 2016

    photo-1424886097867-7a53e6058dff_r
    Una nueva sección, BiTeS (en realidad iba a ser bocados de Internet, pero eso eso quedaba muy largo para los tweets). Quiero hacer como hace un tiempo, trayendo algunas webs que he visitado los últimos días con información curiosa, y desconectar un poco de tanto programar (o no).

    Vulnerabilidad en openSSH

    ¡La primera en la frente! Terminamos la semana con un bug en openSSH, en realidad es una funcionalidad no documentada y que está en pruebas, pero desde la 5.4 hasta la 7.1 todas son vulnerables.… Leer artículo completo

  • Bailando con bits: Ver y modificar los bits de un número

    Hay muchas formas para hacer esto, pero quizás la más visual (tal vez también útil algunas veces) es la siguiente (se explica más abajo):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    #include <stdio.h>

    typedef struct {
        unsigned int b1:1;
        unsigned int b2:1;
        unsigned int b3:1;
        unsigned int b4:1;
        unsigned int b5:1;
        unsigned int b6:1;
        unsigned int b7:1;
        unsigned int b8:1;
        unsigned int b9:1;
        unsigned int b10:1;
        unsigned int b11:1;
        unsigned int b12:1;
        unsigned int b13:1;
        unsigned int b14:1;
        unsigned int b15:1;
        unsigned int b16:1;
        unsigned int b17:1;
        unsigned int b18:1;
        unsigned int b19:1;
        unsigned int b20:1;
        unsigned int b21:1;
        unsigned int b22:1;
        unsigned int b23:1;
        unsigned int b24:1;
        unsigned int b25:1;
        unsigned int b26:1;
        unsigned int b27:1;
        unsigned int b28:1;
        unsigned int b29:1;
        unsigned int b30:1;
        unsigned int b31:1;
        unsigned int b32:1;

    } Tint_bits;

    int main()
    {
      int numero;
      Tint_bits *bitpack;

      bitpack=(Tint_bits*)&numero;
      numero=63;
      printf ("Dir cos: %X\nDir paq: %X\n", &numero, bitpack);  // Vemos que las direcciones de memoria son idénticas.
    Leer artículo completo