Home > Fastweb, Uncategorized > Telsey FASTWEB: Full Disclosure

Telsey FASTWEB: Full Disclosure

Telsey Fastweb

Ricordiamo che l’accesso abusivo ad un sistema informatico o telematico è un reato perseguibile a termine di legge (art. 615-ter c.p.). Inoltre ricordiamo che la detenzione e la diffusione abusiva di codici di accesso a sistemi informatici o telematici è un reato penale perseguibile secondo la legge 615-quater c.p.

Pertanto l’utilizzo di quanto esposto è da riferirsi a un test di sicurezza sulla propria rete o su una rete la quale il proprietario abbia espressamente dato il libero consenso al fine di giudicarne la sicurezza e porre rimedio ad eventuali vulnerabilità.

Gli Autori di questo Blog non potranno essere ritenuti responsabili di eventuali violazioni derivanti da un uso proprio o improprio delle tecniche esposte in questo articolo aventi uno scopo prettamente informativo e didattico. Qualsiasi implementazione dell’algoritmo di seguito riportato è illegale secondo gli articoli sopracitati.


Premessa

Come promesso in questo articolo descriveremo il procedimento con la quale l’algoritmo Telsey genera la wpa di default impostata da FASTWEB. Attualmente Fastweb distribuisce HAG Telsey sotto due diverse serie, ovvero 002196 e 00036F, ciò significa che le reti Fastweb identificate da un SSID del tipo FASTWEB-1-002196XXXXXX o FASTWEB-1-00036FXXXXXX appartengono a questa categoria. Di per sè l’algoritmo non è di difficile comprensione, ma il reverse dello stesso è stato piuttosto arduo.

All’interno di ogni Hag Telsey troviamo tra i binari un eseguibile precompilato per architettura MIPS32. Questo eseguibile, denominato key_gen contiene il cuore dell’algoritmo.

La procedura di configurazione dell’hag si appoggia al key_gen per ottenere la wpa passandogli come argomento il MAC Address della sheda di rete wifi situata al’interno dell’hag.

Accesso fisico all’HAG

Al fine di estrarre il firmware dal router, e pertanto il key_gen, è stato necessario avere l’accesso alla console seriale dell’apparecchio.

Nel nostro caso l’header della seriale era stato reso inattivo dalla casa madre omettendo delle resistenze fra i contatti di TX ed RX e le piste che andavano a collegarsi con la CPU, che ricordiamo è una Broadcom BCM96358 e quindi MIPS32 BigEndian (particolare importante per il reverse dell’eseguibile). Inoltre fra il pin Vcc e il pin TX era presente un cortocircuito che rendeva impossibile la comunicazione tramite console. Per poter attivare quindi a livello hardware la console sono state ripristinate le due piste ( RX e TX ) facendo dei ponti fra le piazzole delle resistenze SMD omesse, ed è stato rimosso il ponte fra TX e Vcc. In questo modo, una volta saldati i pin di connessione e configurati i parametri di comunicazione (che ricordiamo sono 115200 baud/s, 8 data bit e flow control Xon/Xoff) la console è risultata immediatamente accessibile e, invocata da linea di comando la system shell, è stato verificato che l’eseguibile di nostro interesse risiede, come nelle più comuni busybox, in /bin e che la sintassi per l’uso è key_gen mac_address (ex. key_gen 00:11:22:AA:BB:CC). La fase successiva è stata quella di creare un dump dell’intero firmware al fine di esportare sia l’eseguibile key_gen e sia le dipendenze di quest’ultimo. Per tale scopo è stata crosscompilata per piattaforma MIPS32 una versione di GNU tar, copiata su usb key ed eseguita on-the-fly direttamente dall HAG, in modo tale da creare un archivio contenente tutta la root. L’archivio è stato quindi salvato su una memoria flash usb collegata in una delle porte presenti nel pannello posteriore del router e montata da linea di comando.

Analizzando il key_gen con il comando strings abbiamo rilevato l’uso di due librerie. Esse, sia pur necessarie per l’esecuzione diretta del comando, sono librerie di runtime non necessarie per un’analisi dell’algoritmo che è risultato completamente contenuto nel file key_gen, come già anticipato.

Pertanto, dopo aver completato l’importazione in IDA del file, abbiamo analizzato l’algoritmo e scoperto che esso si articola in tre passi principali.

Descrizione dell’Algoritmo

Il MAC viene trattato, analogamente agli altri modelli, per essere rappresentato su 6 byte (ogni coppia di cifre = 1 byte in rappresentazione hex).

Ad esempio, il MAC 002196123456 corrisponderà ai 6 byte x00x21x96x12x34x56. Inizialmente viene creato un vettore di  256 byte. In questo vettore viene predisposto il MAC Address trattato come sequenza di byte secondo una permutazione statica a blocchi di 4 byte ciascuno. Lo schema di predisposizione per un generico MAC del tipo 112233445566 è il seguente:

66221166,22112266,55334433,55443333,33553311,33664422,11551122,22552211,
33553333,44224455,55225544,66226666,33221166,22112222,55332244,44446633
55556655,66225511,33661166,33224466,66333355,33442255,11555544,44116644,
55441111,44332222,33223366,22445544,11334455,11113333,11111166,22222255,
55113333,44444411,11335522,66666611,11556611,22226633,33336622,44443344,
22113355,22663366,11225511,22222255,33333333,44444444,66551122,55116666,
22116611,11226622,33335533,44555544,55442266,66662255,44112266,44221155,
55333366,55444422,33554411,33446622,44223344,66112233,66445522,11334411

Come si può notare il vettore è composto da 64 blocchi di 4 byte che sono ricavati dal mescolamento del mac in input. Quindi se ad esempio avessimo come input un mac del tipo AABBCCDDEEFF, il vettore sarebbe riempito in questo modo:FFBBAAFF,BBAABBFF,EECCDDCC,..........

Ogni singolo blocco viene predisposto in memoria  in modo da formare un intero a 32bit senza segno, il cui byte più significativo sia il primo dell’elenco e così a scendere.

Questo, su architetture big-endian come quella MIPS32, su cui è basato il router Fastweb Telsey, comporta semplicemente copiare i byte in memoria nell’ordine della quartina. Viceversa, su architetture little-endian (ad es. Intel x86), la copia dei byte va eseguita in ordine rovesciato (nel nostro esempio, i byte del primo blocco in memoria sarebbero 0x660x110x220x66). Alcune architetture adottano una endianess mista, e in quei casi l’ordine in cui copiare i byte sarà ancora diverso. Lo scopo di questa ripetuta copia parziale è probabilmente l’aggiunta di randomness all’intera procedura. Infatti, come si vedrà nel prosieguo dell’articolo, tutto l’algoritmo Telsey è concepito per sconfiggere approcci di crittoanalisi, tramite operazioni “imprevedibili”, miranti ad aggiungere “entropia” al risultato finale. Ad esempio, è di tutta evidenza che due MAC consecutivi daranno risultati totalmente diversi, a causa appunto della tabella di permutazione che porterà l’algoritmo a lavorare su molti interi diversi tra loro. Una volta riempito il vettore, alla base dell’algoritmo c’è una funzione di hash, non molto nota, denominata hashword implementata dal Dr. Bob Jenkins. Prototipo di hashword:

uint32_t hashword(const uint32_t*,   /* the key, an array of uint32_t values */
size_t ,   /* the length of the key, in uint32_ts */
uint32_t);    /* the previous hash, or an arbitrary value */ 

Il vettore viene processato in modo ricorsivo un blocco alla volta dando come risultato una sequenza di 4 byte espressa in esadecimale che chiameremo S1. La funzione hashword prende in ingresso come parametro un sequenza di 32 bit (unsigned), una dimensione (int)  e un valore di inizializzazione che inizialmente è posto a 0, successivamente, quest’ultimo assumerà il valore ottenuto in uscita nel precedente ciclo. Questo per 64 cicli, in modo da scorrere l’intero vettore. In termini di codice possiamo assumere quanto detto in questo modo:

for (x=0; x<64; x++){
valoreuscita = hashword(puntatoreVettore, x, valoreuscita);
}

Il secondo passo è quello di ottenere un nuovo vettore da 256 byte ricavato dal primo al quale vengono applicate alcune operazioni aritmetiche (LeftShift and RightShift) ad ogni blocco di byte. Riassumiamo in pseudo-codice anche questa procedura:

for (int x=0; x<64; x++){
    switch ( x) {
        case < 8: word[x] <<= 3; break;
        case < 16: word[x] >>= 5; break;
        case < 32: word[x] >>= 2; break;
        case default: word[x] <<= 7; break;
     }
}

Ricordiamo che uno shift verso sinistra equivale ad una moltiplicazione, mentre viceversa indica una divisione. Fatto ciò l’algoritmo riapplica la funzione hashword al nuovo vettore ottenenedo una nuova sequenza di 4 byte espressa in hex, che chiameremo S2.

L’utlimo passo è quello di estrarre la WPA di default dalle due sequenze ottenute:

WPA = S1[-5:] + S2[:5]

Ciò equivale a dire che la WPA si ottiene prendendo le ultime 5 cifre del primo risultato (S1) e le prime 5 cifre del secondo  (S2), con l’accortezza di rappresentare gli hash S1 ed S2 sempre in 4 byte.

Esempio pratico

Come al solito facciamo un esempio pratico per chiarire il procedimento appena descritto.

Supponiamo di avere un generico MAC Address Telsey: 002196123456. Il primo passo è quello di riempire il vettore da 256 byte secondo lo schema sopra descritto:

56210056 21002156 34961296 34129696 96349600 96561221 340021 21342100 96349696 12211234 34213412 56215656 96210056 21002121 34962112 ………

La funzione hashword applicata a questa sequenza di bye, in modo ricorsivo come spiegato, darà come risultato S1=3630692e. Applicando la serie di operazioni (LeftShift and RightShift) al vettore iniziale otteniamo il nuovo vettore:

b10802b0 8010ab0 a4b094b0 a094b4b0 b1a4b000 b2b09108 1a00108 9a10800 4b1a4b4 910891 1a109a0 2b10ab2 4b10802 1080109 1a4b108 9092b4 d0d158d 15884d00 25958015 ……..

L’hashword ricorsiva di questo nuovo vettore darà come risultato S2=a980930a. Da questi due valori, S1=3630692e ed S2=a980930a otteniamo infine la WPA di default: WPA = 0692ea9809


Conclusioni

Come avrete potuto notare il primo grave errore commesso dai progettisti è stato quello di affidare ad un tool precompilato l’intero algoritmo di generazione. Obiettivamente parlando, è più conveniente avere un modulo esterno su cui appoggiarsi, ma in questo ambito il discorso non vale. La prima priorità non deve essere la comodità ma la sicurezza delle informazioni contenute nell’hag. Chiunque con alcune nozioni di base può facilmente emulare un ambiente MIPS32 ed utilizzare l’eseguibile per scopi diversi da quello per cui è stato progettato senza reversare una riga del codice.

Altre scelte inopportune sono state già discusse in altri articoli e quindi eviteremo di ripeterli, ma che qui purtroppo abbiamo riscontrato nuovamente. Naturalmente l’uso di una funzione di hash, anche se non molto nota, ma di dominio pubblico non è stata una scelta condividibile. Il nostro consiglio rimane il medesimo: cambiare la wpa di default!

Come ultima considerazione vogliamo fare un po’ di luce sulle ultime vicende che abbiamo notato con disgusto nella rete.

Per principio morale ed etico siamo contrari a qualsiasi implementazione e tool degli algoritmi che abbiamo pubblicato. Ciò non vuol dire non avere le capacità di realizzare anche tool molto sofisticati.  Ovviamente ognuno è responsabile delle proprie azioni, ed è libero di attuare tutte le scelte che si vogliono, nè noi, nè altri possono criticare l’operato altrui. Ma una considerazione è d’obbligo. Abbiamo  sempre pubblicato le nostre ricerche senza chiedere mai nulla in cambio a nessuno, ricerche che se eseguite all’interno di un’azienda avrebbero potuto fruttare un bel po’ viste le difficoltà che abbiamo incontrato e l’importanza della gravità di vulnerabilità portate allo scoperto. Ma abbiamo preferito un’altra via, giusta o sbagliata che sia non è importante, è importante che sia stata una nostra scelta ed è giusto che gli altri la rispettino. La licenza Creative Commons 3.0  sotto quale abbiamo voluto rilasciare questi articoli, tra le clausole principali specifica che i nostri articoli NON possono essere utilizzati per fini commerciali. Potete, stamparli, modificarli e distribuirli a vostro piacimento, ma non potete venderli perchè noi non ve li abbiamo venduti.

Abbiamo evitato di intervenire  in discussioni che ci hanno coinvolto direttamente poichè preferiamo utilizzare il nostro tempo e le nostre risorse in modo proficuo, anche se i mezzi non ci sarebbero di certo mancati.

*** White Hats Crew ***

  1. mattia9305
    September 9, 2010 at 12:54 pm

    Semplicemente complimenti,siete delle persone ammirevoli.Tutta la mia stima è rivolta a voi e il vostro lavoro..

  2. lufuscu
    September 9, 2010 at 12:59 pm

    Onore a voi. Molto interessante leggerlo.

  3. giuliob
    September 9, 2010 at 1:20 pm

    Grandi, lo spirito è quello giusto.

  4. September 9, 2010 at 1:31 pm

    Ancora una volta complimenti ragazzi miei … vista l’esperienza passata, credo che questa volta nn implementerò alcun tool … direi che le persone stesse che hanno usato i miei software hanno fatto si che io “imparassi la lezione” :)

    Ci si legge in giro ;)

  5. Antani
    September 9, 2010 at 1:59 pm

    Ottimo lavoro ragazzi!!

    Chiedo umilmente ai lameri in giro… di evitare di sparare fuori i soliti Tool del Caz*o, utili solo a pavoneggiarsi!

    Etica signori! Etica!

    Saluti

  6. Andrew
    September 9, 2010 at 7:17 pm

    E’possibile avere delucidazioni in merito alla configurazione da utilizzare con IDA Pro per aprire il file key_gen ? Ricevo continui errori del tipo “Could’t map address 0” -> “Bad file structure or read error” e poi una serie di altri errori:
    6.. poi 0.. poi 1F poi 6 e alla fine “No memory for module ELF” e si chiude…

    suggerimenti ?

  7. redcrazy
    September 9, 2010 at 7:26 pm

    Complimenti davvero, sempre chiari e precisi! ;) Vi chiederei solo una cortesia, di spiegare, se possibile, come caricare gli elf MIPS32 su IDA, poichè trovo sempre diversi problemi. C U

  8. September 9, 2010 at 9:46 pm

    Complimenti davvero.
    Lo devo ammettere. Questa volta avete superato anche me. Ho provato un anno fa per un po’ di tempo a ricostruire l’algoritmo ma senza successo. Usavo due tecniche diverse per queste reti (entrambe più o meno menzionate anche da voi).

    Ho visto anche che questo argomento finalmente ha conquistato anche la prima pagina di una rivista (winmagazine di settembre 2010). Era ora.
    Credo sia ora di presentarvi uno per uno. Meritate un po’ di gloria ciascuno.

    Se riuscite a creare un algoritmo per vodafone station e agif vi pago io stesso :)
    E’ possibile solo in un modo che non ho più avuto il tempo di mettere in pratica.
    Vediamo se ci arrivate.

    Ciao

    saxdax

    • tiresi@
      September 8, 2010 at 11:50 pm

      e scommetto che c’è bisogno di un … collegamento …

  9. Def
    September 9, 2010 at 11:32 pm

    Io potrei risponderti… “Ce sono arrivato due mesi fa… discutendo con un amico di Taranto…, vediamo se ci arrivi pure tu!”

    P.S: Come sempre volevo farvi i complimenti per le Vostre scoperte! :)

  10. Luciano
    September 10, 2010 at 12:02 am

    @saxdax

    per gli agpf e per il vodafone ci prendi per i fondelli vero :P credo che reversare un’algoritmo di generazione casuale sia roba un po’più complicata =)

    Luciano

    • RegEx
      September 10, 2010 at 1:29 pm

      @luciano
      Possiedo firmware e sourcecode dei vodafone,se ti può interessare..

      • September 11, 2010 at 1:26 am

        Ciao puoi caricarlo da qualche parte che avevo intezione di studiarlo un po?
        grazie

  11. crashsystem90
    September 10, 2010 at 12:22 am

    Io credo che bisogni emulare l’intero ambiente dell’agif con un simulatore, almeno per vedere cosa ne esce, ma sarebbe meglio capire l’algoritmo come lavora.
    In ogni caso complimenti ai White Hats =)

  12. Dexdell
    September 10, 2010 at 10:38 am

    vi pago io stesso :)
    Non credo che accetterebbero i tuoi soldi sporchi.
    Ritirati pagliaccio sei superato!

    • Massimo B.
      September 10, 2010 at 11:06 am

      ha ragione il falso (?) delex, suxdicks tu ti sei fermato per i telsey alla generazione della password con key_gen e non sei andato oltre poichè a te importava solo vendere password. E quindi questo sforzo di ricerca non ti interessava. Per quanto riguarda gli Alice vista l’attenzione mediatica che c’è io se fossi nel tuo amichetto infiltrato in telecom che ti da le password inizierei a preoccuparmi.Tutti i nodi vengono al pettine prima o poi.Buona fortuna.

  13. September 10, 2010 at 1:10 pm

    Complimenti +1

    Volevo aggiungere che rilasciare tutto in CC è veramente ammirevole, anche perché come avete detto voi avreste preso bei soldini lavorando per Fastweb stessa. Vi auguro di trovare qualcuno che possa sovvenzionare le vostre ricerche, di fatto, oltre alla gloria (meritata), avete anche scolpito il vostro nome nell’ambiente della Security IT. Magari qualcuno dei prossimi progettisti di hag per FW o TLC sarete voi!!

    In bocca al lupo,
    Korsakoff

  14. September 10, 2010 at 1:58 pm

    Ancora tanti complimenti ragazzi :D

  15. DangerZone
    September 10, 2010 at 9:16 pm

    Chi sa dirmi come si calcolano le permutazioni statiche voreri implementare un programmino che faccia tutto in automatico.Grazie

    • lufuscu
      September 11, 2010 at 1:56 am

      c’è già l’esempio

  16. Vision_x
    September 11, 2010 at 3:09 am

    Ecco un fantastico esempio di squadra !
    e per questo desideramo esprimerVi
    la nostra più viva e sincera riconoscenza .

    Vision_x

  17. Andrea
    September 11, 2010 at 6:43 am

    Paolo :
    Ciao puoi caricarlo da qualche parte che avevo intezione di studiarlo un po?
    grazie

    Sul forum di Gibit c’è un’apposita sezione…se mi mandi un MP ti cedo il materiale!

    • September 12, 2010 at 1:25 am

      Andrea non trovo la discussione!!!

  18. Me32
    September 11, 2010 at 10:41 am

    Complimenti a voi …

  19. September 11, 2010 at 1:30 pm

    @Def

    ma sei il Defcon69 che conosco io? Chi è di taranto, non ho capito? Se sì scrivimi per mail per favore.

    @Dexxdell
    so che scrivi sotto falso nome. il vero dexxdell mi ha scritto in privato.

    @Massimo B.
    non ho mai avuto amichetti nelle aziende in questione. Non ne ho mai avuto bisogno. Gli algoritmi che vi ho guidato a trovare (perchè così è stato).

    Ciao

  20. Pasq
    September 11, 2010 at 2:00 pm

    Ragazzi, non ho capito come calcolare s1 ed s2, ci sarebbe qualcuno disposto ad aiutarmi con un esempio esplicativo?
    Grazie.

  21. RegEx
    September 11, 2010 at 2:33 pm

    Se gli admin mi danno il permesso di postare i link del firmware dei vodafone lo faccio volentieri.

  22. KA
    September 11, 2010 at 4:20 pm

    Complimenti!
    Ecco un’altra versione dell’articolo aggiornata(nessuna novità):
    http://snipurl.com/12prjd
    spero che sia di aiuto.
    In gamba!

  23. September 13, 2010 at 10:17 pm

    ‘Allura saxdax, vuoi conoscerci sul Serio uno per uno?

  24. Alex
    September 16, 2010 at 9:01 pm

    @saxdax

    Il solito sbruffone, ti rode che non ci sei arrivato te per primo, per te e un mancato guadagno rosicone, però sono sicuro che qualche eurino lo tirerai su lo stesso con questo algoritmo, se non ti ricordi ciò che pensano di te tutti quelli di pillolahacking ti rinfresco la memoria, tooooooo……

    “”””””””””””””””””””””””””””””””
    @Saxdax

    per me sei l’informatico della peggior specie ….hai scoperto qualcosa riguardo ai router pirelli ma nonostante ciò fai il gran figo(ma chi te s3ncul4) …vieni qua te la meni perchè eri programmatore commodor64 ci mostri l’output del tuo programma per nabbi che gira sotto win ma non ci fai vedere una linea di codice e non spieghi su cosa si basano le tue scoperte…..e sul tuo blog si leggono 4 vaccate del tipo:”Il servizio ha un costo per le risorse necessarie (capacità di calcolo e tempo).”
    e per gli stupidi fanboy come crypt3m4 è inutile che se la mena perchè su milworm si trova solo un c4zz.0 di paper con un poc di exploit per il resto non ha mai pubblicato una mazza……..(tra l’altro il paper è una collaborazione con drpepper0ne (probabilmente unaltro lamer come lui))
    per me sei solo un mercenario che tenta di guadagnarci qualcosa con le sue scoperte del menga

    in conclusione:
    F4NC!_!L0 C0GL10n3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    p.s:complimenti ad angelo per l’articolo e scusa per lo sfogo……

    (92 min di applauso)
    “””””””””””””””””””””””””””””””””””””””””””””””””””””””

    Aggiungo altri 92 min, scusate ma questa ci voleva, con gente come il tizio sopraelencato non si può fare diversamente

  25. segfault
    September 19, 2010 at 12:53 pm

    Anch’io mi unisco ai complimenti. Lavoro davvero notevole.
    La penso un pò diversamente invece (almeno questa volta) per quanto riguarda l’eventuale distribuzione di un tool. In giro sul web esiste già una guida che spiega come estrarre il key_gen dal firmware del router ed eseguirlo con qemu-mips. Detto ciò evitare la distribuzione di un PoC da parte di chi potrebbe farlo la trovo una cosa inutile in questo caso (siamo infatti di fronte ad una situazione ben differente rispetto agli AGPF….lì i presupposti erano diversi).

    Poichè tra i commenti ho visto gente a cui piacerebbe attingere al codice per capire come implementare un algoritmo di questo tipo e considerato che il modo per tirare fuori l’eseguibile key_gen dal router fastweb telsey è già un’informazione di pubblico dominio, mi sono permesso di implementare un PoC (linguaggio C) in prima persona. Chi è interessato può scrivermi a redazione @chiocciola@ segfault.it

    Gli invierò una copia del sorgente.

  26. NeURo
    September 21, 2010 at 7:26 am

    Complimenti erano anni che non si vedeva niente del genere in italia…
    non vi fermate.
    Auguri

  27. Anonimo
    September 21, 2010 at 10:12 am

    Postate il codice sorgente

  28. alyver00
    September 25, 2010 at 5:10 pm

    I miei più sentiti Complimenti!
    Bravissimi, sono orgolioso dell’esistenza di un gruppo italiano così forte!

  29. SpaghettiHacker
    November 1, 2010 at 9:22 am

    a NeURo zitto! tu non sei capace di fare nulla! Sei una sanguisuga del sistema… ormai assuefatto e sempre alla ricerca di piu’ soldi…

  30. Claud
    November 6, 2010 at 3:20 pm

    Fastweb tanto è gia corsa ai ripari… infatti da un po’ per navigare sui telsey (non so se sia così anche sui pirelli) non basta più conoscere la WPA di default, ma viene richiesta una seconda autenticazione dove inserire Nome e Password, in possesso solo dell’abbonato. Quindi fare tante storie sui “programmini già pronti” non ha molto senso.

    Avete idee su come passare la seconda autenticazione? MITM Attacks? MAC spoofing? E’ su questo che si deve lavorare adesso..

  31. Luca
    November 11, 2010 at 7:31 am

    Un punto mi è ancora oscuro: una volta ottenuto accesso alla console seriale c’era comunque lo scoglio della password di sistema.
    Come l’avete recuperata?

  32. November 25, 2010 at 9:47 pm

    geniale!

  33. peppone
    March 4, 2011 at 9:13 pm

    Ho visto che ci sono wifi fastweb che cominciano con 38 che roba sono? Esiste un algoritmo anche per questi?

  34. FRANCY
    October 7, 2011 at 10:52 am

    mi potete trovvare la password di questo per favore sn disperato nn ci riesco
    fastweb-1-6M4boimZWxwN

  35. August 9, 2012 at 6:52 pm

    Ho usato questa funzione hashword e credo sia la stessa di cui parla l’articolo

    uint32_t hashword(
    const uint32_t *k, /* the key, an array of uint32_t values */
    size_t length, /* the length of the key, in uint32_ts */
    uint32_t initval) /* the previous hash, or an arbitrary value */
    {
    uint32_t a,b,c;

    /* Set up the internal state */
    a = b = c = 0xdeadbeef + (((uint32_t)length)< 3)
    {
    a += k[0];
    b += k[1];
    c += k[2];
    mix(a,b,c);
    length -= 3;
    k += 3;
    }

    /*——————————————- handle the last 3 uint32_t’s */
    switch(length) /* all the case statements fall through */
    {
    case 3 : c+=k[2];
    case 2 : b+=k[1];
    case 1 : a+=k[0];
    final(a,b,c);
    case 0: /* case 0: nothing left to add */
    break;
    }
    /*—————————————————— report the result */
    return c;
    }

    Ma S1 mi viene diverso da quello dell’esempio ed anche S2.
    Il vettore generato K contiene i byte del MAC riordinati secondo lo schema sopra presente. Poi convertiti n base 10.

    Nell’ esempio avrei K={0x56210056 0x21002156 0x34961296 0x34129696,…}

    Dove sbalio?

  36. July 27, 2013 at 6:25 pm

    If some one wishes to be updated with most recent technologies then he
    must be visit this site and be up to date everyday.

  37. May 18, 2014 at 1:28 am

    titn

  38. April 22, 2015 at 1:01 am

    Se ve muy vien

  1. September 9, 2010 at 6:29 pm
  2. September 10, 2010 at 1:02 pm
  3. September 26, 2010 at 4:51 pm
  4. November 7, 2010 at 4:16 pm
  5. January 18, 2011 at 1:09 pm
  6. February 12, 2011 at 1:29 pm
  7. September 3, 2012 at 6:01 pm
  8. November 22, 2012 at 12:40 pm
  9. November 22, 2012 at 12:40 pm
  10. April 20, 2015 at 7:48 pm

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: