Estándar para generar múltiples claves WEP desde una frase de contraseña

4

He estado leyendo mucho sobre WEP recientemente y por qué fue malo. Para asegurarme de que lo entiendo, he estado escribiendo guiones para mostrar cómo funciona y resaltar sus vulnerabilidades. Pero quiero tener una comprensión completa de principio a fin, y no puedo encontrar lo que necesito desde el principio.

Como WEP puede funcionar con cuatro teclas, algo debe poder generar cuatro teclas. Mi enrutador puede hacer esto basado en una frase de contraseña. Si pongo 'badpw' como frase de contraseña, obtengo las claves:

1: 02CB778981
2: C27236DFB1
3: C90C104FA2
4: A804571CC0

Si escribo la misma frase de contraseña en enlace , obtengo las mismas cuatro teclas. Así que está claro que se usa el mismo algoritmo en ambos casos, pero no puedo encontrarlo por mi vida.

Entonces, ¿cuál sería el psudocode para derivar esas cuatro claves WEP de una frase de contraseña?

    
pregunta Nicholas Dechert 16.01.2016 - 22:26
fuente

1 respuesta

4

Robado descaradamente del código de JavaScript del lado del cliente de enlace :

function wepkey64(val)
{
    var pseed  = new Array(4);
        pseed[0] = 0; pseed[1] = 0; pseed[2] = 0; pseed[3] = 0;
    var randNumber;
    var k64 = new Array(4);
        k64[0] = ""; k64[1] = ""; k64[2] = ""; k64[3] = "";
    var i, j, tmp;
    for (i = 0; i < val.length; i++)
    {
        pseed[i%4] ^= val.charCodeAt(i);
    };
    randNumber = pseed[0] | (pseed[1] << 8) | (pseed[2] << 16) | (pseed[3] << 24);
    for (i = 0; i < 4; i++)
    {
        for (j = 0; j < 5; j++)
        {
            randNumber = (randNumber * 0x343fd + 0x269ec3) & 0xffffffff;
            tmp = (randNumber >> 16) & 0xff;
            k64[i] += bin2hex(tmp);
        };
    };
    return k64;
};

// converts one byte to a 2 chars hex string
function bin2hex(val)
{
    var hex = "0123456789ABCDEF";
    var result = "";
    var index;
    index = (val >> 4) & 0x0f;
    result = result + hex.substring(index, index+1);
    index = val & 0x0f;
    result = result + hex.substring(index, index+1);
    return result;
}

Llame a wepkey64("your key") para calcular las cuatro claves de 64 bits. Se devolverán como una matriz.

    
respondido por el Neil Smithline 16.01.2016 - 23:00
fuente

Lea otras preguntas en las etiquetas