mercoledì 9 febbraio 2011

Firmware 1.0.7.98 moddato per WNDR3700

Ho riportato tutte le modifiche fatte sul firmware 1.0.4.68 sul nuovo 1.0.7.98.
Potete scaricarlo qui

venerdì 4 febbraio 2011

Hacking Netgear WNDR3700

Dopo avere fatto una ricerca sui migliori router wifi, ho acquistato il Netgear WNDR3700.
Gran bella macchina ma, un po' per smanettare, un po' per migliorarne lo funzionalità, ne ho modificato il firmware.

Tutto è cominciato leggendo questo post.

Per il WNDR3700 esistono altri firmware non originali, in particolare OpenWRT e dd-wrt.
Sono bellissimi progetti, ma alla fine non mi sono mai trovato bene nell'utilizzarli, perchè ho sempre trovato qualcosa che non andava: vuoi il wifi con delle pecche, vuoi il dlna, vuoi l'upnp, ecc.

Io, invece, sono partito dal firmware originale, disponibile in sorgente sul sito Netgear, e ho aggiunto le caratteristiche che l'originale non aveva.

Eccomi con il mio firmware modificato, partendo dall'originale.
Innanzi tutto ecco il link: http://dl.dropbox.com/u/7400261/WNDR...68-ste.010.img.

Sono partito dal firmware Netgear 1.0.4.68, l'ultimo affidabile, in questo momento, di cui siano stati pubblicati i sorgenti.

Rispetto al fw originale ho:
- aggiunto il filesystem mini_fo (filesystem che può essere basato su RAM o su disco USB e che memorizza le modifiche che si fanno rispetto quanto è in ROM. in pratica rende il file sistem in lettura/scrittura)
- aggiunto il supporto ai file di swap
- abilitato utelnetd di default, senza necessità di telnetenable
- aggiunto ipkg, per potere installare pacchetti preconfigurati
- aggiunto dropbear, server ssh
- aggiunte diverse utility busybox, tra le quali: vi, less, more e2fsprogs, ecc.
- aggiunti alcuni script nella directory /scripts, che vediamo dopo.


vediamo ora come trarre vantaggio dal firmware.

Trattandosi di un derivato del fw originale, si può passare tranquillamente da questo a quello originale e viceversa senza problemi, direttamente da interfaccia web.

Una volta installato il firmware, si può entrare vial telnet, con il comando
Codice:
telnet 192.168.1.1
(se avete un altro indirizzo, dovete usare il vostro).

A questo punto è necessario preparare il disco o la chiavetta USB.
Questo firmware viene sfruttato a dovere solamente con un disco o una chiavetta USB collegata.

Nel micaso ho un disco da 500GB, diviso in 4 partizioni:
1) partizione di swap, 128 MB (ho notato che a volte il router va in out of memory, con lo swap si risolve)
2) partizione di sistema (root), di tipo ext3, 1GB
3) partizione che uso montata via samba, circa 150 GB, ext3 (può essere NTFS, ma le prestazioni sono inferiori)
4) partizione che uso sia montata via samba che attraverso dlna per musica e video, come dimensione è il resto del disco. Formattata ext3 (anche questa può essere NTFS, io consiglio ext3).

Il disco può essere configurato in modo totalmente differente, l'importante è che ci siano le partizioni 1 e 2 (anche con numeri di partizione diversi).

Per preparare il disco ci sono 2 possibilità:
1) direttamente da router
2) da un pc linux (eventualmente anche macchina virtuale, se supporta USB. Io uso Virtualbox.

Per partizionare il disco si usas fdisk.Se non sapete usarlo, potete p.es. guardare qui.
Nel mio caso, lo ripeto, ho 1 partizione di tipo 82 (swap) e 3 di tipo 83 (linux).

Una volta partizionato il disco, è il momento di formattarlo.
1) per formattare la partizione di swap:
Codice:
mkswap /dev/sda1
(sempre ipotizzando che la partizione di swap sia la numero 1).
2) per formattare le altre partizioni:
Codice:
mkfs.ext3 /dev/sda2
. Fare la stessa cosa per sda3 e sda4 (se avete 4 partizioni come me).

Perfetto, il disco è pronto.

Ora occorre lanciare questo comando:
Codice:
/scripts/prepare 2
(sostituire 2 con la vostra partizione di root, quella dove volete mettere il sistema).
Il comando impiege 20-30 secondi perchè deve creare una coppia di chiavi per dropbear (SSH).
Ignorate eventuali messaggi, lo script non è pulitissimo ma dovrebbe funzionare.

Lo script vi chiede di modificare la password di root (è necessario perchè dropbear non funziona senza password). Inserite 2 volte la password che volete per l'utente root.

FINITO!!!
a questo punto, se non ci sono stati errori vi trovate con:
- il sistema montato sul disco usb in lettura e scrittura
- swap file abilitato
- drobear abilitato

Ora potete non utilizzare più telnet e potete passare a dropbear.
Volendo potete anche disabilitare utelnetd, visto che fa entrare senza password, che è un discreto buco di sicurezza .
Per usare dropbear vi serve un client ssh. io uso putty. Attenzione, ho configurato dropbear.

Se ora fate reboot de router, quando riparte non è più necessario fare nulla, file system in lettura/scrittura, swap e dropbear sono già abilitati.
Prima di entrare con ssh aspettate 10 secondi da quando il led "power" diventa verde fisso, per dare il tempo agli script di fare le loro magie.

Se fate reboot senza disco USB, tutto funziona come nel firmware originale (a parte utelnetd abilitato di default). Quindi, in caso di problemi, basta fare reboot senza disco USB.


Se volete vedere quali pacchetti sono disponibili, potete fare
Codice:
ipkg update
ipkg list
Per installare un pacchetto:
Codice:
ipkg install nomepacchetto
Nota: non ho installato NFS, come qualcuno aveva chiesto. se qualcuno lo vuole installare può farlo facilmente col comando
Codice:
ipkg install unfs3
.
L'interfaccia web è quella originale senza alcuna modifica.

Nota2: la gestione dei canali a seconda del paese impostato funziona.

Nota3: il fatto che lo swap sta funzionando potete verificarlo col comando "free".

Nota4: dimenticavo: nel firmware è attivo cron, quindi se volete mettere le vostre schedulazioni, potete farlo (io non ne ho).

Direi che è tutto. Se avete voglia di provarla, fate sapere.

Se avete idee per nuove implementazioni, potrebbero interessare anche me.