Standard per la generazione di più chiavi WEP da una passphrase

4

Recentemente ho letto molto su WEP e perché è stato brutto. Per essere sicuro di averlo capito, ho scritto script per mostrare come funziona ed evidenziare le sue vulnerabilità. Ma voglio avere una comprensione completa dall'inizio alla fine, e non riesco a trovare quello di cui ho bisogno fin dall'inizio.

Poiché WEP può operare su quattro tasti, qualcosa deve essere in grado di generare quattro chiavi. Il mio router può farlo basandosi su una passphrase. Se metto 'badpw' come passphrase, ottengo le chiavi:

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

Se inserisco la stessa passphrase nel link , ottengo le stesse quattro chiavi. Quindi è chiaro che lo stesso algoritmo è usato in entrambi i casi, ma non riesco a trovarlo per la vita.

Quindi, quale sarebbe lo psudocode per ricavare quelle quattro chiavi WEP da una passphrase?

    
posta Nicholas Dechert 16.01.2016 - 22:26
fonte

1 risposta

4

Svernato senza vergogna dal codice JavaScript lato client del link :

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;
}

Chiama wepkey64("your key") per calcolare le quattro chiavi a 64 bit. Saranno restituiti come array.

    
risposta data 16.01.2016 - 23:00
fonte

Leggi altre domande sui tag