Italiano English
Modifica History Actions

Differenze per "LaFoneraDallaScatolaAOpenWrt"

Differenze tra le versioni 8 e 9
Versione 8 del 2007-01-25 19:42:20
Dimensione: 10260
Autore: blaxwan
Commento:
Versione 9 del 2007-01-25 21:18:13
Dimensione: 15567
Autore: blaxwan
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 34: Linea 34:
Alla data in cui scrivo, La Fonera arriva con un firmware versione 7.1.2, versione che corregge il bug che invece ci è necessario per garantirci un accesso via SSH. Per questo la prima operazione sarà quella di riportare il router alla versione 7.1.1. Se invece il vostro router ha già a bordo questa versione potete saltare al paragrafo successivo. Per il downgrade è possibile procedere almeno in tre modi: Alla data in cui scrivo, La Fonera arriva con un firmware versione 7.1.2, versione che corregge il bug che invece ci è necessario per garantirci un accesso via SSH. Per questo la prima operazione sarà quella di riportare il router alla versione 7.1.1. Se invece il vostro router ha già a bordo questa versione potete saltare al paragrafo successivo. Per il downgrade è possibile procedere almeno in tre modi  (thanks to OnE), nel mio caso il primo ha funzionato:
Linea 41: Linea 41:
   * disconnettere La Fonera da Internet (cavo Ethernet)
Linea 67: Linea 68:
 * '''2-step downgrade'''  * '''2-step downgrade'''. Se non si è riusciti nel downgrade precedente è perchè la 7.1.1 è un'aggiornamento della 7.0.x quindi verrà accettato solo da questa serie di firmware. Per questo possiamo portare la Fonera prima alla 7.0.4 e quindi alla 7.1.1
   * disconnettere La Fonera da Internet (cavo Ethernet)
   * scaricare sul PC il firmware 7.0.4, attualmente si può trovarlo a [http://www.paologatti.it/wp-content/uploads/fonera-r1.zip questo indirizzo] in versione compressa, decomprimerlo prima di utilizzarlo
   * collegarsi alla Fonera via wireless oppure con cavo cross (169.254.255.2/24 sul PC, Fonera all'indirizzo 169.254.255.1)
   * aprire l'interfaccia di amministrazione della Fonera, andare in firmware upgrade e caricare il firmware 7.0.4
   * La Fonera si riavvia, alla ripartenza controllare di avere il firmware 7.0.4 installato
   * connettere La Fonera ad Internet e connettersi alla wireless della Fonera
   * sulla Fonera partirà la procedura automatica di download che installerà il firmware 7.1.1
   * disconnettere La Fonera da Internet non appena l'aggiornamento sarà completato, possiamo accorgercene dall'interruzione del collegamento wireless. Questo per evitare che successivamente La Fonera scarichi ed installi anche la versione 7.1.2

A questo punto, se uno dei tre metodi ha funzionato, avremo La Fonera con firmware Fon 7.1.1, pronti per hackerarne l'interfaccia http ed aprire una shell via SSH.
Linea 71: Linea 82:

Questo hack (thanks to Mart) semplice semplice ci permette di aprire una shell SSH iniettando comandi tramite postdata in una delle cgi della Fonera. Attenzione però: funziona solo con il firmware 7.1.1 che a questo punto dovremmo avere. Nel caso abbiamo firmware precedenti e non vogliamo installare il 7.1.1 possiamo provare ad utilizzare il primo o il secondo hack linkati nel paragrafo '''Fonti'''. Procediamo:
 * creare un file html (ad es. primo.html) sul PC con il contenuto seguente:
{{{
<html>
<head></head><body><center>
<form method="post" action="http://169.254.255.1/cgi-bin/webif/connection.sh" enctype="multipart/form-data">
<input name="username" value="$(/usr/sbin/iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT)" size="68" />
<input type="submit" name="submit" value="Submit" />
</form>
</center></body></html>
}}}
 * creare un'altro file html (ad es. secondo.html) con il contenuto seguente:
{{{
<html>
<head></head><body><center>
<form method="post" action="http://169.254.255.1/cgi-bin/webif/connection.sh" enctype="multipart/form-data">
<input name="username" value="$(/etc/init.d/dropbear)" size="68" ><input type="submit" name="submit" value="Submit" />
</form>
</center></body></html>
}}}
 * impostare sul PC un'indirizzo del tipo 169.254.255.2/24
 * aprire il primo file html, cliccare su "Submit", verranno chieste le credenziali di accesso alla Fonera, inserirle (se non le si è modificate sono username admin, password admin)
 * aprire il secondo file html, cliccare su "Submit", verranno chieste le credenziali di accesso alla Fonera, inserirle
 * in questo modo, tramite il post dei due form contenuti nei file html abbiamo iniettato i comandi
{{{
/usr/sbin/iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT
/etc/init.d/dropbear
}}}
   per, rispettivamente, aprire la porte 22 (SSH) nel firewall della Fonera e lanciare il daemon SSH (Dropbear)

A questo punto abbiamo la possibilità di entrare in SSH nella Fonera, prima di andare oltre però, vogliamo assicurarci che il router mantenga aperto l'SSH anche dopo un reboot e che non tenti più di auto-aggiornarsi via Internet con un nuovo firmware tagliandoci fuori.
 * lanciare il client SSH sull'indirizzo della Fonera 169.254.255.1
 * loggarsi come root, stessa password di prima
 * dare il comando
{{{
mv /etc/init.d/dropbear /etc/init.d/S50dropbear
}}}
   il daemon SSH ora partirà automaticamente all'avvio
 * dare
{{{
vi /etc/firewall.user
}}}
   e editare il file /etc/firewall.user che contiene le regole che il firewall carica all'avvio, trovare le linee
{{{
# iptables -t nat -A prerouting_rule -i $WAN -p tcp –dport 22 -j ACCEPT
# iptables -A input_rule -i $WAN -p tcp –dport 22 -j ACCEPT
}}}
  e decommentarle togliendo il "#" e lo spazio
 * allo stesso modo, editare il file /bin/thinclient (vi /bin/thinclient) e commentare (aggiungendo un "#" all'inizio riga) la linea
{{{
. /tmp/.thinclient.sh
}}}
   per evitare di far partire lo script che aggiorna automaticamente La Fonera non appena questa ha una connessione ad Internet, dopodichè aggiungere di seguito (sotto la riga "# . /tmp/.thinclient.sh"):
{{{
cp /tmp/.thinclient.sh /tmp/thinclient-$(date '+%Y%m%d-%H%M')
}}}
   per mantenere inattivi in file temporanei ogni script di aggiornamento scaricato dalla Fonera

A questo punto
Linea 161: Linea 232:
 * http://www.paologatti.it/index.php/2007/01/19/effettuare-il-downgrade-della-fonera-al-firmware-071r1/  * http://www.paologatti.it/index.php/2007/01/19/effettuare-il-downgrade-della-fonera-al-firmware-071r1/ Firmware downgrade
 * http://stefans.datenbruch.de/lafonera/ Primo hack
 * http://bingobommel.blogspot.com/2006/11/hacking-la-fonera-part-ii.html Secondo hack
 * http://www.notmart.org/index.php/BlaBla/Hacking_la_fonera..._part_III Terzo hack
Linea 165: Linea 239:
 * la comunità ninux.org (di cui faccio parte) per l'hosting di questo tutorial e per avermi fatto venire una voglia matta di smanettare sugli apparati wireless
 * Raffaele (aka Thomas Anderson) per i suggerimenti in m-list e le pagine di trucchi e consigli su La Fonera scritte su questo wiki
 * la comunità [http://www.ninux.org ninux.org] (di cui faccio parte) che ospita questo tutorial, per avermi fatto venire una voglia matta di smanettare sugli apparati wireless
 * Raffaele (aka Thomas Anderson), Oscar e Saverio (aka ZioPRoTo) per i suggerimenti in m-list e le pagine di trucchi e consigli su La Fonera scritte su questo wiki
Linea 168: Linea 242:
 * Stefan Tomanek e Michael Kebe per il primo hack
 * BingoBommel per il secondo hack
 * Mart per il terzo hack

...racconto per filo e per segno la mia flashata di fonera...BR WORK IN PROGRESS!!!BR blax

TableOfContents

Disclaimer

Prima di iniziare ci sono un pò di cose da precisare.BR [http://it.fon.com/ Fon] ha investito e continua a investire molto denaro per realizzare una rete condivisa in tutto il mondo. Modificare i suoi "social router", specialmente se ottenuti gratuitamente, con un firmware che non collabora al loro progetto non è una bella cosa. Il presente tutorial rappresenta quindi solo un'occasione di studio per imparare il funzionamento dei router wireless e dei firmware linux embedded. Dopo aver esaurito la nostra sete di conoscenza ed imparato ciò che si voleva su [https://shop.fon.com/FonShop/shop/IT/ShopController?view=product&product=PRD-001 La Fonera], consiglio vivamente di riportare La Fonera a firmware originale Fon almeno fin quando non saremo capaci di installare ed utilizzare i servizi originali Fon anche su un firmware diverso.

Le informazioni contenute in questo tutorial, inoltre, non sono farina del mio sacco. Mi sono semplicemente limitato a cercare su Internet le migliori (a mio avviso) informazioni disponibili per riprogrammare il router e qui riporto semplicemente il racconto passo passo di come ho installato [http://openwrt.org/ OpenWrt] in "salsa" [http://wiki.openwrt.org/OpenWrtDocs/KamikazeConfiguration Kamikaze] su La Fonera.

Questo tutorial è da considerarsi a solo scopo informativo e ogni tipo di modifica che apporterete alle vostre Fonera sono a vostro rischio, pericolo e responsabilità. Così come gli autori originali delle informazioni che qui riporto e ringrazio, non mi assumo alcuna responsabilità riguardo a danni causati a cose e persone per quanto riportato in queste pagine.

Happy hacking!BR ...::..:::BlaXwan:::..::... 25 gennaio 2007

Overview

Il FON2100A, meglio conosciuto come La Fonera, è un bellissimo router sociale basato su un System on a Chip (SOC) della [http://www.atheros.com/ Atheros] (Atheros AR2315) venduto da Fon ad un prezzo estremamente basso. In un'unità di dimensioni molto compatte, tanto da stare nel palmo di una mano, integra un processore MIPS 4KEc V6.4, una scheda wireless, una scheda Ethernet, una flash da 8 MB e 16 MB di RAM!BR La procedura qui descritta permette di installare OpenWrt in configurazione Kamikaze via software, senza alcun intervento hardware e senza necessità alcuna di aprire il router. Ovviamente sarebbe molto più facile e diretto operando via HW ma, per farlo, sarebbe necessario disporre di un'interfaccia JTAG o almeno di un'interfaccia seriale per questo router rendendo, alla fine, comunque più complicata (e rischiosa) la modifica. Si presume abbiate già collegato la prima volta la vostra Fonera ed abbiate eseguito i passi riportati nella guida Fon per attivare le due reti wireless che fornisce di default FON_AP e MyPlace e che sappiate già come connettervi a MyPlace e connettervi all'interfaccia http del router stesso. Per la modifica, innanzitutto faremo (se necessario) un downgrade del firmware Fon per riportarlo ad una versione che ha un bug tale da permetterci di aprire una shell via SSH, in seguito ci garantiremo la possibilità di modificare direttamente il contenuto della flash allo scopo di ottenere l'accesso a [http://sourceware.org/redboot/ RedBoot], l'ambiente di bootstrap del router, allo scopo di caricare l'immagine dell'OS e il kernel di Kamikaze.

Tornare al firmware 7.1.1

Alla data in cui scrivo, La Fonera arriva con un firmware versione 7.1.2, versione che corregge il bug che invece ci è necessario per garantirci un accesso via SSH. Per questo la prima operazione sarà quella di riportare il router alla versione 7.1.1. Se invece il vostro router ha già a bordo questa versione potete saltare al paragrafo successivo. Per il downgrade è possibile procedere almeno in tre modi (thanks to OnE), nel mio caso il primo ha funzionato:

  • Resettone. E' il metodo più semplice:

    • disconnettere La Fonera da Internet (cavo Ethernet)
    • premere e tener premuto il pulsante di reset (posto sotto il router) per più di 15 secondi
    • riavviare il router scollegando e ricollegando l'alimentazione
    • connettersi all'interfaccia http della Fonera senza connettere La Fonera stessa ad Internet (si può fare via wireless o con un cavo crossed utilizzando sul PC l'indirizzo 169.254.255.2/24 per trovare La Fonera all'indirizzo http://169.254.255.1/) e verificare che il firmware sia quello giusto (7.1.1)

  • Downgrade via http.

    • disconnettere La Fonera da Internet (cavo Ethernet)
    • scaricare sul PC il firmware 7.1.1, attualmente si può trovarlo a [http://wifi.byethost8.com/Ninux/fonera/fw/fonera_0.7.1.1.fon questo indirizzo]

    • collegarsi alla Fonera via wireless oppure con cavo cross (169.254.255.2/24 sul PC, Fonera all'indirizzo 169.254.255.1)
    • aprire l'interfaccia di amministrazione della Fonera, andare in firmware upgrade e caricare il firmware 7.1.1
    • molto probabilmente il router non accetterà il downgrade a 7.1.1 dandovi il seguente output:

Stopping services...
kill: Could not kill pid '620': No such process
kill: Could not kill pid '458': No such process
Memoria liberata7872
Salvataggio configurazioni...
tar: Removing leading '/' from member names
Unlocking config ...
Writing from /tmp/config.tar.gz to config ...  [ ][e][w]
This is a FON reflash v2 archive
Verified OK
Upgrade name: reflash_all
This hotfix is intended for 0.7.0. The firmware version on this router is 0.7.1.

Il processo di aggiornamento non è andato a buon fine

Controlla che l'aggiornamento .fon che stai installando sia valido per questa versione del firmware e per questo modello di router

Riavviamento servizi...
  • Ma, nonostante questo errore, il firmware dovrebbe essere installato, riavviare La Fonera e controllare che sia così
  • 2-step downgrade. Se non si è riusciti nel downgrade precedente è perchè la 7.1.1 è un'aggiornamento della 7.0.x quindi verrà accettato solo da questa serie di firmware. Per questo possiamo portare la Fonera prima alla 7.0.4 e quindi alla 7.1.1

    • disconnettere La Fonera da Internet (cavo Ethernet)
    • scaricare sul PC il firmware 7.0.4, attualmente si può trovarlo a [http://www.paologatti.it/wp-content/uploads/fonera-r1.zip questo indirizzo] in versione compressa, decomprimerlo prima di utilizzarlo

    • collegarsi alla Fonera via wireless oppure con cavo cross (169.254.255.2/24 sul PC, Fonera all'indirizzo 169.254.255.1)
    • aprire l'interfaccia di amministrazione della Fonera, andare in firmware upgrade e caricare il firmware 7.0.4
    • La Fonera si riavvia, alla ripartenza controllare di avere il firmware 7.0.4 installato
    • connettere La Fonera ad Internet e connettersi alla wireless della Fonera
    • sulla Fonera partirà la procedura automatica di download che installerà il firmware 7.1.1
    • disconnettere La Fonera da Internet non appena l'aggiornamento sarà completato, possiamo accorgercene dall'interruzione del collegamento wireless. Questo per evitare che successivamente La Fonera scarichi ed installi anche la versione 7.1.2

A questo punto, se uno dei tre metodi ha funzionato, avremo La Fonera con firmware Fon 7.1.1, pronti per hackerarne l'interfaccia http ed aprire una shell via SSH.

Aprire l'ssh (e tenerlo aperto)

Questo hack (thanks to Mart) semplice semplice ci permette di aprire una shell SSH iniettando comandi tramite postdata in una delle cgi della Fonera. Attenzione però: funziona solo con il firmware 7.1.1 che a questo punto dovremmo avere. Nel caso abbiamo firmware precedenti e non vogliamo installare il 7.1.1 possiamo provare ad utilizzare il primo o il secondo hack linkati nel paragrafo Fonti. Procediamo:

  • creare un file html (ad es. primo.html) sul PC con il contenuto seguente:

<html>
<head></head><body><center>
<form method="post" action="http://169.254.255.1/cgi-bin/webif/connection.sh" enctype="multipart/form-data">
<input name="username" value="$(/usr/sbin/iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT)" size="68" />
<input type="submit" name="submit" value="Submit" />
</form>
</center></body></html>
  • creare un'altro file html (ad es. secondo.html) con il contenuto seguente:

<html>
<head></head><body><center>
<form method="post" action="http://169.254.255.1/cgi-bin/webif/connection.sh" enctype="multipart/form-data">
<input name="username" value="$(/etc/init.d/dropbear)" size="68" ><input type="submit" name="submit" value="Submit" />
</form>
</center></body></html>
  • impostare sul PC un'indirizzo del tipo 169.254.255.2/24
  • aprire il primo file html, cliccare su "Submit", verranno chieste le credenziali di accesso alla Fonera, inserirle (se non le si è modificate sono username admin, password admin)
  • aprire il secondo file html, cliccare su "Submit", verranno chieste le credenziali di accesso alla Fonera, inserirle
  • in questo modo, tramite il post dei due form contenuti nei file html abbiamo iniettato i comandi

/usr/sbin/iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT
/etc/init.d/dropbear
  • per, rispettivamente, aprire la porte 22 (SSH) nel firewall della Fonera e lanciare il daemon SSH (Dropbear)

A questo punto abbiamo la possibilità di entrare in SSH nella Fonera, prima di andare oltre però, vogliamo assicurarci che il router mantenga aperto l'SSH anche dopo un reboot e che non tenti più di auto-aggiornarsi via Internet con un nuovo firmware tagliandoci fuori.

  • lanciare il client SSH sull'indirizzo della Fonera 169.254.255.1
  • loggarsi come root, stessa password di prima
  • dare il comando

mv /etc/init.d/dropbear /etc/init.d/S50dropbear
  • il daemon SSH ora partirà automaticamente all'avvio
  • dare

vi /etc/firewall.user
  • e editare il file /etc/firewall.user che contiene le regole che il firewall carica all'avvio, trovare le linee

# iptables -t nat -A prerouting_rule -i $WAN -p tcp –dport 22 -j ACCEPT
# iptables -A input_rule -i $WAN -p tcp –dport 22 -j ACCEPT
  • e decommentarle togliendo il "#" e lo spazio
  • allo stesso modo, editare il file /bin/thinclient (vi /bin/thinclient) e commentare (aggiungendo un "#" all'inizio riga) la linea

. /tmp/.thinclient.sh
  • per evitare di far partire lo script che aggiorna automaticamente La Fonera non appena questa ha una connessione ad Internet, dopodichè aggiungere di seguito (sotto la riga "# . /tmp/.thinclient.sh"):

cp /tmp/.thinclient.sh /tmp/thinclient-$(date '+%Y%m%d-%H%M')
  • per mantenere inattivi in file temporanei ogni script di aggiornamento scaricato dalla Fonera

A questo punto

Accesso a RedBoot

root@OpenWrt:~# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00030000 00010000 "RedBoot"
mtd1: 006f0000 00010000 "rootfs"
mtd2: 00570000 00010000 "rootfs1"
mtd3: 00010000 00010000 "config"
mtd4: 000b0000 00010000 "vmlinux.bin.l7"
mtd5: 0000f000 00010000 "FIS directory"
mtd6: 00001000 00010000 "RedBoot config"
mtd7: 00010000 00010000 "board_config"
root@OpenWrt:~# mtd -e mtd4 write openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma mtd4
Unlocking mtd4 ...
Erasing mtd4 ...
Writing from openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma to mtd4 ...  [w]
root@OpenWrt:~#reboot

root@OpenWrt:~# wget http://coppercore.net/~kevin/fon/out.hex
Connecting to coppercore.net[64.27.5.164]:80
out.hex              100% |*****************************|  4096       00:00 ETA
root@OpenWrt:~# mtd -e "RedBoot config" write out.hex "RedBoot config"
Unlocking RedBoot config ...
Erasing RedBoot config ...
Writing from out.hex to RedBoot config ...  [w]
root@OpenWrt:~#reboot

Flashing con Kamikaze

RedBoot> fis list
Name              FLASH addr  Mem addr    Length      Entry point
RedBoot> ip_addr -h 192.168.1.166 -l 192.168.1.254/24
IP: 192.168.1.254/255.255.255.0, Gateway: 0.0.0.0
Default server: 192.168.1.166
RedBoot> fis init
About to initialize [format] FLASH image system - continue (y/n)? y
*** Initialize FLASH Image System
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
RedBoot> load -r -v -b 0x80040450 openwrt-atheros-2.6-root.jffs2-64k
Using default protocol (TFTP)
-
Raw file loaded 0x80040450-0x802c044f, assumed entry at 0x80040450
RedBoot> fis create -r 0x80040450 -f 0xA8030000 -l 0x00700000 -e 0x00000000 rootfs
RedBoot> fis create -b 0x80040450 -f 0xA8030000 -l 0x00700000 -e 0x00000000 rootfs
... Erase from 0xa8030000-0xa8730000: ..................................................................................
..............................
... Program from 0x80040450-0x80740450 at 0xa8030000: ..................................................................
..............................................
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
RedBoot> load -r -b %{FREEMEMLO} openwrt-atheros-2.6-vmlinux.lzma
Using default protocol (TFTP)
Raw file loaded 0x80040800-0x800f07ff, assumed entry at 0x80040800
RedBoot> fis create -r 0x80041000 -e 0x80041000 vmlinux.bin.l7
... Erase from 0xa8730000-0xa87e0000: ...........
... Program from 0x80040800-0x800f0800 at 0xa8730000: ...........
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
RedBoot> fis load -l vmlinux.bin.l7
Image loaded from 0x80041000-0x80283084
RedBoot> exec

Login e prime configurazioni

login as: root
password:

BusyBox v1.3.1 (2007-01-22 07:45:03 CET) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 KAMIKAZE (bleeding edge, r6193) -------------------
  * 10 oz Vodka       Shake well with ice and strain
  * 10 oz Triple sec  mixture into 10 shot glasses.
  * 10 oz lime juice  Salute!
 ---------------------------------------------------
root@OpenWrt:~#

Fonti

Ringraziamenti

Si ringra immensamente:

  • la comunità [http://www.ninux.org ninux.org] (di cui faccio parte) che ospita questo tutorial, per avermi fatto venire una voglia matta di smanettare sugli apparati wireless

  • Raffaele (aka Thomas Anderson), Oscar e Saverio (aka ZioPRoTo) per i suggerimenti in m-list e le pagine di trucchi e consigli su La Fonera scritte su questo wiki
  • Paolo Gatti (aka OnE) per i metodi di downgrade
  • Stefan Tomanek e Michael Kebe per il primo hack
  • BingoBommel per il secondo hack

  • Mart per il terzo hack


(BlaXwan) to be continued...