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並上傳。

WDK + Microsoft Visual Studio 2008 Howto

安裝

Download Microsoft Visual Studio 2008 Express, and then install Visual C++ 2008 Express.

Dowload DDKBUILD.BAT, DDKBUILD.CMD, installer(ddkwizard) from here.(Manual is recommended)

複製 bbkbuild.bat, ddkbuild.cmd WDK安裝路徑下, ex: C:\WINDDK. 並執行安裝程式 - ddkwizard.


設定系統變數

在把install path加到系統變數Path(for ddkbuild.bat, ddkbuild.cmd).

新增一系統變數 WXPBASE 並給予變數值install path\{build number}.

Note: 俺的install pathC:\WINDDK{build number}7600.16385.0


設定Microsoft Visual C++ 2008

Run Wnidows Visual C++ 2008 Express.

工具 -> 選項 -> 專案和方案 -> C++目錄

選取右側的「顯示目錄(S)」為「可執行檔」,加入WDK執行檔的path

C:\WINDDK\{build number}\bin\x86

Note: 依情況增加路徑,或修改install path


選取右側的「顯示目錄(S)」為「Include檔案」,加入以下path

C:\WINDDK\{build number}\inc\ddk

Note: 依情況增加路徑,或修改install path


選取右側的「顯示目錄(S)」為「程式庫檔」,加入以下path

C:\WINDDK\{build number}\lib

C:\WINDDK\{build number}\lib\wnet\i386

Note: 依情況增加路徑,或修改install path


以上,完成環境設定。


Ms Visual C++ 2008中用WDK compile驅動程式

Step 1:

建立專案 -> DDK Project -> Empty Driver, 別忘了給專案一個名字.

Step 2:

接下來會看到Which DDK(s) do you want to use, 因為俺是在Windows XP下開發所以選擇Windows XP DDK

Note: 千萬別選「Create PREfast configuration」,不然會一直compile失敗,網路上好像也找不到原因,可能是我不會google的關係,再接再勵吧 !


Step 3:

複製WDK sample source files到專案目錄下

以俺的狀況為例, copy *.c, *.h, sources, makefile from

C:\WINDDK\{build number}\src\network\ndis\ndisprot\5x\sys

to project directory

C:\Documents and Settings\user name\My Documents\Visual Studio 2008\Projects\ndisprot\ndisprot


回到Ms Visual C++ 2008中的專案視窗

左方案總管Header Files -> 右鍵”加入” -> 現有項目

加入所有的header file


左方案總管Sources Files -> 右鍵”加入” -> 現有項目

加入所有的*.c, *.rc檔案


左方案總管Special Files -> 右鍵”加入” -> 現有項目

加入sources, makefile


上方功能表「建置」 -> 建置方案

Compile完沒有錯誤就代表成功了


另外有一個問題,雖然我們成功的compiledriver,但卻沒有安裝用的INF檔,可行的解決方式是到WDKsample裡找跟我們類型最接近的driver,拿它的INF來改。

2009年8月27日 星期四

WDK 安裝 Howto

開發Microsoft Windows驅動程式(driver)需要安裝Windows驅動程式套件 - Microsoft Windows Driver Kit (以下簡稱WDK),請見WDK官方網站。建議儘量使用Microsoft美國網站,因為台灣站內容的更新仍跟不上美國官網。此時官網中的WDK版本為7.0,筆者的OSWindows XP


下載WDK的方式有3種,可從Microsoft Download CenterMicrosoft Connect Web SiteMSDN Subscriptions下載,第1種是最方便的,後2種下載方式都複雜到爆炸(不能馬上下載對俺來說就爆了XD),因此不建議使用後2種。


下載的檔案是光碟映像檔(ISO),不用燒成光碟,使用虛擬光碟軟體可以把光碟映像檔如同實體光碟放在光碟機一樣來使用,虛擬光碟軟體有很多,筆者常用的是DAEMON TOOLS這套軟體,另外很多燒錄軟體有附虛擬光碟功能,例如:酒精。


喔,對了,Microsoft .NET Framework 3.5也要先裝好才可以裝WDK唷。


以下是安裝WDK的流程

Step 1: Installing WDK.

Note: 安裝路徑不要包含空白,不然可能會發生莫名奇妙的錯誤(你知道的,這就是Microsoft )

Note: 記得安裝Sample

Note: 不需要的套件就不要裝(Ex: Device Simulation Framework, Windows Device Testing Framework),以節省空間。

Note: 若系統中有舊版WDK,請不要安裝在同一目錄或把它覆蓋過,可能會因此在開發過程發生莫名奇妙的錯誤(你知道的,這就是Microsoft),請使用完全不同的目錄來安裝。


Step 2: Installing the Debuggers, X:\Debuggers\setup_x86.exe.

Note: X is the CD-ROM drive.


Step 3: 驗證WDK安裝是否成功, 驗證方式就是compile sample檔。

「開始」 → 「所有程式」 → 「Windows Development Kits」 → 「Windows DDK」→「Build Environments」 → 「 Windows XP」→ 「Windows XP Checked Build Environment


Note: sample path{install path}\src\{type}

Note: type有很多種,Ex: network, 1394, printer … etc.

Note: In my case, 只需要~\network\ndis\ndisprot, 將不需要的sample(請依情況調整)移出安裝路徑中src目錄。

Note: 在此值得注意的是我們選擇5.x而非6.0。因為NDIS 5.x driver支援windows 98windows 2003,而6.x則只支援windows vista之後的版本。

Note: ndisprot sample說明請見末頁。

Note: 在建置環境命令提示字元中輸入build –cZ便會進行compile動作。等一下 !!! 先不要執行指令,compile全部的sample很花時間,只compile需要的檔案就好。

Note: 如果要針對需要的檔案編譯,請切換到該sample的目錄下buildEx: ~\network\ndis\ndisprot\5x\sys

Note: test program也要compile,後面會用到。


若無任何錯誤訊息就代表成功了。恭喜(~) !! 接下來就是安裝到系統上來了。

2009年8月20日 星期四

到底 ...
人生將會是怎樣 ?

縱然不可能事事如意,
但,
何以肯定之,
又何以否定之呢 ?

該怎樣評斷,是否不虛此行呢 ?

有人說問心無愧,
對我而言,
最大的障礙可能在接受不完美吧 ...

怎樣的不完美才算是能問心無愧的接受 ?

2009年8月19日 星期三

無奈

本來是想去參加試唱的 ...

這是從小就有的夢想,
不是因為可以成為鎂光燈的焦點,
而是這件事可以讓我心跳加速,熱血沸騰。
似乎沒有其他的事可以讓我感到那麼的 ... 癢!
不能做就渾身的不對勁
(這種感覺好像也被磨掉了)

爸很努力的從小就培養了我這方面的才能,
希望能讓他看到過去花費的心力沒有白費.
雖然他已經不在了,但至少我想透過達到的成果來緬懷他

但 ...
女王至始至終就不支持這件事 ...
因為在那樣的圈子內有著太多的背叛
因為不想我被搶走(~苦笑)
因為不想相處的時間太少
因為我應該把重點放在工作上

是阿 ...
有哪個女孩願意分享自己的另一半
為了讓她安心,我也只好放棄了 ...
況且,她不支持,這又有什麼意義呢 ?

似乎 .. 還沒有被全心全意支持過呢 !
從大學社團到現在 ...
但話說回來,搞不好是我自己的問題(~苦笑) ...
也可能是要求另一半全心全意無條件支持本身就是一個很過份的事吧 !?

只是好不容易看到一到曙光、嘗到一滴甘露的小綠芽,
可能沒有再探出土壤的一天了 ...

老爸,對不起 ...
也許這一輩子我沒有辦法證明你的眼光了 ...

2009年7月14日 星期二

vsftp - FTP Server輕鬆架

由於工作上的需要,因此想在辦公室的電腦上架FTP,當然使用者只有我自己啦XD
而我裝的套件是vsftp,環境是Ubuntu 9.04

首先呢,當然就是安裝套件囉
$ sudo apt-get install vsftpd
OK,這樣就安裝完了,接下來就到了設定的步驟了。
有幾個檔案是vsftpd的相關設定檔:
/etc/vsftpd.conf
/etc/vsftpd.chroot_list

先說/etc/vsftpd.conf,這是vsftpd的主要設定檔,檔案中其實已有相當詳細的註解了。
所以在此僅提出幾個常用的設定
特別注意:修改設定檔前請先備份

# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=NO
是否允許任意使用者連線,由於我只想給自己使用,所以設為NO

# Uncomment this to allow local users to log in.
local_enable=YES
是否允許本機使用者登入FTP,我使用自己的帳號登入,所以設為YES

# Uncomment this to enable any form of FTP write command.
write_enable=YES
是否開放寫入的權限,我的需求是下載及上傳資料,所以需要寫入的權限,設為YES

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
這三個就有趣了,所以一起上XD
PS:chroot,就是讓使用者變換根目錄的功能,在登入FTP Server時,預設根目錄為使用者的home directory

chroot_local_user=YES
chroot_list_enable=YES
這樣的設定,讓所有使用者無法變換根目錄,除了/etc/vsftpd.chroot_list中所列的使用者

以上,如有錯誤請各位不吝指正,謝謝。

2009年6月3日 星期三

Foxit Reader - 輕巧好用的PDF Reader

Foxit是PDF Reader後起之秀,用過的人相信都對它輕巧快速留下了深刻,不過可惜的是Foxit一開始Release的Linux版本非常的難用,不僅如此還難以安裝,這麼好的程式卻無法在Linux使用實在是令人相當的懊腦,於是在下三不五時就會到Foxit的官網上晃晃並期待奇蹟的出現 ...

終於有一天 ... 奇蹟真的發生了 !! 有圖有真相 !!


不僅如此,同時亦提供多種package任君選擇(~淚)。


這是裝好後開啟的模樣


重點來了,中文顯示是否正常呢?會不會出現碎字呢?


再近一點看

人客阿~你還在用肥腦油腸的Adobe嗎?試試輕巧的Foxit吧 !

下台一鞠躬 !

PS:補上Linux下載的聯結,因為不是很好找
Foxit for Linux Desktop

2009年2月28日 星期六

root權限開啟tab命令補全功能

剛安裝好Debian時root並沒有開啟tab命令補全, 而一般使用者則有開啟這項功能,
所以我的想法是, 就到使用者的 .bashrc 看看

以下就是開啟tab命令補全的code, 只要寫入 /root/.bashrc 裡便可以使用了.
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi

喔, 對了, 當您使用root權限做這件事時, 在bash中登出root再登入便可以了.

2009年2月27日 星期五

當兵

好快, 入伍一下就過了半年,
在中華民國每一個身心狀況良好的男孩子都免不了這麼一"關",
每每聽到父執輩談論到當兵, 話題便滔滔不絕, 彷彿軍旅生涯是那麼有趣,

現在身在其中了, 才漸漸發現, 原來聽起來最有趣的部份也就是最受磨難的部份.
所謂的快樂建築在別人的痛苦上, 原來就在這.

其實現在當兵真的頗輕鬆的, 假期正常, 訓練合理, 役期縮短.
雖然免不了一堆狗屁倒灶的事, 但整體上而言, 真的不難熬.

小弟運氣普普, 現在北部某軍團的資訊中心當資訊兵.
平常就是修修電腦, 管理Server. 或許有當過兵的前輩可能覺的很爽,
但, 真的, 狗屁倒灶的事一堆.
現行的資安規定一堆, 龜速舊電腦一堆, 狗官一級強姦一級.


其實國軍真的不差, 如果跟狗屎比起來的話.

2009年2月24日 星期二

改變Blog走向

悶了很久 ...
因為我似乎在學習上相當的緩慢,
也不夠專業, 因此寫不出什麼有建設性的文章.

既然如此, 那 ... 寫些沒營養的東西的對我來說應該比較容易吧 !!

哇哈哈
廢話我應該是可以寫不少 XD

2009年2月15日 星期日

Linux的回憶

使用Linux也一小段時間了,

都忘了是怎麼開始的, 只記得第一個使用的發行版是Mandrake 9.x(現已更名為Mandriva)
好久了, 7 年前了(茶) ...
那時興沖沖的買了一本薄薄的書(忘了叫什麼),
蠻大本的, 而且裡面僅僅介紹如何安裝以及少量的GUI操作, 僅此而已

這本書帶給我相當大的挫敗感, 只記得當年安裝不下數十次均告失敗 ...
上網查了老半天發現不只我有相同的困擾,
更令人難以忘懷的是安裝失敗的原因竟在於書商所提供的安裝光碟根本就是壞的
Orz ...

幾經波折後竟也讓我裝起來了, 看到登入畫面時那股感動至今難以忘懷(淚)
就這樣, Linux與我碰出了小小的火花, 在心中留下難以抹滅的光芒 ...

2009年2月14日 星期六

回來了

好久沒寫了, 一年多了 ...
發生了衝擊很大的事, 再加上當兵以及太懶惰了 XD ...

Anyway, 希望自己重新開始, 加油
另外, 想都沒想到會有人來我這邊看文章發意見
沒有回到文, 本人深感抱歉

同時感謝您對於這小小的角落投以那匆匆一瞥,
這是對我而言無疑是莫大的鼓勵.

謝謝了

ps:總感覺好像自在言自語 XD