Table of Contents

Osvoboditev Fonere s pomočjo Ubuntu Linuxa

OMG, my Fonera get bricked because I can't setup TFTP server!

Navodila opisujejo flashanje Fonere s pomočjo Ubuntu Linuxa, različica Edgy. Po potrebi lahko uporabimo tudi live CD, vendar pa potrebujemo omrežno povezavo saj je potrebno namestiti TFTP strežnik in morda še putty odjemalca.

Potrebujemo:

Pošiljanje tajnih agentov na sovražni teren - SSH dostop do brezžične dostopne točke

Prvi korak v osvoboditev Fonere je pridobitev SSH dostop do usmerjevalnika.

Najprej pogledamo katera različica firmware je naložena na dostopni točki. To storimo preko spletnega vmesnika s pogledom na statusno stran. Če je različica 0.7.1 r1, smo že na pravi poti, sicer pa je dostopno točko potrebno resetirati z nekajsekundnim pritiskom na gumb na spodnji strani naprave (naprava mora biti med tem vključena). Med tem postopkkom napravo tudi izključimo iz omrežja, saj se v nasprotnem primeru firmware sam obnovi.

Sedaj lahko preko napake v spletnem vmesniku dostopni točki pošiljamo ukaze. Najprej se prijavimo na dostopno točko (z uporabniškim imenom “root” in geslom “admin”), nato pa pošljemo ukaz, ki odpre SSH vrata na dostopni točki, nato pa še ukaz, ki zažene SSH daemon. S tem smo pridobili dostop na sovražnikov ozemlje.

V sovražno državo smo poslali prvo obveščevalno celico in dobro je, da si pustimo odprta vrata tudi za v bodoče. Prijavimo se torej na dostopno točko preko SSH:

ssh -l root 192.168.10.1

Geslo za uporabnika “root” je ponovno “admin”.

Vnesemo ukaz, ki bo ob zagonu dostopne točke pognal tudi SSH daemon:

mv /etc/init.d/dropbear /etc/init.d/S50dropbear

V /etc/firewall.user je potrebno odkomentirati naslednje vrstice (odstranimo znak #), da bodo tudi SSH vrata vedno odprt:

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

Onemogočanje sovražne propagande - zaprtje samodejnih nadgradenj brezžične dostopne točke

V primeru, da bomo dostopno točko sedaj priključili na internet, je dobro, da onemogočimo samodejno nadgrajevanje. V datoteki /bin/thinclient je potrebno zakomentirati zadnjo vrstico in dodati novo. Tako konec datoteke izgleda:

#. /tmp/.thinclient.sh
cp /tmp/.thinclient.sh /tmp/thinclient-$(date '+%Y%m%d-%H%M')

Priprave na vzpostavitev opozicije - namestitev zagonskega nalagalnika

Sedaj sledi naslednja stopnja v boju za svobodo. Najprej se prijavimo na dostopno točko preko ssh povezave:

ssh -l root 192.168.10.1

Vzpostaviti je potrebno opozicijo, ki bo po vojaški intervenciji prevzela oblast. Namestimo torej Red Boot zagonski nalagalnik (ang. boot loader), ki nam kasneje omogoča nalaganje operacijskega sistema v firmware oz. prihod “demokratičnih sil” na oblast. Potrebujemo datoteko:

Datoteko prekopiramo na dostopno točko:

scp openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma root@192.168.10.1:~/openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma

Na dostopni točki poženemo ukaz (ki traja nekaj minut):

mtd -e vmlinux.bin.l7 write openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma vmlinux.bin.l7
reboot 

V naslednjem koraku je potrebno opozicijo “demokratizirati”, se pravi nastaviti zagonski nalagalnik. Potrebujemo datoteko:

Datoteko skopiramo na dostopno točko:

scp out.hex root@192.168.10.1:~/out.hex

In na dostopni točki poženemo ukaz:

mtd -e "RedBoot config" write out.hex "RedBoot config"
reboot

Zunanje priprave na vojaško operacijo - namestitev TFTP strežnika

Najprej namestimo TFTP strežnik:

sudo apt-get install tftp-hpa tftpd-hpa

V datoteki /etc/default/tftpd-hpa nastavimo:

RUN_DAEMON="yes"
OPTIONS="-l -s -c /tftpboot"

Ustvarimo TFTP podimenik, kjer se bodo nahajale datoteke, ki jih potrebujemo za flashanje:

sudo mkdir /tftpboot
sudo chmod 777 /tftpboot

Vanj prekopiramo potrebne datoteke in nastavimo pravice (recimo iz /media/…..):

sudo cp /media/...../openwrt-atheros-2.6-root.jffs2-64k /tftpboot/
sudo cp /media/...../openwrt-atheros-2.6-vmlinux.lzma /tftpboot/
...
sudo chmod 666 /tftpboot/*

Nastavljanje pravic je precej pomembno, saj v nasprotnem primeru prenos preko TFTP ne deluje.

Zaženemo TFTP strežnik:

sudo /etc/init.d/tftpd-hpa start

Na omrežni vmesnik eth0 vklopimo križni UTP kabel in ga povežemo s Fonero ter nastavimo lokalni IP 192.168.1.166:

sudo ifconfig eth0 192.168.1.166 netmask 255.255.255.0 up

Lahko pa Fonero priključimo na omrežno stikalo in si nastavimo dodaten IP na eth0 omrežnem vmesniku:

sudo ifconfig eth0:1 192.168.1.166 up

Izključimo požarni zid:

sudo iptables -I INPUT -p udp --dport tftp -j ACCEPT

Testiramo TFTP strežnik:

tftp 192.168.1.166

Vpišemo:

get openwrt-atheros-2.6-root.jffs2-64k

Če ne javi napake, TFTP strežnik deluje!

Zamenjava režima - flashanje dostopne točke

Sedaj se na Fonero priključimo s pomočjo telneta na IP 192.168.1.254, vrata 9000. Če je na Foneri že naložen sistem (če jo želimo ponovno flashati), je treba po prijavi v RedBoot poslati Ctrl-C. Žal običajni telnet odjemalci tega ne znajo, zato si lahko pomagamo z odjemalcem putty:

sudo apt-get install putty

Poženemo ga iz konzole z ukazom:

putty

V puttyu ne pozabimo izbrati telnet protokola (privzeti protokol je ssh) in nastaviti vrat na 9000! Še opozorilo: pri nalaganju datotek preko TFTP strežnika v puttyu včasih dobimo malce čuden izpis.

Fonero priključimo na električno omrežje in se v prvih 10 sekundah povežemo nanjo:

telnet 192.168.1.254 9000

Povezovanje je morda potrebno večkrat ponoviti, ker se mora Fonera najprej dovolj “zbuditi”. Ko se povežemo na Fonero dobimo naslednji izpis:

Trying 192.168.1.254...
Connected to 192.168.1.254.
Escape character is '^]'.
== Executing boot script in 9.360 seconds - enter ^C to abort
RedBoot> No image 'vmlinux.bin.l7' found
RedBoot> Can't execute Linux - invalid entry address

Vpišemo ukaz:

ip_addr -h 192.168.1.166 -l 192.168.1.254/24

Dobimo izpis:

IP: 192.168.1.254/255.255.255.0, Gateway: 0.0.0.0
Default server: 192.168.1.166

Vpišemo ukaz:

fis init

Dobimo izpis:

About to initialize [format] FLASH image system - continue (y/n)? 

Vpišemo:

y

Dobimo izpis:

 Initialize FLASH Image System
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .

Vpišemo ukaz:

load -r -v -b 0x80040450 openwrt-atheros-2.6-root.jffs2-64k

Dobimo izpis:

Using default protocol (TFTP)
-
Raw file loaded 0x80040450-0x801e044f, assumed entry at 0x80040450

Vpišemo ukaz:

fis create -b 0x80040450 -f 0xA8030000 -l 0x00700000 -e 0x00000000 rootfs

Dobimo izpis:

... Erase from 0xa8030000-0xa8730000:   ...............................................
... Program from 0x80040450-0x80740450 at 0xa8030000:  ................................
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .

Vpišemo ukaz:

load -r -b %{FREEMEMLO} openwrt-atheros-2.6-vmlinux.lzma

Dobimo izpis:

Using default protocol (TFTP)
Raw file loaded 0x80040800-0x800f07ff, assumed entry at 0x80040800

Vpišemo ukaz:

fis create -r 0x80041000 -e 0x80041000 vmlinux.bin.l7

Dobimo izpis:

... Erase from 0xa8730000-0xa87e0000: ...........
... Program from 0x80040800-0x800f0800 at 0xa8730000: ...........
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .

Vpišemo ukaz:

fis load -l vmlinux.bin.l7

Dobimo izpis:

Image loaded from 0x80041000-0x80290086

Vpišemo ukaz:

exec

Vstop na osvobojeno ozemlje - priklop na //flashano// Fonero

Čez nekaj časa, ko se Fonera zbudi, se nanjo lahko telnetamo:

telnet 192.168.1.1 23

Nakar si takoj nastavimo geslo z ukazom:

passwd

Sedaj se lahko na Fonero prijavimo tudi s pomočjo ssh protokola:

ssh -l root 192.168.1.1

… in po vnosu gesla smo že prijavljeni v Fonero:

root@192.168.1.1's password: 


BusyBox v1.4.1 (2007-03-04 21:35:19 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, r6511) -------------------
  * 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:~# 

V tem trenutku lahko na vojaški ladji skličemo tiskovno konferenco in nazdravimo zmagi. Seveda pa nas čaka še nekaj dela.

Končanje vojaške operacije oz. "vzpostavitev demokracije" - čiščenje za seboj

Po končanem postopku si na svojem računalniku nastavimo stari IP naslov oz. ugasnemo eth0:1, nazaj vključimo privzeti požarni zid ter ugasnemo TFTP strežnik.

sudo /etc/init.d/tftpd-hpa stop
sudo apt-get remove --purge tftpd-hpa
sudo rm -r /tftpboot/

sudo ifconfig eth0:1 down
sudo iptables -I INPUT -p udp --dport tftp -j DROP

Fonera je sedaj svobodna!

Razpis prvih "svobodnih volitev" in sprejetje ustave - nastavitev zaprtega ali skupnega odprtega omrežja

Sedaj na dostopni točki teče osnovna OpenWrt Linux distribucija. Ker smo torej Fomero osvobodili in vzpostavili demokracijo se odločimo kakšen bo prihodnji tip vladavine, ljudstvo pa naši odločitvni pritrdi na svobodnih volitvah. Odločimo se lahko med:

Zahvaljujemo se Modremu Vodji za pametne besede in misli, ki nam jih je namenil in s pomočjo katerih lahko duh svobode in resnice širimo po vsem svetu.