Scrittura della eeprom nelle schede atheros 5k mini-pci

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.

Installare openwrt sull’Alice Gate 2 Plus Wifi Voip – AGPF

Occorrente

  • Convertitore USB-Seriale ( anche un arduino va bene a tale scopo in quanto ne contiene uno )
  • Saper usare e possedere un saldatore a stagno per elettronica
  • Avere a disposizione 1 macchina con linux e saperci installare un server TFTP
  • Un programma per usare il terminale seriale compatibile con gli escape xterm , io ho utilizzato gtkterm

Collegamento della porta seriale sul router

Per collegare la porta seriale sul router si devono saldare 3 cavi sulle piazzole contrassegnate TX , RX e GND in questa disposizione ( tenendo le porte ethernet verso l’alto ed il PCB sul lato componenti ):
GND RX
GND +3.3V
GND TX

Una volta saldati i 3 cavi, collegare PRIMA GND con il convertitore, altrimenti c’è il rischio a causa di possibili dispersioni dell’alimentatore dell’AGPF di danneggiare il convertitore USB-Seriale ed il processore dell’AGPF.
Nel caso dell’arduino , a differenza del caso con un convertitore USB-Seriale, dovrete collegare TX con TX e RX con RX, in quanto la serigrafia sul circuito dell’arduino si riferisce al microcontroller e non al convertitore.
Nonostante l’arduino lavori a 5 volt e l’AGPF a 3.3 , non mi è mai successo che ci fossero danni o malfunzionamenti, si consiglia comunque di usare il meno possibile la porta seriale in queste condizioni.
La porta seriale va impostata a 115200 baud, 1 bit di parità e 8 bit di dati.

Entrare nella modalità recovery

Una volta collegati i cavi accendendo il router si dovrebbero vedere i messaggi di avvio sulla porta seriale, non appena compare una qualsiasi scritta premere subito ripetutamente il tasto invio per entrare in modalità recovery.
In modalità recovery dovrebbe sulla porta seriale comparire il prompt “CFE>”, accendersi il led power rosso ed il router avrà indirizzo ip 192.168.1.1 sulla porta ethernet numero 1.
Nel caso non compaia nessuna scritta o il router non risponda alla pressione del tasto invio, ricontrollare  i collegamenti e riprovare.

Eseguire il flash

Una volta che il router è in recovery, è sufficiente collegare un cavo ethernet verso una macchina con un indirizzo sulla stessa rete ( ma diverso da 192.168.1.1 ) che abbia un server tftp installato ed eseguire flashimage 192.168.1.X:nomefile.bin , dove 192.168.1.X è l’indirizzo della macchina e nomefile.bin è il nome del file da flashare.
Il firmware da flashare è quello jffs 128k, senza cfe per AGV2+W, scaricabile all’indirizzo http://downloads.openwrt.org/snapshots/trunk/brcm63xx/
Nel dettaglio la procedura è mostrata nel seguente video

Utilizzare la porta USB del router

Per utilizzare la porta usb del router è necessario installare kmod-usb-ohci , il quale abiliterà il controller USB host del router.

Problemi con la privacy, smartphone e reti wireless

Forse non tutti lo sanno, ma quando uno smartphone non si trova connesso ad una rete wireless, ed il wifi è abilitato esegue continuamente la scansione, e fin qui tutto ok.
Il problema è che la scansione a differenza di come molti pensano non è solo passiva, ma è anche attiva, esistono dei frame speciali di probe che servono al dispositivo per controllare se un eventuale rete wireless nascosta è nel raggio di azione.
Questi frame una volta inviati, se ricevuti da un access point il cui SSID ( Service Set Identifier, in parole povere il nome della rete wireless ) corrisponde con quello nel frame , l’access point risponderà in modo da segnalare la propria presenza.
Gli smartphone android, ma probabilmente anche gli iPhone ed i notebook, inviano i probe per tutte le reti wireless salvate nel dispositivo, e questi pacchetti sono facilmente intercettabili ricorrendo alla suite aircrack-ng e nello specifico ad airmon-ng.
Una volta trovati questi SSID è possibile tramite l’uso di siti di wardriving come http://wigle.net risalire alla posizione geografica precisa dell’access point e quindi trovare i posti frequentati dalla persona, inoltre con l’ordine dei probe inviati potrebbe anche essere possibile determinare i più recenti.

Purtroppo per far fronte a ciò non esistono molte soluzioni, i più esperti potrebbero disattivare i probe eseguendo modifiche ad android, altrimenti una mezza soluzione è non tenere acceso il wifi se non in uso, ma ciò non protegge affatto in modo sicuro da questo tipo di attacco.

Installazione ed uso di una SDR Realtek su Opensuse

Installazione dei software necessari

Come si può subito constatare collegandola , la pennetta USB in questione non è supportata su Linux, ma a noi non interessa, perché dobbiamo farci tutt’altro che vedere la spazzatura che gira sulla TV italiana.
Il software di riferimento su questa guida è gqrx, una radio completamente software con interfaccia grafica che insieme a questa SDR molto economica ci consentirà di sintonizzare tutte le frequenze partendo da 50 MHz fino a 2100 MHz circa ( questi valori essendo fuori dalle specifiche possono variare da hardware ad hardware ), ed effettuare la demodulazione di segnali AM , FM ( Sia stretto che largo ) e decodificare il packet radio.
Per le distribuzioni opensuse l’installazione dei drivers userspace e del software gqrx si esegue usando l’One Click install gqrx .

Utilizzo di gqrx

Una volta installato gqrx, è possibile avviarlo o tramite riga di comando o dal menu applicazioni dell’ambiente grafico ( per i newbie: si intende l’equivalente del menu start ).
All’avvio comparirà una finestra che ci chiede quale periferica usare ed altri parametri, lasciando invariati gli altri parametri assicuratevi che sia selezionato “Realtek RTL2838UHIDIR…” come visibile qui:
Una volta selezionato OK, comparirà la finestra principale del programma, per iniziare basterà premere il tasto di accensione in alto a sinistra.
Una volta “acceso” il programma, la prima cosa che può confondere un radioamatore abituato alle radio  analogiche è la presenza di due frequenze.
In realtà la frequenza principale è quella generata da un oscillatore interno, e verrà miscelata con il segnale proveniente dall’antenna, così facendo si otterrà somma e sottrazione delle frequenze e quindi si otterrà un porzione di spettro che parte dalla frequenza del PLL.
Salta subito all’occhio anche un difetto delle SDR , ovvero il rumore in continua, in corrispondenza della frequenza centrale secondo la teoria dovrebbe essere possibile comunque utilizzare il segnale, ma in pratica invece non è possibile perché si viene a creare moltissimo rumore.
Una volta sintonizzato il PLL quindi bisogna con il mouse sull’analizzatore di spettro oppure utilizzando il display contrassegnato con “Offset demod.”, selezionare l’offset rispetto alla frequenza del PLL.
Una volta sintonizzati su una trasmissione ( una trasmissione appare come un picco ben definito nello spettro) è necessario selezionare la modulazione con il quale il segnale è trasmesso e la larghezza del demodulatore.

Principali tipi di trasmissione

Una volta presa dimestichezza con gqxr può comunque risultare difficile orientarsi nello spettro di frequenze per trovare trasmissioni interessanti, quindi di seguito elencherò i tipi di trasmissione e le frequenze più comuni:
  • Radio FM 88-108 MHz , Demodulatore FM Wide Stereo o Mono
  • Torri di controllo di aeroporti e comunicazioni navali 115 – 140 MHz , Demodulatore AM 
  • Carabinieri, Polizia ed altre forze dell’ordine: 160-170 Mhz , 425 – 428 Mhz , 434 Mhz , 465-467Mhz , Demodulatore FM Stretto
  • Telecomandi apricancello e di auto, sensori stazioni meteo ecc 433 MHz , Demodulatore AM ( è necessario successivamente decodificare i bit in quanto si tratta di trasmissioni digitali )
  • Cuffie via radio ed altri gadget audio wireless : 432 MHz , Demodulatore FM Stretto
  • PMR ( Personal Mobile Radio, sono i walkie talkie giocattolo in pratica ) 443 Mhz , 446 Mhz ,Demodulatore FM Stretto
  • Radiomicrofoni 720-740 MHz FM Stretto
  • Radioamatori 430-432 Mhz , FM Stretto

Interferenze

Un altro problema che subito si noterà è la presenza di interferenze, molte sono di natura esterna ( ovvero provengono da fonti nelle vicinanze ), mentre altre sono di natura interna, prodotte dal pc stesso o dalla SDR.
Per ridurre le interferenze il più possibile si devono utilizzare ESCLUSIVAMENTE cavi schermati per collegare la SDR via USB ( in pratica i cavetti da 20 centesimi cinesi non vanno bene), e va utilizzato possibilmente un PC desktop con il case metallico e chiuso, ed adeguatamente messo a terra.
Per tentare di ricevere segnali più lontano è possibile usare l’antenna TV della propria abitazione a patto che il vostro impianto usi un centralino a larga banda e non dei moduli selettivi per ogni canale TV.