본문 바로가기

재미삼아

Fon 공유기 핵펌 라포네라 (LaFonera) 해킹 펌웨어

FON La Fonera (DD-WRT 펌웨어 설치하기)

 오늘, 유선 인터넷 속도와 무선 인터넷 속도 차이가 너무 많이 나는 것 같아서, 정펌(FON)을 버리고, 핵펌(DD-WRT)로 펌웨어를 변경하기로 하였습니다. 현재도, 핵펌(DD-WRT)가 되어 있는 La Fonera 공유기를 사용중인데, 저 이외에 분들에게 도움을 주기 위해서 핵펌에 관한 글을 가지고 왔습니다.
 이곳 포스트에 사용된 자료는 'Tsuki@Blog(http://blog.bytsuki.net)에서 가지고 왔으며, 게시물의 내용은 조금 더 보기쉽도록 수정을 하였습니다.

 La Fonera에, 핵펌(DD-WRT)를 설치하는 방법에 대해서 알아보도록 하겠습니다.
 이 강좌는 'Tsuki@Blog'에서 게시물을 그대로 가지고 와서 내용을 약간 수정하였습니다.

#1. 주의사항
1. 이 강좌에서는 La Fonera공유기에 핵펌(DD-WRT) 설치하는 내용을 담고 있습니다.
 이 강좌로 인해서 La Fonera 공유기가 고장이 나는 경우에는 강좌를 진행하는 분에게 있습니다.
2. "#3. 라 포네라 SSH 해킹하기"를 제외하고는 유선으로 연결된 상태에서 진행하여야 합니다.
3. 이 강좌는 DD DD-WRT 포럼의 내용을 기반으로 하였으며, 기술은 외국 해커분들께서 개발하신 것임을 말씀드립니다. (저는 Tuski@Blog에 작성된 글을 일부 수정하여서 새로 게시하였습니다.)
4. 이 포스트에 있는 이미지는  
http://uselesshacks.com 에 있는 이미지임을 밝힙니다.
 일부 이미지는 최근 출시된 프로그램에 맞도록 변경을 하였습니다.^^
5. "La Fonera Promise" 프로모션을 통하여 La Fonera를 배송비만 내고 받으신 분들께 알립니다. 공유기 수령후 1년간은 반드시 FON_AP 타입의 SSID로 인터넷을 공유하셔야 합니다. 핵펌만 설치하면 FON 측에서 핵펌을 설치한 La Fonera를 감지하지 못합니다.(해결방법을 곧 올릴 예정입니다.)

#2. 준비물
1. La Fonera
2. 랜 케이블 (크로스 케이블을 권장하지만, 없다면 일반 랜선을 사용해도 됩니다.)
3. Putty (SSH/Telnet 클라이언트)
4. HTTP File Server (HFS)
5. Tftpd32
6. DD-WRT for La Fonera Firmware (아래의 root.fs와 vmlinux.bin.l7은 필수파일입니다.)
 (1) rokot.fs
 (2) vmlinux.bin.l7
7. openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma
8. out.hex


#3. 라 포네라 SSH 해킹하기
 지금 실행하려는 방법은 "Kolofonium Hack" 이라고 해서 외국의 한 해커분께서 직접 해킹하신 방법입니다.
 원래대로 하려면 우리도 위의 사이트에 있는 것과 같은, 복잡한 과정을 거쳐야 하지만, 외국 해커분께서 DNS서버를 만들어서, DNS만 입력하면 되도록 만들어주셨습니다. 감사합니다!^^

1. 
http://192.168.10.1 (기본값)을 통하여 La Fonera 관리 페이지에 접속합니다.
2. 접속한 뒤, Status(상태)에 있는 IP, 서브넷 마스크, 게이트웨이를 메모지에 기록합니다.
3. Advanced(설정) -> Internet Connection(인터넷 설정)에서 "Static IP"로 변경합니다.
  IP, 서브넷 마스크, 게이트웨이 부분에 메모지에 적었던 내용을 그대로 입력합니다.
4. 마지막 DNS 부분은 88.198.165.155로 채워주십시오.
5. 채우신뒤 Submit(보내기)를 눌러주세요.
6. 그 다음, FON La Fonera를 재시작시켜주세요.
7. FON La Fonera가 재시작되었다면, Putty를 통해서 192.168.10.1에 22번 포트로 접속하여 아이디를 입력할 수 있는 부분이 나오는지 확인해주세요. (만약에 아이디 입력하는 부분이 나오지 않았다면, 공유기를 초기상태로 리셋해야 합니다.)

+ 공유기 초기상태 리셋방법
리셋방법은 La Fonera의 아래 부분을 보시면, Reset버튼이 있습니다. 이 버튼을 1분~2분 정도 찔러주시면 공유기가 초기화 됩니다. 그후에 전원 케이블을 뽑으셨다가 다시 연결하시면 공유기가 초기화 되는 것을 확인할 수 있습니다.)(필자의 경우 0.7.2 r2에서 0.7.1 r1으로 다운그레이드 되었습니다.)

#4. La Fonera와 유선 연결하기 
 이 부분부터는 '유선'상태로 작업을 진행하셔야만 합니다.

1. 이제 La Fonera에 연결된 인터넷 라인을 뽑고, 컴퓨터와 폰을 유선으로 연결해주세요.
  (크로스 케이블을 권장하지만, 없다면 일반 랜선을 사용해도 됩니다.)
 
2. 연결 하셨으면, 유선연결의 IP 주소, 서브넷 마스크, 게이트웨이, DNS를 아래와 같이 변경해주세요.
사용자 삽입 이미지

3. 위와 같이 변경한 후, La Fonera 공유기 앞의 LED부분에 3개불이 모두 들어왔을 때,  http://169.254.255.1 으로 접속하여 아래 캡쳐 사진과 같은 FON 관리자 페이지가 나타나는지 확인해주세요.
사용자 삽입 이미지

4. 위에서 다운로드 받은, 'HTTP File Server(HFS)'를 실행한 후, "openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma"와 "out.hex"를 루트에 추가시켜 줍니다. (2.2a버젼부터는 프로그램 실행하면 자동으로 공유 기능이 ON됩니다.)
사용자 삽입 이미지

5. 이제 Putty를 켜서 169.254.255.1에 접속합니다.(SSH 모드로 하십시오.)
아래와 같은 경고 메시지가 뜰 경우, Yes를 눌러 넘어갑니다. 
사용자 삽입 이미지

6. 위에서 Yes버튼을 누르고 나면 검은 창이 하나 뜰겁니다.
username : root / password : admin을 입력합니다.
(비밀번호 입력시 화면에는 아무것도 출력되지 않지만, 실제로는 입력이 되고 있는 것이니 당황하지 마시기 바랍니다.)

7. 로그인을 하셨으면, 아래의 명령어를 SSH에 입력해주세요.
  가급적이면 복사하신 뒤, SSH 명령어 입력부분에서 오른쪽 버튼을 클릭하시는 것을 권해드립니다.
mv /etc/init.d/dropbear /etc/init.d/S50dropbear
  
8. 위의 명령을 실행한 뒤 reboot 명령을 입력하여 La Fonera를 재시작 합니다.
  (재시작 후에, 명령프롬포트를 실행한 후, ping 192.168.10.1 을 입력하여 작동확인을 합니다.)
reboot

9. (5번~6번까지 다시)작동확인을 하였다면, 위에서 설치한 Putty에서 SSH로 선택후, 다시 La Fonera에 접속하세요.

10. 다음 명령을 실행하십시오. (한줄의 라인은 하나씩 실행해주세요.)
cd /tmp
wget http://169.254.255.2/openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma
mtd -e vmlinux.bin.l7 write openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma vmlinux.bin.l7
reboot
사용자 삽입 이미지

11. La Fonera가 재부팅되었는지 확인하신 후, 다음 명령어를 실행해주세요.
  (재시작 후에, 명령프롬포트를 실행한 후, ping 192.168.10.1 을 입력하여 작동확인을 합니다.)
  다음 명령을 실행하십시오. (한줄의 라인은 하나씩 실행해주세요.)
cd /tmp
wget http://169.254.255.2/out.hex
mtd -e "RedBoot config" write out.hex "RedBoot config"
reboot
사용자 삽입 이미지

#5. DD-WRT 펌웨어 설치 
1. 유선 IP를 다음 그림과 같이 재설정 합니다.
사용자 삽입 이미지

2. Tftpd32.exe가 있는 폴더에 "vmlinux.bin.l7"와 "root.fs"를 복사해 둡니다.
사용자 삽입 이미지

3. 그 다음 Tftpd32를 실행합니다.
사용자 삽입 이미지

4. 이제부터는 Putty를 SSH가 아닌 Telnet 클라이언트로 사용할 것입니다.
  다음 그림처럼 설정한 후 접속해주세요. (포트번호는 9000으로 꼭 바꿔주세요.)
사용자 삽입 이미지

5. 텔넷으로 연결이 완료 되었다면, 아래의 명령어를 텔넷 명령 프롬포트에 입력해주세요.
  다음 명령을 실행하십시오. (한줄의 라인은 하나씩 실행해주세요.)
ip_address -l 192.168.1.254/24 -h 192.168.1.166
fis init


6. About to initialize [format] FLASH image system - continue (y/n)?에 y를 입력합니다.
  만약, 이 과정에서 n을 누르면 더이상 핵펌(DD-WRT) 작업을 진행하지 않습니다.
y를 입력합니다.


7. y를 누른 후, 아래의 명령어를 실행합니다.
load -r -v -b 0x80041000 root.fs
사용자 삽입 이미지

7. 하단 이미지에서 아래의 명령어를 그대로 입력하시고 3-4분정도 기다리시면 됩니다.
  
(아래의 화면에서 아무 반응이 없다고해서 엔터키를 연타한다거나 하는 행동은 하지마세요!!!)
fis create -b 0x80041000 -f 0xA8030000 -l 0x002C0000 -e 0x00000000 rootfs
사용자 삽입 이미지

8. 위의 작업이 성공하면 그 아래 부분에 RedBoot> 가 나옵니다. 이 부분에 입력하시면 됩니다.
  하단 이미지에서 아래의 명령어를 그대로 입력하시고 각 3-4분정도 기다리시면 됩니다.
  다음 명령을 실행하십시오. (한줄의 라인은 하나씩 실행해주세요.)
  (아래의 화면에서 아무 반응이 없다고해서 엔터키를 연타한다거나 하는 행동은 하지마세요!!!)
load -r -v -b 0x80041000 vmlinux.bin.l7
fis create -r 0x80041000 -e 0x80041000 -l 0x000E0000 vmlinux.bin.l7
fis create -f 0xA83D0000 -l 0x00010000 -n nvram
reset

9. La Fonera가 재부팅 되면 무선 AP부분에 불이 들어오고, 컴퓨터에서 DD-WRT로 바뀐 공유기가 나올 것 입니다. 이제, DD-WRT로 모든 것이 변경되었습니다.

10. DD-WRT 관리페이지 접속주소는 192.168.1.1 입니다.



Fonera 0.7.2 r3 Hacked !!!!

This could be it people. I get people from all over coming to read my blog because of the former post and tutorial I did on hacking the La fonera, but a lot of people have come here in hopes of a new hack. Some have come looking for a R3 hack. It appears this wait is over.

* First this is not my hack or tutorial so I have no way to verify this info is 100% working. I would be willing to try this on someone elses router should someone sent it to me.

In the newest firmware FON had blocked the “internal” DNS that is used for downloading updates. This rendered the modification of the DNS useless or so they thought!

In order to preform the new hack you must have the following:

  • You must have a Router
  • You must be able to set the Routers IP to :213.134.45.129
  • You must be able to set the Routers DNS to: 88.198.165.155

First make sure your router is not plugged into the internet. Next connect to the La Fonera (default MyPlace) and access http://192.168.10.1 /. Once logged in go to Advanced Options / Connect and insert 213.134.45.200 as IP, 255.255.255.0 as the subnet, 213.134.45.129 as the Gateway and DNS. Then save the La fonera and restart. It should revert the firmware back to 0.7.1 r1. *note some people said you may have to reboot the La Fonera a few times in order for this to work.

Now save the below cost as a HTML doc.

< HTML >
< head></head><body><center >
< form method=”post” action=”http://192.168.10.1/cgi-bin/webif/connection.sh” enctype=”multipart/form-data” >
< input name=”username” value=”$(/usr/sbin/iptables – INPUT 1 – p tcp –dport 22 – j ACCEPT && /etc/init.d/dropbear)” / >
< input type=”submit” name=”submit” value=”Submit” / >
</form >
</center></body></html >

Once you have executed this command you can loggin via SSH and follow the other tutorials on hacking the firmware.

Quick setup would be:

1. Set the non-fon router IP to 213.134.45.129
2. Set both primary and alternate DNS on non-fon router to 88.198.165.155
3. Plug Fon router into the non-fon router
4. Connect via the private wireless (MyPlace) to the Fon router
5. Navigate to 192.168.10.1
6. Click on Advanced Options / Connect. Select static IP and enter 213.134.45.200 as IP, as a mask 255.255.255.0, and 213.134.45.129 both as a gateway and as DNS.
7. Then push the reset button on the router or unplug the router and replug it in
8. Wait for the router to reboot(at least 3 minutes) and then wait another 5(Just in case)
9. Try to SSH into 192.168.10.1 via the wireless
10. If that does not work, do 7 to 9 over again

After I SSH’d into the router I disconnected the fon router from the non fon router and flashed the firmware.


FON에서 공짜로 새로 보내준 공유기.

처음 배송되었을 때는 펌웨어 버전이 0.7.0-x 였는데
켜두었더니 자동으로 업데이트되어 0.7.1-3 으로 바뀌었다.

원래 ssh 접근이 막힌 상태인데 Hacking the La Fonera
참조하여 dropbear ssh server를 살려놓았다.
(공유기 DNS를 88.198.165.155 188.40.206.43으로 설정하고 재부팅하면 저절로 됨)

하드웨어는 아마 AR5005AP-G(AR2315) 기반인 것으로 보이며, 
만약 그렇다면 Super G 108Mbps는 지원하지 않는다.
AR5006AP-GS(AR2316) 이어야 Super G 지원.

System type : Atheros AR531X_COBRA
CHIPSET: Atheros AR5006-G (AR2315) ??
CPU: Atheros MIPS 4KEc V6.4 183MHz (Big Endian)
RAM: 16MB
Flash: 8MB
Boot Loader: RedBoot


SSH 접속 화면

login as: root
root@192.168.20.1's password:


BusyBox v1.1.3 (2006.09.11-19:54+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
 _______  _______  _______
|   ____||       ||   _   |
|   ____||   -   ||  | |  |
|   |    |_______||__| |__|
|___|
 Fonera Firmware (Version 0.7.1 rev 3) -------------
  *
  * Based on OpenWrt - http://openwrt.org
  * Powered by FON - http://www.fon.com
 ---------------------------------------------------



cat /proc/cpuinfo

root@OpenWrt:~# cat /proc/cpuinfo
system type             : Atheros AR531X_COBRA
processor               : 0
cpu model               : MIPS 4KEc V6.4
BogoMIPS                : 183.50
wait instruction        : yes
microsecond timers      : yes
tlb_entries             : 16
extra interrupt vector  : yes
hardware watchpoint     : no
VCED exceptions         : not available
VCEI exceptions         : not available



uname -a

root@OpenWrt:~# uname -a
Linux OpenWrt 2.4.32 #10 Tue Sep 12 17:41:46 UTC 2006 mips unknown



lsmod

root@OpenWrt:~# lsmod
Module                  Size  Used by    Tainted: P
sch_red                 3120   2
sch_sfq                 3912   6
sch_hfsc               15816   2
cls_fw                  2888   8
imq                     2352   1
ipt_REDIRECT             640   0
ipt_IMQ                  672   1
ipt_length               320   5
ipt_layer7             10720   0 (unused)
ipt_ipp2p               7144   1
ipt_CONNMARK             816   2
tun                     4344   6
ath_ahb                91820   1
ath_rate_sample         9096   0 [ath_ahb]
wlan_xauth               332   0 (unused)
wlan_wep                4332   4
wlan_tkip              11036   0 (unused)
wlan_ccmp               6204   0 (unused)
wlan_acl                2524   0 (unused)
ath_hal               176896   1 [ath_ahb ath_rate_sample]
wlan_scan_sta          10476   0 (unused)
wlan_scan_ap            2940   1
wlan                  178512   1 [ath_ahb ath_rate_sample wlan_xauth wlan_wep wlan_tkip wlan_ccmp wlan_acl wlan_scan_sta wlan_scan_ap]
ar531x-wdt              1712   1
mini_fo                54176   1



dmesg

root@OpenWrt:~# dmesg
CPU revision is: 00019064
Primary instruction cache 16kB, physically tagged, 4-way, linesize 16 bytes.
Primary data cache 16kB, 4-way, linesize 16 bytes.
Linux version 2.4.32 (iurgi@ropero) (gcc version 3.4.6 (OpenWrt-2.0)) #10 Tue Sep 12 17:41:46 UTC 2006
Determined physical RAM map:
 memory: 01000000 @ 00000000 (usable)
On node 0 totalpages: 4096
zone(0): 4096 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Kernel command line: console=ttyS0,9600 rootfstype=squashfs,jffs2
Using 92.000 MHz high precision timer.
Calibrating delay loop... 183.50 BogoMIPS
Memory: 14188k/16384k available (1327k kernel code, 2196k reserved, 92k data, 68k init, 0k highmem)
Dentry cache hash table entries: 2048 (order: 2, 16384 bytes)
Inode cache hash table entries: 1024 (order: 1, 8192 bytes)
Mount cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 4096 (order: 2, 16384 bytes)
Checking for 'wait' instruction...  available.
POSIX conformance testing by UNIFIX
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
Starting kswapd
devfs: v1.12c (20020818) Richard Gooch (rgooch@atnf.csiro.au)
devfs: boot_options: 0x1
JFFS2 version 2.1. (C) 2001 Red Hat, Inc., designed by Axis Communications AB.
squashfs: version 3.0 (2006/03/15) Phillip Lougher
pty: 256 Unix98 ptys configured
Serial driver version 5.05c (2001-07-08) with no serial options enabled
ttyS00 at 0xb1100003 (irq = 37) is a 16550A
eth0: Dropping NETIF_F_SG since no checksum feature.
eth0: Atheros AR2313: 00:18:84:1c:f1:dc, irq 4
MTD driver for SPI flash.
spiflash: Probing for Serial flash ...
spiflash: Found SPI serial Flash.
8388608: size
Creating 8 MTD partitions on "spiflash":
0x00000000-0x00030000 : "RedBoot"
0x00030000-0x00720000 : "rootfs"
eth0: Configuring MAC for full duplex
0x001b0000-0x00720000 : "rootfs1"
0x00720000-0x00730000 : "config"
0x00730000-0x007e0000 : "vmlinux.bin.l7"
0x007e0000-0x007ef000 : "FIS directory"
mtd: partition "FIS directory" doesn't end on an erase block -- force read-only
0x007ef000-0x007f0000 : "RedBoot config"
mtd: partition "RedBoot config" doesn't start on an erase block boundary -- force read-only
0x007f0000-0x00800000 : "board_config"
Initializing Cryptographic API
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 1024 bind 2048)
ip_conntrack version 2.1 (5953 buckets, 5953 max) - 328 bytes per conntrack
ip_tables: (C) 2000-2002 Netfilter core team
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
NET4: Ethernet Bridge 008 for NET4.0
802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com>
All bugs added by David S. Miller <davem@redhat.com>
VFS: Mounted root (squashfs filesystem) readonly.
Mounted devfs on /dev
Freeing unused kernel memory: 68k freed
Algorithmics/MIPS FPU Emulator v1.5
Registering mini_fo version $Id$
mini_fo: using base directory: /
mini_fo: using storage directory: /jffs
jffs2.bbc: SIZE compression mode activated.
wlan: 0.8.4.2 (0.9.0)
ath_hal: 0.9.17.1 (AR5212, AR5312, RF5112, RF2316, RF2317, TX_DESC_SWAP)
wlan: mac acl policy registered
ath_rate_sample: 1.2 (0.9.0)
ath_ahb: 0.9.4.5 (0.9.0)
ath_pci: switching rfkill capability off
wifi0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
wifi0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
wifi0: H/W encryption support: WEP AES AES_CCM TKIP
wifi0: mac 11.0 phy 4.8 radio 7.0
wifi0: Use hw queue 1 for WME_AC_BE traffic
wifi0: Use hw queue 0 for WME_AC_BK traffic
wifi0: Use hw queue 2 for WME_AC_VI traffic
wifi0: Use hw queue 3 for WME_AC_VO traffic
wifi0: Use hw queue 8 for CAB traffic
wifi0: Use hw queue 9 for beacons
wifi0: Atheros 2315 WiSoC: mem=0xb0000000, irq=3
Universal TUN/TAP device driver 1.5 (C)1999-2002 Maxim Krasnyansky
device eth0 entered promiscuous mode
IPP2P v0.8.1_rc1 loading
imq driver loaded.



cat /proc/mtd

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"



(RedBoot) fis list

RedBoot> fis list
Name              FLASH addr  Mem addr    Length      Entry point
RedBoot           0xA8000000  0xA8000000  0x00030000  0x00000000
rootfs            0xA8030000  0xA8030000  0x00700000  0x00000000
vmlinux.bin.l7    0xA8730000  0x80041000  0x000B0000  0x80041000
FIS directory     0xA87E0000  0xA87E0000  0x0000F000  0x00000000
RedBoot config    0xA87EF000  0xA87EF000  0x00001000  0x00000000