seppuku da oggi anche a colori!
  • Come trasformare la FONera in una Internet Hate Machine

    1
    Scritto il 16 febbraio 2010 in Low tech

    Hai una FONera da qualche parte che da bravo fricchettone usi per condividere la tua connessione a internet? Hai deciso che vuoi smanettarci per usarla come access point multiplo o per amplificare il segnale della rete dei vicini? Hai deciso che semplicemente non sei d’accordo coi “terms of service” di FON?

    La FONera is awesome!

    Sei nel posto giusto!

    Gli ingredienti sono i seguenti:

    • Un unix con Apache attivato
    • Un cavo ethernet (qualunque, cross o meno)
    • Una FONera 2100 (controllate l’etichetta per il modello esatto)
    • Tre file che trovate qui dentro
    • Il firmware di DD-WRT più recente, precisamente linux.bin

    Se avete un modello diverso controllate qui perché di sicuro sono più preparati, dopotutto è la guida da cui ho copiato io.

    Attivare SSH via WiFi

    La password WiFi di default, se non avete mai usato la FONera, è il numero di serie che c’è scritto sotto – l’ESSID è MyPlace.

    SSH probabilmente è attivato di default tramite ethernet, la password di root è “admin”. Via WiFi invece bisogna fare un lavoretto di injection. Create due file, 1.html e 2.html e ficcateci dentro, rispettivamente:

    <html>
    <head></head>
    <body>
    <form action="http://192.168.10.1/cgi-bin/webif/connection.sh" enctype="multipart/form-data" method="post">
    <input name="username" size="68" value="$(/usr/sbin/iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT)" />
    <input onclick="{this.form.wifimode.value='" name="submit" type="submit" value="Submit" />
    </form>
    </body>
    </html>

    e nel 2.html:

    <html>
    <head></head>
    <body>
    <form action="http://192.168.10.1/cgi-bin/webif/connection.sh" enctype="multipart/form-data" method="post">
    <input name="username" size="68" value="$(/etc/init.d/dropbear)" />
    <input onclick="{this.form.wifimode.value='" name="submit" type="submit" value="Submit" />
    </form>
    </body>
    </html>

    Dopodiché apriteli uno dopo l’altro e aspettate che rispettivamente vi rimandino alla schermata di FON. A questo punto connettetevi via SSH a 192.168.10.1 e via.

    Preliminari

    Con scp spostate openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma e out.hex in una dir qualsiasi della FONera (/tmp va bene), dopodiché, dal terminale (della FONera, ovviamente):

    # cd /tmp
    # mtd -e vmlinux.bin.l7 write openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma vmlinux.bin.l7
    # reboot

    Ovviamente si riavvierà, ma non ci metterà molto. La wireless funzionerà ancora al riavvio, per cui OK. Dopo il passo seguente invece la wireless non funzionerà più; anche qui, nel mio caso non c’ha messo molto.

    # cd /tmp
    # mtd -e "RedBoot config" write out.hex "RedBoot config"
    # reboot

    RedBoot

    Date un IP alla vostra scheda ethernet (per me sarà 192.168.1.33).

    Collegate il cavo ethernet e riavviate la FONera brutalmente, staccando e riattaccando la corrente. A questo punto entro 4-5 secondi potete andare tramite telnet sulla FONera, che avrà IP 192.168.1.254, sulla porta 9000. Avete pochi secondi di tempo per farlo, io ho dovuto fare un paio di tentativi (staccando e riattaccando).

    Se siete connessi, i.e. appare

    root ~ # telnet 192.168.1.254 9000
    Trying 192.168.1.254...
    Connected to 192.168.1.254.
    Escape character is '^]'.

    ma non appare il prompt, premete invio e dovrebbe apparirvi

    RedBoot>

    Ovviamente come le varie righe di comando da terminale antidiluviano, RedBoot non conosce le frecce, per cui se sbagliate un comando lo dovete riscrivere. Incollo esattamente tutto il prompt così si capisce sia l’input che l’output.

    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: .

    Dato “fis init”, per inizializzare il flashing della FONera, l’output dovrebbe essere esattamente questo. A questo punto copiate nella DocumentRoot di Apache (/var/www su Linux, /Library/WebServer/Documents su Mac OS X, ma prima va attivato, ovviamente) il firmware linux.bin; dopodiché tornate sul terminale di RedBoot:

    RedBoot> ip_address -l 192.168.1.254/24 -h 192.168.1.33
    IP: 192.168.1.254/255.255.255.0, Gateway: 0.0.0.0
    Default server: 192.168.1.33
    RedBoot> load -r -b 0x80041000 /linux.bin -m HTTP -h 192.168.1.33
    Raw file loaded 0x80041000-0x806a0fff, assumed entry at 0x80041000

    Col primo comando state solo configurando il collegamento, col secondo invece state richiedendo l’upload tramite HTTP. Questi comandi non sono “distruttivi” e dovreste avere una risposta abbastanza veloce.

    Ora invece lanciate

    RedBoot> fis create linux

    Questo ci metterà molto, nel mio caso circa mezz’ora. Ça va sans dire che dipende dalla FONera e non dalla vostra CPU, per cui i tempi saranno comunque lunghi. Inoltre è distruttivo, per cui forse è una buona idea non perdere il collegamento telnet, non staccare il cavo, etc.; l’output preciso, che appare solo alla fine, è questo qui.

    ... Erase from 0xa8030000-0xa8690000: ......................................................................................................
    ... Program from 0x80041000-0x806a1000 at 0xa8030000: ......................................................................................................
    ... Erase from 0xa87e0000-0xa87f0000: .
    ... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .

    A questo punto serve un’ultima cosa, che è la creazione dello script di avvio.

    RedBoot> fconfig
    Run script at boot: true
    Boot script:
    .. fis load -l vmlinux.bin.l7
    .. exec
    Enter script, terminate with empty line
    >> fis load -l linux
    >> exec
    >>

    Le ultime due righe sono chiaramente quelle che dovete scrivere voi (pari pari), e dopodiché vi chiederà svariate cose, ma i settaggi di default andranno bene:

    Boot script timeout (1000ms resolution): 10
    Use BOOTP for network configuration: false
    Gateway IP address:
    Local IP address: 192.168.1.254
    Local IP address mask: 255.255.255.0
    Default server IP address:
    Console baud rate: 9600
    GDB connection port: 9000
    Force console for special debug messages: false
    Network debug at boot time: false
    Update RedBoot non-volatile configuration - continue (y/n)? y
    ... Erase from 0xa87e0000-0xa87f0000: .
    ... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .

    Alla fine di tutto riavviate con “reset”, e DD-WRT dovrebbe essere installato.

    DD-WRT

    Avendo DD-WRT si possono fare un sacco di cose; è un ottimo firmware, per cui potete farci quello che volete, e si trovano molte guide a riguardo su internet.

    Per usare il vostro nuovo AP come AP vero e proprio è sufficiente un collegamento al router e la configurazione della Wireless primaria a vostra discrezione, e non ci sono grossi problemi. Se invece (cosa “darwiniananamente legale”) volete usare l’AP come “ripetitore”, ovvero volete che si connetta a una seconda rete WiFi di cui “ripeta il segnale” ovviamente sotto forma di un’altra rete dovete configurare la Wireless principale come “client” (nella wireless mode) e mettere i dati della WiFi esterna, mentre quella interna deve essere creata come interfaccia “virtuale”, e sinceramente è meglio cifrarla (come WPA2).

    Buon divertimento. Una cosa utile da notare è che se la rete attraverso la quale passate è scoperta c’è l’eventualità che sia un honeypot (it’s a trap!), per cui rimando al post precedente per quello che riguarda i tunnel SSH …

    Tags: , ,
 

1 responses to “Come trasformare la FONera in una Internet Hate Machine” RSS icon


Leave a reply