參考打開0.7.1r1的SSH,由於 0.7.1.1 (0.7.1r1) 的 Firmware 在 Router 網頁管理界面上有漏洞,因此可以透過 HTML Form 的方式把指令 submit 給 AP 上的 CGI 執行,依序先讓 iptables 允許 port 22 的連線,接著把 SSH (dropbear) deamon 啟動。接著就可以透過 ssh 連接到 FON 然後登入。
但是,我收到的 AP firmware 是 0.7.1.2 (0.7.1r2) 版本,這個漏洞已經被修掉了,所以沒辦法如法炮製。但是看到不少論壇或是 BBS 有很多人說無法由 0.7.1.2 downgrade 到 0.7.1.1,但是我試了卻沒有問題,可以回到 0.7.1.1 的 firmware。首先下載 0.7.1.1 的 firmware,官方網站已經不提供這個版本下載,但是可以透過 google search 找到例如這個網站,裡面有不少版本的 firmwares。下載之後,看要把分享器的 ADSL 關閉,還是 HUB 的 WAN 拔掉,總之讓他無法連到 internet,然後拔掉電源重新啟動 FON AP(註1)。
然後等一段時間讓 FON AP 開機後,透過無線網路連到任何網站。因為沒有 internet 連線,所以 FON 會顯示連線問題的頁面,接著就到 Advanced 的 Firmware Upgrade 去把 0.7.1.1 的韌體更新上去。更新後他會自己重新開機,同時也不要讓他可以連到 internet。同樣一段時間後,也是可以透過無線連接他的 Router 管理界面。接著就是做下面的事情,允許 port 22 的連線,
<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 -I INPUT 1 -p tcp –dport 22 -j ACCEPT)” size=”68″ >
<input type=”submit” name=”submit” value=”Submit” onClick=”{this.form.wifimode.value=’”;’ + this.form.wifimode.value +’;”‘}” />
</form>
</body>
</html>
啟動 SSH daemon (dropbear)
<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=”$(/etc/init.d/dropbear)” size=”68″ >
<input type=”submit” name=”submit” value=”Submit” onClick=”{this.form.wifimode.value=’”;’ + this.form.wifimode.value +’;”‘}” />
</form>
</body>
</html>
分別存成兩個 html 檔案後,以 browser 開啟後按 Submit 送出。完成之後,就可以開啟 Terminal 執行
ssh root@192.168.10.1
接著就會出現登入提示,打入在 Router Web 管理界面設定的密碼後,就可以登入了。
同樣,依照前面提的文章,就可以把預設開啟 port 22 和啟動 SSH daemon (dropbear),以後不管重新啟動都可以使用 SSH 登入 FON。接著把網路接回去或是讓 FON AP 連到 ADSL modem 或是重新設定網路,重新讓 FON AP 啟用 internet connection。
另外,更新 firmware 版本並不會影響這些設定,除非使用 web 界面的 Firmware Upgrade,那就會把整個 flash 內容更新掉,於是這些設定就掰掰了。FON AP 的 crontab 內部會於整點執行 /bin/thinclient。如果需要升級的話,他會透過 ssh 向 FON 核對版本資料,如果需要更新的話,會產生 /tmp/.thinclient,
cd /tmp
wget http://download.fon.com/firmware/update/0.7.1/1/upgrade.fon
/bin/fonverify /etc/public_fon_rsa_key.der /tmp/upgrade.fon
rm -f /tmp/.thinclient.sh
exit
而其中的 upgrade.fon 並不是 1.9MB fonera_0.7.1.2.fon 的 flash image,只有幾百 KB,應該是類似區域更新或是 diff 升級方式的檔案。所以不要透過 web 界面升級韌體,同樣也可以升級到 0.7.1r2,且一樣可以繼續使用 SSH 來進入 CLI 模式。
註1: 因為把 FON AP 的網路線拔掉,之後重新啟動無法啟動他的 WAN 界面,也就無法做以後的更新。