Scrittura della eeprom nelle schede atheros 5k mini-pci

ath2

Qualche giorno fa su ebay ho ordinato un’interfaccia mini-pci atheros su cui è scritto che supporta anche l’802.11a ( 5 Ghz ), una volta ricevuta ho constatato che tale scheda mini-cpi pagata pochissimo ( 5 € ) , non è originale ed ha bisogno di drivers modificati che sono forniti solo per windows per funzionare in 802.11a, quindi è inutilizzabile su un qualsiasi router OpenWRT oppure su una board MikroTik.
Ovviamente da buon hacker ho scartato subito l’idea di comprarne una nuova e lasciare perdere quella, ed ho subito aperto lo schermo metallico che racchiude i componenti ad alta frequenza.
Possedendo una atheros a 5 Ghz autentica , aprendo anche quest’ultima, ho subito constato che l’hardware effettivamente è completamente identico, c’è un solo componente che potrebbe essere diverso ( nei contenuti ), la EEPROM.

Quindi ho iniziato a cercare su internet ed ho trovato che uno sviluppatore ha trovato modo di modificare il mac address nei casi in cui fosse presente FF:FF:FF:FF:FF:FF , questo richiede la scrittura della eeprom, proprio quello che serve in questo caso!

Una volta riordinato il codice( era in condizioni penose ), e aggiornato alle modifiche dei drivers nelle versioni recenti del kernel, ho aggiunto in cima ad eeprom.c nel tree del driver ath5k la seguente funzione:


Questa funzione non fa altro che scrivere la eeprom in blocci di 2 byte ( WORD ).

A questo punto l’idea più semplice è ottenere un dump della eeprom della scheda autentica, cambiarne il mac address e scriverla sulla eeprom della scheda cinese.

Per fare ciò senza creare un device a blocchi, date le dimensioni esigue della eeprom, è sufficiente implementare con printk un semplice dump che finirà sui log.

Ciò è possibile farlo inserendo in ath5k_eeprom_init il seguente blocco di codice:

Questo codice provvederà ad eseguire il dump della eeprom nel formato indirizzo:word.

Una volta eseguito il dump, è necessario trovare in esso il mac address della propria scheda , il quale sarà riportato in ordine inverso ( nel caso fosse 01:02:03:04:05:06 , ci sarà 0506 , 0304, 0102 ), e modificarne l’ultima cifra ( 05:06 ) prefribilmente.

Una volta creato il dump, con un semplice script python ( che verrà pubblicato a breve ) è possibile generare il sorgente C per chiamare la funzione ath5k_hw_eeprom_write per ogni word da scrivere sulla eeprom.

Per scrivere la eeprom è necessario, una volta rimosso il coperchio dello schermo RF va collegato a massa tramite una resistenza 150-300 ohm il pin Write Protect della eeprom in modo da abilitarne la scrittura, e va tenuto collegato durante tutta la procedura di scrittura.

Nonostante sia presente una resistenza di pullup da 10kOhm , la resistenza da collegare a massa è più che sufficiente a portare il pin allo 0 logico.

Una volta completata la scrittura, se la scheda da dove è stato preso il dump della eeprom a aveva un pezzo di materiale termoconduttore fra il coperchio dello schermo ed il chip wireless, è necessario applicarne uno anche sulla scheda cinese.

A questo punto è possibile utilzzare la scheda con i drivers non modificati come se fosse autentica.