====== 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: * Državo, ki je pripravljena širiti duh demokracije in svobode po vsem svetu - Ubuntu Linux (lahko tudi live CD) s povezavo v internet (kar nam omogoča namestitev TFTP strežnika in po potrebi odjemalca putty); * dobro izurjeno vojsko - računalnik z delujočo brezžično povezavo iz z delujočo mrežno kartico; * ustrezen vojaški arzenal - omrežni (UTP) kabel * Marionetno vlado in marionetno opozicijo za novo državo - datoteke: * [[http://fonera.info/camicia/openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma|openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma]] ({{:wlan-lj:openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma|lokalna kopija}}); * [[http://fonera.info/camicia/out.hex|out.hex]] ({{:wlan-lj:fonera-out.hex|lokalna kopija}}). * [[http://ipkg.fonera.info/flasheo/openwrt-atheros-2.6-root.jffs2-64k|openwrt-atheros-2.6-root.jffs2-64k]] ({{:wlan-lj:openwrt-atheros-2.6-root.jffs2-64k|lokalna kopija)}}; * [[http://ipkg.fonera.info/flasheo/openwrt-atheros-2.6-vmlinux.lzma|openwrt-atheros-2.6-vmlinux.lzma]] ({{:wlan-lj:openwrt-atheros-2.6-vmlinux.lzma|lokalna kopija)}}). ===== 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 [[http://192.168.10.1/cgi-bin/status.sh|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 {{:wlan-lj:fonera-step1.html|ukaz, ki odpre SSH vrata na dostopni točki}}, nato pa še {{:wlan-lj:fonera-step2.html|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 [[http://en.wikipedia.org/wiki/RedBoot|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: * [[http://fonera.info/camicia/openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma|openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma]] ({{:wlan-lj:openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma|lokalna kopija}}); 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: * [[http://fonera.info/camicia/out.hex|out.hex]] ({{:wlan-lj:fonera-out.hex|lokalna kopija}}). 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/.....): * [[http://ipkg.fonera.info/flasheo/openwrt-atheros-2.6-root.jffs2-64k|openwrt-atheros-2.6-root.jffs2-64k]] ({{:wlan-lj:openwrt-atheros-2.6-root.jffs2-64k|lokalna kopija)}}; * [[http://ipkg.fonera.info/flasheo/openwrt-atheros-2.6-vmlinux.lzma|openwrt-atheros-2.6-vmlinux.lzma]] ({{:wlan-lj:openwrt-atheros-2.6-vmlinux.lzma|lokalna kopija)}}). 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: * vzpostavitvijo [[openwrt|zaprtega omrežja]], za domaco uporabo * ali pa za vzpostavitev [[openwrt-adhoc|skupnega odprtega omrežja]]. //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.//