2009年8月28日 星期五

Hacking D-Link AP


由於D-Link產品乃修改自Linux,基本上就是個Embedded Linux System,在Windows下開發應該是不可能的,因此開發環境選用Linux,建議要有一定的Linux使用及操作經驗,才不會在開發過程中花很多的時間在環境配置或找指令,更甚者,花了很多時間卻不知自己身在幹麻。

沒有Linux使用經驗的朋友,建議使用虛擬機器軟體建立Linux環境先熟悉一下Linux環境及玩法,以利開發及使用,使用虛擬機器好處是不需要解決Linux + Windows的雙系統安裝問題,以及可能因安裝失敗以致毀掉重要資料帶來的身心傷害

常見的虛擬機器軟體有:VirtualboxVMWareMicrosoft Virtual PC … 等,推薦使用Virtualbox,優點除了是自由軟體外,還很好吃呢,安裝方便、輕巧且耗費的資源少、模擬環境的效能還不錯。

建議初學者先看看鳥哥的Linux私房菜這個網站,資料很多很豐富,可建立許多基本概念,另外,也建議先學會操作vimshell commandvim是一套Linux上文字介面的text editor,有著強大的功能(請見參考文件),各大發行版(distribution)都有它的蹤跡,學會了到處都可以用,若不習慣沒滑鼠及GUI的日子,還有圖形化版本可選用(Gvim)shell command是操作Linux的基本功,使用Linux卻不會shell command會帶來很多的不便,而且無法進行開發工作這對身為專業的資訊人員來說是不允許滴

Last but not leastLinuxWindows有著截然不同的設計哲學及系統架構,they are differentLinux並非Windows的低價取代品,因此許多方面的比較是毫無意義的,Linux不會比Windows難用,只是你跟它不熟罷了,所以請當做自己在學習一個新東西(事實上確實是如此),就如同當年你與Windows 95初次見面一般。

說明文件中的開發環境
OSUbuntu 9.04
gccgcc 4.1
EditorVIM

References
Linux learning: 鳥哥的Linux 私房菜
Embedded linux: Free Electrons
C programming under linux: die.net,


開發環境設定
ubuntu上開發請先安裝下列軟體,若在其它distribution開發也可以檢查這些套件是否已經安裝在系統中了。
Packagebisonflexbuild-essentialpatchlibncurses5-devzlib1-devlibssl-devgcc-4.1

D-Link產品的source code可在http://tsd.dlink.com.tw/下載。

修改以下兩個設定
*Relink /bin/sh -> /bin/bash (/bin/dash originally, that cause error)
$ sudo rm /bin/sh
$ sudo ln -s /bin/bash /bin/sh

*Relink /usr/bin/gcc -> /usr/bin/gcc-4.1 (/usr/bin/gcc-4.3 originally, that cause error)
Ubuntu 9.04gcc版本為4.3,在compile過程中會很盡責的回報一堆bug,有些bug根本就不知從何著手XD,後來換成gcc 4.1才順利compile完成,推測D-Link可能原就是使用gcc 4.1compile
安裝gcc 4.1(無需移除gcc 4.3)
$ sudo apt-get install gcc-4.1

將系統中的gcc指令改為指向gcc 4.1
$ sudo rm /usr/bin/gcc
$ sudo ln -s /usr/bin/gcc-4.1 /usr/bin/gcc


Source Code Compilation
以下的tarball本文測試時使用的版本,請勿直接套用名稱,會無法使用。另外,儘量不使用root權限,以免發生莫名其妙的error,除非因權限不足造成問題
*Extract source code tarball and enter the directory.
$ bzip -d DAP1353_v200_r0013_2007-09-26.tar.bz2
$ tar -zvf DAP1353_v200_r0013_2007-09-26.tar
$ cd DAP1353

*Execute the "build_tool_chain.sh",請先看readme,有些選項要手動設定
$ sh build_tool_chain.sh

If permission error occurred, run this script as root
重要:重run前先刪除當前目錄下buildroot目錄,不然作到死都不會成功的XD,因為script會先判斷這個目錄是否存在
$ rm -rv buildroot
$ sudo sh build_tool_chain.sh

*Compile source code
第一次compile分別執行3make,若在前一步驟使用root權限,在此亦使用root權限。Compile成功後會產生image檔,放在當前目錄的images目錄下。

*使用image
唯一的方法就是使用網頁介面(192.168.0.1;帳號:admin、密碼:無)中上傳功能(維護 => 韌體更新),選取正確的image並上傳。

沒有留言: