About Me

我的相片
台北市, Taiwan
我是方選,
方白科技(finebind tech.)共同創辦人,
臺大資管所畢,
希望能幫助更多的人!

FB: http://fb.com/function1122
LINE: http://bit.ly/1foeZft (手機開啟點擊網址自動加入)

最新15則讀者回應

最新文章

FUNction's 上課筆記

Label Cloud

Blog Archive

FeedBurner

追蹤者

顯示具有 系統工程 標籤的文章。 顯示所有文章
顯示具有 系統工程 標籤的文章。 顯示所有文章

[解決] ASP+Access Provider 錯誤 '80004005' 無法指出的錯誤

FUNction 於 2008年11月2日 晚上7:38 發表
先講解決方法!
將原本

<%
set conn=Server.createObject("ADODB.connection")
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("資料檔路徑")
%>

改成
<%
set conn=Server.createObject("ADODB.connection")
conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("資料檔路徑")
%>


如果你嫌我寫太少,請繼續看XD
話說之前助教找我去看看教育學程的「線上服務報名系統」程式,我用記事本開了檔案之後,網站就爛掉了@@

我整個嚇到...但還是要裝正經的沒事笑笑
上網Google 了一下,發現「ASP+Access Provider 錯誤 '80004005' 無法指出的錯誤」可能是因為Access 的Provider 版本比較舊還是怎樣,我參考Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005' (access)這篇,果然就可以用了...

跟asp + Access不熟,我想之後應該也沒多少人會用這樣的架構吧XD
管它的,能用就好了阿
繼續閱讀全文 [解決] ASP+Access Provider 錯誤 '80004005' 無法指出的錯誤

以前的研究文章彙整

FUNction 於 2008年9月12日 晚上10:16 發表
以下列出大一到大四資訊相關研究的彙整集合(非本Blog 的),希望能方便網友搜尋
其實是在準備研究所甄試的備審資料XD

硬體相關
[研究]推薦三款企業級防火牆 http://eoffice.im.fju.edu.tw/phpbb/viewtopic.php?t=1660
如何選購被大家遺忘的Power呢? http://eoffice.im.fju.edu.tw/phpbb/viewtopic.php?t=1251
如何送修Intel的CPU呢? ^w^~ http://eoffice.im.fju.edu.tw/phpbb/viewtopic.php?t=1919
如何將FAT檔案系統格式的磁碟機轉成NTFS http://eoffice.im.fju.edu.tw/phpbb/viewtopic.php?t=1252
如何選購合適的DVD燒錄機? http://eoffice.im.fju.edu.tw/phpbb/viewtopic.php?t=1258

網路相關
網路資源分享除錯教學 http://eoffice.im.fju.edu.tw/phpbb/viewtopic.php?t=2682
E-Office 5/30(二) 讀書會 - DNS新生入門 http://eoffice.im.fju.edu.tw/phpbb/viewtopic.php?t=2398
Subnet Mask & Default Gateway http://eoffice.im.fju.edu.tw/phpbb/viewtopic.php?t=1550
FireFox, Mozilla, Netscape的差別? http://eoffice.im.fju.edu.tw/phpbb/viewtopic.php?t=2053

系統工程
[讀書會] 2006/10/16 網站歡迎度分析 (含架站)
http://eoffice.im.fju.edu.tw/phpbb/viewtopic.php?t=2966
今早家中的Apache2 on Win32掛掉 http://eoffice.im.fju.edu.tw/phpbb/viewtopic.php?t=2656
Using 新注音 in English WinXP http://eoffice.im.fju.edu.tw/phpbb/viewtopic.php?t=2571
Debian Exim4 與 PHP mail() 配置教學 http://eoffice.im.fju.edu.tw/phpbb/viewtopic.php?t=2551
如何設置Windows+Apache+PHP+LDAP http://eoffice.im.fju.edu.tw/phpbb/viewtopic.php?t=1590
[分享]更改Linux的主機名稱 http://eoffice.im.fju.edu.tw/phpbb/viewtopic.php?t=1812
[分享]一個非常豐富的Linux的網站 http://eoffice.im.fju.edu.tw/phpbb/viewtopic.php?t=1257

Active Directory 相關
將2003 加入2000 AD Domain http://eoffice.im.fju.edu.tw/phpbb/viewtopic.php?t=2297
E-Office 5/25(四) 讀書會 AD管理實務 http://eoffice.im.fju.edu.tw/phpbb/viewtopic.php?t=2376
[讀書會] 2006/7/18-19 AD入門實務 http://eoffice.im.fju.edu.tw/phpbb/viewtopic.php?t=2514
讀書會講稿 - AD觀念與運作 http://eoffice.im.fju.edu.tw/phpbb/viewtopic.php?t=2021
[經驗分享] 備份與還原Exchange 2000 http://eoffice.im.fju.edu.tw/phpbb/viewtopic.php?t=1321

資訊安全
密碼阿...在網路上,您是用同一組嗎^^ http://eoffice.im.fju.edu.tw/phpbb/viewtopic.php?t=1433
[投影片][讀書會] 96/12/4(二) 個人電腦安全議題
http://eoffice.im.fju.edu.tw/phpbb/viewtopic.php?t=3528

程式設計
如何在FireFox中實現showModalDialog() http://eoffice.im.fju.edu.tw/phpbb/viewtopic.php?t=2512
資管一乙週五之上課作業分享 http://eoffice.im.fju.edu.tw/phpbb/viewtopic.php?t=1077
Java Script Drag and Drop (128行) http://www.wretch.cc/blog/waydoctor/7970278
Java Script DIV Resize (174行) http://www.wretch.cc/blog/waydoctor/8083426

一些隱藏的文章
PCDIY投影片待修訂版
Strategy of Migrate DC & Exch
垃圾郵件研究與預防
移除watch dog步驟
繼續閱讀全文 以前的研究文章彙整

[下載] Windows XP SP3 釋出!!

FUNction 於 2008年5月15日 下午2:36 發表
今天早上收信,除了資訊安全通報之外,最讓我驚訝的是Windows XP SP3 釋出了!! 帥
雖然我現在這台是Vista ,但是我弟我爸還在用XP 阿

介紹網址http://technet.microsoft.com/en-us/windowsxp/0a5b9b10-17e3-40d9-8d3c-0077c953a761.aspx

下載網址http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=5b33b5a8-5e76-401f-be08-1e1555d4f3d4

如果你用XP,趕快去裝一下吧!!
繼續閱讀全文 [下載] Windows XP SP3 釋出!!

PHP 下載遠端網頁 (下)

FUNction 於 2008年4月30日 晚上10:45 發表
如果不能用fsockopen() 開啟透過NTLM 保護的網頁,但又要開啟,其實有個簡單到爆的方法,但我先說,這方法只能支持PHP5,而且要先修改php.ini ,因為預設沒有支持。

現在來使用PHP 的cURL 開啟NTLM Authentication 連線,更威的是cURL 也可以通過 Basic Authentication, Digest Authentication, GSSNEGOTIATE Authentication...(其實這幾個只有NTLM 和Basic 我看得懂:P)

系統設定


  1. 先開啟php.ini (如果不確定php.ini 放在哪,可以參考phpinfo()的輸出結果)
  2. 搜尋「curl」,應該會找到;extension=php_curl.dll將前面分號(;)去掉
  3. 重新啟動Apache
  4. 系統設定完成,我們現在可以用cURL了


範例程式
接下來我們要寫一隻程式,這個程式可以登入被保護的網頁,下載網頁內容回來



// 初始化cURL 物件
$ch = curl_init();

//送出要求網頁的URL
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/_layouts/page1.aspx");
//設定HTTP 標頭版本(HTTP/1.1)
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
//送出驗證要求,這裡的CURLAUTH_ANY 代表可以通過上述任何驗證(包括NTLM Authentication)
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
//送出使用者帳密(帳號與密碼用冒號隔開)
curl_setopt($ch, CURLOPT_USERPWD, "function1122:password");
//設定不顯示伺服器回應標頭(200 OK 之類的)
curl_setopt($ch, CURLOPT_HEADER, false);

//將回應直接顯示出來
curl_exec($ch);

//關閉cURL 連線
curl_close($ch);


我們發現只要短短幾行就可以用PHP 通過NTLM 驗證了,我今天也是傻傻的找了半天fsockopen() 要如何去解析NTLM ,其實都沒有必要啊Orz
BTW, cURL 也可以讓php 發送POST 請求,這就自己研究啦:-)

參考資料

上集PHP 下載遠端網頁 (上)
喔,對了,這是我今天的成品:TCP Proxy - powered by FUNction (使用cURL)
繼續閱讀全文 PHP 下載遠端網頁 (下)

PHP 下載遠端網頁 (上)

FUNction 晚上9:45 發表
如果要下載遠端網頁,最簡單的方法就是fopen(),他可以直接指定url ,像開檔案一樣讀取遠端http/ftp 資料(如果需要登入就不行囉),這方法對公開的網頁幾乎是萬試萬靈,現在來看看程式範例:



<?php
$url = "http://functtionlab.org/";
$contents = "";

$fp = fopen($url, "r"); //這邊使用r(read only)的方式開啟檔案
while (!feof($fp)) { //如果檔案沒結束則繼續讀下一行
$contents .= fgets($fp); //儲存到$html 變數中
}
fclose($fp);
echo $contents;
?>

如果是ftp 就把上面url 改成FTP 的位址,會用「匿名」登入

接下來進階一點,如果網頁有Basic Authentication(驗證),fopen() 就過不去了,Basic 驗證是遇到會跳出一個Windows 登入對話框的網頁(這註解寫的比較淺顯,不精準勿怪)
遇到Basic 驗證,我們要適時送出帳號密碼,所以要改用fsockopen() 搭配fputs()...

這邊來小談一下用「命令提示字元」取得網頁的方法,不知道你有沒有試過

  1. 先開啟命令提是字元
  2. 輸入 telnet www.fju.edu.tw 80
  3. 摸黑輸入 GET / HTTP/1.0
  4. 連按兩下Enter 送出
  5. 這時後就可以看到伺服器回應(如圖)





有了這個概念,看程式碼應該會比較好懂:


<?php
$page = "/private/list.php"; //這是要檢視的頁面
$host = "www.example.com";
//這裡不能有HTTP 喔,要用指定連接埠號的,不然fsockopen 會出現「Unable to find the socket transport "http" - did you forget to enable it when you configured PHP?」的錯誤
$port = 80;
$user = "function1122";
$pass = "P@ssw0rd";

//接下來來產生模仿劉覽器的標頭,先送出GET 要求網頁
$header = sprintf("GET %s HTTP/1.1\r\n", $page);
//這邊來模仿一下IE6 好了:P
$header .= "Accept: */*\r\nAccept-Language: zh-tw\r\nAccept-Encoding: gzip. deflate\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; windows NT 5.1; SV1)\r\n";
$header .= sprintf("Host: %s\r\n", $host);
$header .= "Connection: Keep-Alive\r\n";
//這裡就是送出Basic 驗正的帳密,他是用Byte 傳送的唷,帳號密碼中間用冒號隔開
$header .= sprintf("Authorization: Basic %s\r\n", base64_encode("$user:$pass"));
//最後再送出一個Enter 代表資料送完了
$header .= "\r\n";

//建立一個socket 連線
$fp = fsockopen ($host, $port, &$errno, &$errstr, 30);
if(!$fp){
//如果連線失敗則顯示錯誤訊息和代碼
echo "$errstr ($errno)\n";
}else{
//成功先像伺服器送出剛剛準備好的header
fputs ($fp, $header);
//讀取伺服器回應
while (!feof($fp)) {
echo fgets ($fp,128);
}
fclose ($fp);
}
?>


呼!!!終於搞定了
但如果伺服器是用NTLM 驗證fsockopen() 就會變得很麻煩...因為要用程是去計算伺服器送來的「挑戰」,才能對挑戰「回應」(若想了解NTLM 原理,建議參考NTLM Authentication Scheme for HTTP)

所以如果要用PHP 去登入需要NTLM 驗證的伺服器,這邊實做起來非常困難,找遍了網路也找不太到,但是...突然想起cURL,下集待續...

下集PHP 下載遠端網頁 (上)
精彩嘛:$
繼續閱讀全文 PHP 下載遠端網頁 (上)

下載 Windows Vista SP1 中文版

FUNction 晚上9:34 發表
上禮終於拜裝了,其實我覺得載點不好找,就貼一下
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=f559842a-9c9b-4579-b64a-09146a0ba746

這是正體中文(繁體中文)的,如果是別的語系請自行選擇

裝了之後差在哪裡!?
比較明顯的是複製檔案的速度變快了,以前小小的檔案都要等半天
另外我發現Vista 好像變小了~
就醬
繼續閱讀全文 下載 Windows Vista SP1 中文版

用Office Word 2003 無法開啟2007 文件!?

FUNction 於 2008年4月19日 下午5:27 發表
這相容性套件適用於Microsoft Office Word、Excel 及 PowerPoint 2007 在Office 2003 環境中開啟。(有點拗口,總之就是裝在舊的電腦上就可以讀新的檔案啦)

昨天晚上朋友問我在學校做的PowerPoint 文件在家裡的2003 開不起來,怎麼辦?因為學校是2007 的,製作出來的檔案預設是.pptx
其實只要在家裡電腦裝檔案格式相容性套件就可以讀了,裝完之後記得把Office 成事關掉重新開啟。

下載網址:http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=941b3470-3ae9-4aee-8f43-c6bb74cd1466

此外,Office 2007 不會很難用啦,用的時候放空,盡量憑直覺操作,絕對會讓你愛上他
這網站有更多相容的解決方案:http://labnol.blogspot.com/2006/11/download-office-2007-converter-word.html
繼續閱讀全文 用Office Word 2003 無法開啟2007 文件!?

華碩主機板按F8 不能進入安全模式!?

FUNction 於 2008年4月14日 晚上8:19 發表
在Windows XP 要進入安全模式,通常都是按F8 鍵(有些筆電是F2),但是某些華碩主機板按F8 似乎只會進入選擇開機裝置的畫面,例如華碩P5P800...
根據華碩工程師解答,華碩某些板子要按F5...這就是正解!!!

簡單說就是華碩主機板的電腦要進入安全模式,在開機的時候請狂按F5 鍵,就可以進入安全模式選單(如下圖)

這張圖片引自 http://www.twbbs.net.tw/886495.html

有些鳥鳥的電腦工程師還說要重灌,千萬不要上當,重灌之後還是進不了安全模式。

至於進了安全模式可以幹嘛,最一般情況是掃毒(要掃毒建議選第一個:安全模式),因為如果在一般模式掃毒很多執行中的程式藏有病毒卻無法掃到。進入安全模式之後開機只會啟動必要服務(減少執行中的程式),這樣就可以讓防毒軟體把電腦裡的毒完完全全的掃一遍了。

這是昨天我朋友問我的問題,分享一下:-)
繼續閱讀全文 華碩主機板按F8 不能進入安全模式!?

在Windows Vista (Windows Server 2008) 不能裝SQL Server 2005 !?

FUNction 於 2008年4月13日 晚上10:52 發表
在Windows Vista(或Windows Server 2008) 上安裝SQL Server 2005 可以裝,可是裝完之後SQL Server 卻不能啟動,也連不到,這是因為我們的SQL Server 2005 是SP1 或更舊的版本。
其實只需要去下載SP2 來裝就可以了。
下載網址: http://www.microsoft.com/downloads/details.aspx?familyid=D07219B2-1E23-49C8-8F0C-63FA18F26D3A&displaylang=zh-tw

下載完後,如果你的電腦是32 位元,就使用x86 的,64位元就用x64囉。至於怎麼看,在Vista 的環境下在電腦上按右鍵,選擇內容,在中間系統欄位有個系統類型可以看到,例如:32位元作業系統。

這是有天晚上我朋友問我的,上完SP2 之後就可以用了,分享一下 :-)
繼續閱讀全文 在Windows Vista (Windows Server 2008) 不能裝SQL Server 2005 !?

花8.41 美金(約NTD 256)買了一年的網域

FUNction 晚上10:35 發表
話說春節四天,學校在4/3 日斷電,我放在Lab 的機器不明的沒有自動重啟;此外,我也擔心把網站放在學校會牽涉法律議題(畢竟我只是小市民而已)。因為斷電事件太頻繁,春假的時候我心意已決,把網站移到之前介紹過的10GBFreeHost ([圖解]申請免費10GB網域,我簡稱10GB)。

下表比較10GB 與Lab 機器用於架網站的優缺


Lab 電腦10GB
網頁空間80G+ (可自行擴充) 10G
流量限制4G/day大勝20G/day
網站環境大勝隨意PHP4, MySQL5, FTP
網站名稱可自行架設DNS或由ISP代管由10GB代管或ISP代管
網站內容學術研究相關,非營利大勝隨意,不違法就好
網站速度超快有點慢,但還可以接受(應該是有憑寬限制)
可靠性每個月至少斷線一次據說有99.9 的可靠性
管理方便性需自行設定遠端、FTP上傳、SVN有FTP、網頁板編輯器


赫然間發現離題了,不過我想你對剛剛的比較表應該還是能接受:P

接下來來講如何註冊網域吧,這方面很多架站的書都有,而且流程其實只要看得懂英文應該是沒問題的,所以我這邊真對一些設定機如何只花256 元買一個屬於自己的網域
什麼是網域? 網域就是網址啦!!例如我買的網址是functionlab.org ,我就對這網址有擁有權。

我是在 http://www.namecheap.com/註冊的,這裡一般情況買一個網域是9.29美金,但是我們可以使用折價券用更便宜的價錢購買。我推薦使用這個網站http://www.retailmenot.com/view/namecheap.com上面的折價券,希望你用完折價券之後也可以跟我一樣去回報一下 :-)




這是首頁,在最上面填入你想註冊的網域,例如我想註冊functionlab.org。



將折價碼貼在左下角,如果可以用他會顯示成功的訊息,要付的錢就會變便宜。



等到確定要買的時候,忽然發現不是該站會員,沒有關係,從右邊進行註冊就可以了,註冊完後就可以付款啦(不需要重新選擇網域)。

當成買下域名後,登入點選你買的域名,就可以進行網址與IP 位址對應設定(DNS設定),這邊設定很靈活:



這裡可以看到我希望別人連functionlab.org 可以連到我在10GB 的網站,如果別人打www.functionlab.org 我也希望人家一樣連到那兒。另外,我還有另外一個網站,是完全不一樣的主機,叫x.functionlab.org(這邊我用x 代替,反正就是另一個網站,給我一點隱私啦),我可以在下面設定他IP 的對應。假設他IP是220.132.78.?,我這樣設定就連的到了。這邊要注意的是如果網站放在10GB,IP 就設成72.232.214.19 (大家都一樣),但是要記得在10GB 上設定。



這是10GB 的設定處,我們點選ACCOUNT SETTING,跳到Extra domain 打入剛剛註冊的網域,應該設定完馬上就可以連到了 :)

這就是我祝測的網域,基本上我打算當成練習,想到什麼東西就放上去給大家玩:http://functionlab.org/ (基本上現在還蠻弱的,畢竟我沒多少時間美化:P)
繼續閱讀全文 花8.41 美金(約NTD 256)買了一年的網域

Internet Explorer 8.0 Beta 1 測試心得(上)

FUNction 於 2008年4月7日 下午4:49 發表

話說我星期五的時候,去Google 分析看看最近的流量如何。逛呀逛的,我發現...居然有人用IE 8.0 在看我的Blog。Oh My God...IE 什麼時候出到8 了,不是大部分的人都還在用6 ,不到一半的人流行的用起IE 7。我揉揉眼,眼睛沒有花,真的是IE 8!

透過股溝大神的協助,我花的三秒的時間找到IE 8 的載點,原來IE 8 還在Beta 1 階段。IE 8是3/5 釋出的,而且再其實已經有不少地方在討論。事不宜遲,我居然馬上自願當起白老鼠...這是多可怕的開始。


起初沒什麼異狀,就是很制式的歡迎與使用條款。


接著他會在透過網路下載更新套件,所以安裝的時候應該是網路一定要通。


安裝完之後會要我們重新啟動,所以裝之前要先評估電腦能不能關機。

這邊附上下載連結,請選擇適合您電腦的版本: http://www.microsoft.com/windows/products/winfamily/ie/ie8/readiness/Install.htm

我在下一篇會講講使用心得,當然,裝之前請先看完下一篇。
後篇:Internet Explorer 8.0 Beta 1 測試心得(下)
繼續閱讀全文 Internet Explorer 8.0 Beta 1 測試心得(上)

Internet Explorer 8.0 Beta 1 測試心得(下)

FUNction 下午4:49 發表

資訊落後的人就要比別人勤勞,當我重新啟動電腦執行IE 8 後,他居然要我設定一大堆有的沒的,什麼預設瀏覽器、預設搜尋以及一些Add-ons 的設定。設定完後會導向Windows Update 的畫面,跟著Update 吧...


這是管理Add-ons 的介面,其實真的沒什麼好管的,IE 的Add-Ons 那麼少...這邊只能Enable\Disable\Remove


在這裡要提一下,在設定完成後會每個網頁上方都跳出一個警告條,不管我怎麼管理Add -ons都沒用,但是更新完後重新啟動IE 8,警告條就自動消失了。

接下來就是一些可怕的開始:

當使用Ctrl+T 開啟新的索引標籤,畫面還蠻美的,照一下給大家欣賞。


可是用IE 8 瀏覽推推王的時候,除了首頁沒問題,其他幾乎每一頁都跑板,看了十分不舒服。



在瀏覽器右上角有個特殊的小工具,可以檢視網頁的DOM 結構、CSS、Script,這是內建的,應該對開發者來說蠻方便的...

此外,我覺得IE 8 速度似乎比IE 7 慢,而且處理JavaScript 好像比IE6 還容易當掉,我個人非常不喜歡。而且執行許多現有的JavaScript 都會發生錯誤,連Blogger 寫文章的上傳圖片都不能跑,會不會太誇張@@

在這邊做個使用心得總結:
  • 執行網頁速度很慢,且跑板嚴重
  • 執行Script 兼容性不加,且容易當掉
  • 即使有新增一些小功能仍然瑜不掩瑕
  • 集瀏覽器失敗於一身阿


因為裝了IE 8,所以我現在都一直用Firefox 了...算塞翁失馬嗎??
前篇:Internet Explorer 8.0 Beta 1 測試心得(上)
繼續閱讀全文 Internet Explorer 8.0 Beta 1 測試心得(下)

10GB 動態網頁空間 與Google Sites 服務

FUNction 於 2008年4月4日 晚上10:00 發表
昨天晚上推推王多了一篇令人注意的推文,總之原文是[圖解]申請免費10GB網域,嚇死我了...怎麼又有這麼好康的事。沒想到今天下午收信的時候,我的同好Deduce 也在昨天半夜分享這個資訊給我,只能說真是英雄所見

這麼好康的動態(PHP+MySQL)免費空間,我當然躍躍欲試,畢竟之前提的Miroko 空間雖然大,但是連放個影片讓人家抓也不行(這我下一篇再講)。但是讓我有興趣的其實是Google Sites 服務。

我稍微看了一下Google Sites 服務,就我的理解是,提供一個非常簡單的網站範本,整合強大的Google 服務(例如Google 日曆、Google 文件...等等),大概有分成四種樣板:公司內部網路、小組專案、員工資料、教學輔助。

介紹短片...哪來的同志程式設計師@@


以下是四種樣板的模型:
Company intranet
Team project
Employee profile
Classroom

大概就這樣,但是其實給我的感覺很像MOSS(Microsoft Office SharePoint Service),這邊附上他的Demo 影片好了[觀看]...
(這影片可真難找)

參考資料:http://sites.google.com/
繼續閱讀全文 10GB 動態網頁空間 與Google Sites 服務

Firefox 3 Beta 4 測試心得

FUNction 晚上8:21 發表

因為西瓜的熱情推薦,我居然心動了,就下了Firefox 3 Beta 4 來玩玩看,其實我想我裝的原因是看到 Opera 掰掰,Firefox 3.0 跳槽心得前面幾行,簡單的說,就是!!
這個點足以說服我,我就沒繼續把文章看完了。

安裝完之後,果然不出我所料,現有的Add-ons 似乎都不能用,他要我找新版的...自動搜尋過,沒有,算了!! 我忘記把螢幕print 下來,不然這篇會比較有真實感。裝完之後就到文章最上面的那個網頁啦...老實說,我覺得看起來超醜超亂超幼稚的!!一點也不吸引人...


當我試著輸入網址的時候,這算是與新功能的第一次接觸吧...因為下拉選單很美,可是會不會太占空間,真的有必要這樣嗎?? 然後我也沒感覺到他有多快...Gmail 載入超久,而且我在台灣測是首頁看到了這樣的Bug 報告...(雖然我裝之前就有注意到,但是我裝的心意已決),這邊寫寫,給沒注意到的朋友一些警訊...

Firefox 3 Beta 4 已知的問題
  • Windows Live Mail 無法使用; 必須切換到 Hotmail 舊版介面 (bug 396259)
  • 新版的 GMail 聯絡人無法顯示 (bug 415252)
  • 「回報偽造網頁」選項目前暫無法使用 (bug 420677)
  • Firefox 不會問使用者是否要更改既存密碼(bug 421058)
  • MathML 功能在 Firefox 3 Beta 4 尚未完全穩定(bug 413115bug 363240)
  • 當使用 Window-Eyes 時,新的網址列、加入書籤對話框與下載管理員通知的訊息不一致,請使用 JAWS 8.0 或其他螢幕閱讀程式來測試 Firefox 3 Beta 4(bug 393398)
  • 續傳檔案系統會因為伺服器不允許重新連線時發生錯誤 (bug 401846)
  • text/html 型態傳來的資料來源無法正確載入 (bug 381357)
  • 某些附加元件安裝後不會顯示「重新啟動」鈕(bug 414936)
  • 部份採用已棄用程式碼的附加元件無法正確安裝 (bug 406807)
  • 個人隱私 > 瀏覽紀錄 > 保留瀏覽紀錄裡的網址設定為 0 時沒有作用(bug 366075)
  • DOM 觀查器已被移除,以額外的擴充套件形式提供。
參考資料: http://moztw.org/beta/
看了如果你還有興趣(像我),請自行下載安裝,後果自行負責唷:P(我還活得好好的...應該啦),下載網址:http://www.mozilla.com/products/download.html?product=firefox-3.0b4&os=win&lang=zh-TW (正體中文版)
繼續閱讀全文 Firefox 3 Beta 4 測試心得

TWNIC97年網路安全教育訓練

FUNction 於 2008年3月16日 下午6:09 發表
3/7 收到了一封名為"TWNIC97年網路安全教育訓練線上熱烈報名中"的信,因為標題寫得很清楚,暫時沒時間去訓練,所以就沒開信了,這邊分享一下(我已經把過期的課程刪掉了)

TWNIC 今年所舉辦之網路安全教育訓練巳上線接受報名中,目前台北及台中巳有場次開放報名中,歡迎大家多多利用

台北 3月28日 資訊安全管理系統基礎課程 (ISO27001)http://dns-security.twnic.net.tw/SEC97/apply.php?class=9702

台中 3月21日 DNS 安全 教育訓練http://dns-security.twnic.net.tw/SEC97/apply.php?class=9703

相關報名資訊請您參考如下網址之介紹:http://dns-security.twnic.net.tw/SEC97/
若本信造成您的不便尚請見諒TWNIC 技術組敬上


就是這樣啦...又是一篇廢文
繼續閱讀全文 TWNIC97年網路安全教育訓練

XPE 與有關的網站

FUNction 於 2008年3月14日 下午5:26 發表
官方網站:http://tw.myblog.yahoo.com/noname-team/
討論區:http://nonamexpe.duc.cc/index.php
趙老師系統修復包:http://jnc.myweb.hinet.net/

就醬,不要問我XPE 與XP 有什麼關係!!
繼續閱讀全文 XPE 與有關的網站

某公司網站的駭客事件 (三)

FUNction 於 2008年1月27日 晚上10:17 發表
上篇:某公司網站的駭客事件(二)
然冒出了第三篇...不知道會不會有第四篇阿(希望不要)

快人快語,我是來貼程式的,因為後來某公司跟我說...以我程試跑出來的報表判斷起來很辛苦,他們希望統計出每個IP 有幾次來訪記錄(從來訪記錄多的去抓出可疑IP)。我想...也是ok 啦,從之前的程式改一改,到昨天晚上12 點剛好改完。

程式如下...

<?php
$findStr = $_GET['q'];

$fileFolder = "C:/Windows/system32/LogFiles/";
$handle = opendir($fileFolder);
$listIp; //這是將來用來存放資料的資料結構陣列
echo "<h1>Query String: ".$findStr."</h1>\n";
while ($filename = readdir($handle)) {
$fullfilename = $fileFolder.$filename;
if(is_file($fullfilename)){
$fd = fopen ($fullfilename, "r");
$contents = fread($fd, filesize($fullfilename));
fclose($fd);
$find = strstr($contents, $findStr);

//稍微改良一下,只要找到(不用計算出現幾次),就進行查詢
if($find){
getIISLogIp($contents, $findStr);
}
}
}
closedir($handle);
getIPResult(); //顯示結果

# 一樣一次讀取一天的,但是讀取之後都放到資料結構裡
function getIISLogIp($contents, $findStr){
global $listIp; //取得全域變數(資料結構)
$lineArr = explode("\r\n", $contents);
$iptmp;
$output;
foreach($lineArr as $line){
$tmp = explode(" ", $line);
$time = $tmp[1];
$day = $tmp[0];
if($tmp[8] != null){
$ip = $tmp[8];
$sub = strstr($tmp[5], $findStr);
if($sub){//如果有找到
if($listIp[$ip] == null){

//這裡一樣是優化,先看看有沒有曾經查過該IP
//建立新資料(放入資料結構)
$listIp[$ip]['isp'] = getISPInfo($ip); //查詢IP反解

$listIp[$ip]['ip'] = $ip;

//將IP存入(這裡寫不好,但好像foreach 不能在這麼複雜的情況下
//讀取陣列的key)
$listIp[$ip]['count'] = 1;
$listIp[$ip]['data'][$day] = "<b>".$day.":</b> ".$time;
}else{ //有找到則附加到現有的資料結構
$listIp[$ip]['count']++;
if($listIp[$ip]['data'][$day] == null) $listIp[$ip]['data'][$day] = "<b>".$day.":</b> ".$time;
else $listIp[$ip]['data'][$day] .= ", ".$time;
}
}
}
}
}

# 輸出資料,依照出現次數排序,列出每個IP 出現的時間
function getIPResult(){
global $listIp;
if(sizeof($listIp) > 0){
uasort($listIp, "orderIPCount");

//使用自定排序(自定函式名為orderIPCount)

foreach($listIp as $ipstream){
$ip = $ipstream['ip']; //從資料結構中取出IP
$isp = $ipstream['isp']; //取出ISP資訊(反查)
$count = $ipstream['count']; //取出出現次數
$dataArr = $ipstream['data']; //取出時間資訊
$data = "<ul>";
foreach($dataArr as $oneday){
$data .= "<li>".$oneday."</li>\n";
}
$data .= "</ul><br />\n";
echo "<span style=\"font-size: 18px; font-weight: bold;\">".$isp."</span> (IP: ".$ip.")<br />\n".$count." time(s):\n".$data;
}
}
}

# 查詢ISP資訊(反查)
function getISPInfo($ip){
$host = gethostbyaddr($ip); //執行IP反查
if(strstr($host, "HINET-IP.hinet")){

//分析字串,如果反查結果有HINET-IP.hinet 則為中華固I
//其他依此類推...
$host = "中華電信固定IP";
}elseif(strstr($host, "dynamic.hinet")){
$host = "中華電信浮動IP";
}elseif(strstr($host, "seed")){
$host = "SeedNet";
}elseif(strstr($host, "giga")){
$host = "GiGa 超網路";
}elseif(strstr($host, "tfn")){
$host = "台灣固網";
}elseif(strstr($host, "so-net")){
$host = "So-Net";
}
return $host;
}

# 自定依照出現次數多寡排序的函式
function orderIPCount($count1, $count2){
$ct1 = $count1['count'];
$ct2 = $count2['count'];
return ($ct1 > $ct2)? -1 : ($ct1 == $ct2 ? 0 : 1);
}
?>


這是程式執行的結果

結果有去的事情發生了,發現造訪最多次某公司網站的IP 是奇摩機器人,最多的那個機器人在不到一年就有39次的記錄。如果還有下篇的話...我希望不要再出現程式碼了Orz,就跟大家回報一下中華電信會不會給某公司查特定時段的IP 使用者吧:-)

上篇:某公司網站的駭客事件(二)
繼續閱讀全文 某公司網站的駭客事件 (三)

某公司網站的駭客事件 (二)

FUNction 於 2008年1月26日 下午3:39 發表
上篇:某公司網站的駭客事件(一)
點惱殘的我,身邊伴著一台小筆電。我覺得在機櫃上找太辛苦,不只要半蹲著(說到這...為什麼每個機櫃的螢幕高度都那麼適中,站著用太矮,坐著用太高),還要把頭伸進去,於是我就要求把他們的Log 資料夾複製一份給我。

我拿著我的小筆電開心的找著,不時會有公司裡的人走過來問我找到沒。一開始,我用Dreamweaver 來找,因為他裡面有個"搜尋整個資料夾原始碼"的功能,但可能因為附檔名(.log)的關係,一樣徒勞無功。我開始腦殘了...打開Notepad++

請你記住一句名言:人,要作有挑戰性的事;任何重複的事,就交給電腦做!!

我檢視了一下Log 的格式,發現:
2005-12-16 01:29:43 192.168.1.5 GET /Default.htm - 80 - 192.168.1.101 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1) 200 0 0
這是查詢/Default.htm 這個網頁的記錄檔,可以看到來源IP是192.168.1.101,使用的瀏覽器是IE6.0,作業統是XP(Windows NT 5.1)

2005-12-16 03:40:23 192.168.1.5 GET /Search.asp q=FUNction's%20Blog 80 - 192.168.1.102 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1) 200 0 0
這裡多了一個"q=FUNction's%20Blog",是他的查詢字串,由於前一筆資料中沒有查詢字串,所以用一槓"-"代替

好了...這很有規律


  • 檔案名稱以日期編號
  • 來源IP 在每筆資料中第九個位置
  • 瀏覽時間在每筆資料中的第二個位置
  • 查詢字串在每筆資料中的第六個位置

找到這樣的規律,只要寫個簡單的程式,就可以把所有記錄當中查詢某個特定字串的IP找出來囉 ^__^ 由於小弟學藝不精,程式語言會的不多,剛好手上有環境(小筆電裡有Apache+PHP),就用現成的環境寫寫看。

以下列出程式碼,短短66 行:

<?php
$findStr = $_GET['q'];
$fileFolder = "C:/Windows/system32/LogFiles/W3SVC1/";

//這裡指定存放Log 的資料夾
$handle = opendir($fileFolder); //開啟資料夾
echo "<h1>Query String: ".$findStr."</h1>\n";
while ($filename = readdir($handle)) {

//依序將資料夾內每個元素(檔案、資料夾)名稱取得
$fullfilename = $fileFolder.$filename;

//組合成完整檔案路徑
if(is_file($fullfilename)){
//如果是檔案的話
$fd = fopen ($fullfilename, "r"); //開啟檔案
$contents = fread($fd, filesize($fullfilename));

//將所有資料傾印到變數$contents 裡
fclose($fd);
//關閉檔案
$times = substr_count($contents, $findStr);

//計算$contents 裡出現多少次要查詢的字串
if($times > 0){ //如果出現一個以上就要查詢他的IP
echo "<h3>".$filename."</h3>\n";

//輸出檔案名稱
getIISLogIp($contents, $findStr);

//列出該檔案中有查詢的IP
}
}
}
closedir($handle); //關閉資料夾

#讀取其中一日的記錄,標明哪些IP 有送出我們要追聰的查詢
function getIISLogIp($contents, $findStr){
$lineArr = explode("\r\n", $contents);

//使用換行切開檔案(每筆記錄一行)
$iptmp;
$output;
foreach($lineArr as $line){ //逐行檢查
$tmp = explode(" ", $line);

//使用空白" "切開每一行的資料
$time = $tmp[1]; //時間在第二個位置
if($tmp[8] != null){
$ip = $tmp[8]; //IP在第九個位置
$sub = strstr($tmp[5], $findStr);

//查詢字串在第六個位置
//strstr(文字, 查詢目標)
if($sub){//如果有找到
if($iptmp[$ip] == null){

//這裡是優化,如果這個IP 不是曾經查過的,則進行反解
$hostName = gethostbyaddr($ip);

//使用類似nslookup 查詢該IP的主機名稱
$iptmp[$ip] = $hostName;

//將該IP 為key ,把主機名稱存入優化陣列
$output[$ip] = $hostName." (".$ip.") - ".$time;

//建立要輸出字串
}else{

//如果曾經反解過,就不要在查了...反解超浪費時間
$output[$ip] .= ", ".$time;

//將時間接在輸出字串之後
}
}
}
}

//如果有輸出字串,則對輸出字串的ISP 做分析
if(sizeof($output) > 0) getISPColor($output);

}

#針對普遍的ISP,進行輸出變色
function getISPColor($ipArray){
echo "<ul>";
foreach($ipArray as $ipData){
if(strstr($ipData, "hinet")){

//中華電信為紅色
echo "<li><span style=\"background-color:#FF0000; color: #FFFFFF;\">".$ipData."</span></li>\n";
}elseif(strstr($ipData, "seed")){

//Seednet為綠色
echo "<li><span style=\"background-color:#00FF00;\">".$ipData."</span></li>\n";
}elseif(strstr($ipData, "giga")){

//Giga網路為藍色
echo "<li><span style=\"background-color:#0000FF;\">".$ipData."</span></li>\n";
}elseif(strstr($ipData, "tfn")){

//TFN網路為黃色
echo "<li><span style=\"background-color:#FFFF00;\">".$ipData."</span></li>\n";
}elseif(strstr($ipData, "apol")){

//亞太電信為亮藍色
echo "<li><span style=\"background-color:#00FFFF;\">".$ipData."</span></li>\n";
}elseif(strstr($ipData, "so-net")){

//So-Net為紫色
echo "<li><span style=\"background-color:#FF00FF;\">".$ipData."</span></li>\n";
}else{
echo "<li>".$ipData."</li>\n";
}
}
echo "</ul>";
}
?>

這隻程式可以檢查整個資料夾裡的IIS Log ,以"每日"為單位將當日送出某查詢字串的IP 與要求時間列出來,此外,還有將幾個主流的ISP 所提供的IP 標上顏色(例如中華電信是紅色),以方便閱讀。 但是...因為DNS反查非常的浪費時間...3XX MB的Log 檔配合8M/640的網路加上Intel 雙核心處理器會花將近20 分鐘執行的時間,所以如果Log 檔案多的時候,記得要先調整機器上的php.ini 喔。

程式執行結果:


查出IP 之後,就要去電信公司查該時段該IP的使用者是誰了,但是據說中華電信會保護顧客隱私,不一定會有結果...接下來已經不關我的事了,但是其實我也很想知道中華電信到底會不會給呢。經歷這件事,讓我覺得我還是比較喜歡當"系統工程師",雖然人家都說程式設計師比較有前途,但是系工還是比較有成就感啊!! :-)

下篇:某公司網站的駭客事件(三)
繼續閱讀全文 某公司網站的駭客事件 (二)

某公司網站的駭客事件 (一)

FUNction 下午3:05 發表
下篇:某公司網站的駭客事件(二)
家國際知名的公司,他們的網站發生了一些事,由於內容已經牽涉到商業機密,但為了讓讀者有來龍去脈的感覺,小弟在這裡杜撰這件事情的經過:

話說昨天下午上班上到一半,接到一通電話,要我去某公司一趟,據說事情緊急且重大。我騎著車到那裡,與找我的人在公司樓下會合,一起進入該公司的機房。內部員工告訴我事發的經過,簡單的說,就是他們公司的網站被入侵了,但是他們找不到入侵的記錄,要我幫忙找出來。(我心想,你們公司沒有IT嗎?? 結果好像真的沒有)

其實在電話中我已經有譜了,我逛過他們的網站,用ASP 寫的,路上猜想,一定會碰到灰暗的Windows 2000 Server...不過令人高興的,他們的伺服器是Windows Server 2003 。雖然身為一個MCSE ,但不知道多久沒碰IIS 了,但是我印象中IIS 預設會保留Log ,而且也不會像Apache 一樣一個禮拜刪一次Log ,所以應該極好找,即使我不確定Log 放哪裡。 (可是他們公司的員工卻說找一個禮拜找不到 = =)

來到了伺服器上,我假裝熟練的打開IIS 管理主控台,展開"網站"、"該公司的虛擬伺服器",按右鍵點擊"內容"(我記得這裡有設定要不要啟用Log ,預設為啟用,真的被我找到...謝天謝地)
我們可以點選"內容"看到更詳細的設定(這張圖是我後來為了寫Blog 另外照的)


點擊"內容"後可以看到這個視窗(這張也是),這裡顯示Log 檔存放的目的地,還有Log 檔的命名規則。由預設值我們可以看到,伺服器每天都會產生一個獨立的檔案,名稱以日期為編號。
例如:2008/01/26 的記錄檔會命名為ex080126.log 。此外,檔案存放在C:\WINDOWS\system32\LogFiles\W3SVC1\ 下面。

接下來我們就要逐一開起Log 檔案,檢查曾經要求過某個網址的IP 記錄了。我先用Windows 內建的搜尋,針對特殊字串查詢,可是卻"找不到記錄"。怎麼辦,難道我要一篇一篇慢慢察,從2005 年到今天耶...還是有什麼方法?

下篇:某公司網站的駭客事件(二)
繼續閱讀全文 某公司網站的駭客事件 (一)

IIS+ASP.NET 名稱的開頭使用無效的字元。

FUNction 於 2008年1月18日 下午3:05 發表

剛寫完一個ASP.NET C# 的文件,放到IIS的目錄去 囧@@
居然出現 "名稱的開頭使用無效的字元。處理資源..."
在網路上找一找...提供以下解決方法

解決步驟:
  • 在命令提示字元切換到C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
  • 執行aspnet_regiis -i (這是向IIS註冊.net 2.0)
  • 再來執行 iisreset (這時候記得把瀏覽器視窗關閉喔)

大功告成,重新開啟應該就ok了

為什麼會這樣呢?
據說試安裝順序的問題,可能是我先安裝.Net 2.0 再安裝IIS,所以.Net 沒有跟IIS 註冊的原故

參考資料:http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=792490&SiteID=14
繼續閱讀全文 IIS+ASP.NET 名稱的開頭使用無效的字元。