顯示具有 筆記 標籤的文章。 顯示所有文章
顯示具有 筆記 標籤的文章。 顯示所有文章

3/26/2010

Qt framework

最近 DR 因緣際會想要寫支程式來解決一些事情, 既然又是個人嘗試,總該順便學點新東西吧?於是決定不用以往慣用的 Windows API,盡量找可跨平台的方案。首先想到幾個以前稍微用過的東西:SDL 在控制輸入的部份不錯,但這支程式還是很需要視窗化的介面,故暫不考慮。GTK+ 一脫離 Unix-like 平台感覺就渾身不對勁……接下來想到 wxWidgets,當初使用的印象並沒有特別好,這時才回想起有許多專案棄 wxWidgets 而就 Qt - 怎麼忘了還有 Qt 這玩意?

Qt 是個使用 C++ 語言的跨平台 framework,過去 DR 對它沒什麼感覺,但現在聲勢似乎已不同以往(尤其它的背後大廠現在是 Nokia)。DR 發現其工具鏈已跳脫雜魚般的組合,官方就有提供完整的 SDK 和 IDE,也就是 Qt Creator,於是 DR 就下載下來、從無到有玩玩看。

首先 Qt Creator 長得很像 Eclipse,所以可能很適合大型專案的處理(這個論點來自於 Eclipse 在業界中算常用的),至於對 Qt 新手的上手度,以 DR 的試用經驗覺得還蠻容易投入的,綜合而言,它應該是個繁簡皆宜的開發環境。

經過一些撰寫嘗試和資訊理解去 Qt 後,簡而言之 DR 現在的評價是:它很好用、實用、富競爭力。一個成功的 framework 就是應該要好用、並且符合使用者需求,而 Qt 在這兩點所做的努力是可以感受出來的。



11/12/2009

mod_security-2.5.10 套件更新之問題排解

上週日(11/08)一整天 DR 的網站(Fedora 10)都無法順利連結,而前因是 DR 在前一日、也就是週六做例行的套件更新以及自動關機程序,隔天出門前將伺服器開機後走人,後來發現網站連不上,等到晚上回家後才發現 httpd 因為 mod_secuity 模組的關係無法啟動。查看錯誤訊息是無法載入設定檔案,於是去檢查設定檔所在的目錄,發覺路徑不對,就調整了一下,但檔案也有缺,所以就想上網查清楚到底怎麼回事,才發現是套件出了包:

https://bugzilla.redhat.com/show_bug.cgi?id=533124


只要把套件從 2.5.10-1 更換成 2.5.10-2 即可,不過在那當下 yum 更新還抓不到最新的套件,DR 只好從這裡抓下來解決:

http://koji.fedoraproject.org/koji/buildinfo?buildID=140180

更新之後,httpd 可以啟動了,然而新的問題是 DR 網站裡一個叫做「document.gif」的圖檔被擋住了,查看 error.log 發現又是 mod_secuity 所為:

[Thu Nov 12 00:26:05 2009] [error] [client 61.64.173.115] ModSecurity: Warning. Operator GE matched 5 at TX:anomaly_score. [file "/etc/httpd/modsecurity.d/base_rules/modsecurity_crs_60_correlation.conf"] [line "41"] [msg "Transactional Anomaly Score (score 20): Detects very basic XSS probings"] [hostname "darkranger.no-ip.org"] [uri "/image/document.gif"] [unique_id "SvrlnX8AAAEAAC0TRNwAAAAA"]

查了一下什麼是 XSS,原來就是傳說中的「跨網站指令碼攻擊」,但是這個圖檔非常單純,憑什麼擋下來?所以 DR 做了點實驗,把 document.gif 重新命名為 document2.gif,竟然就過了,這規則也太腦殘了吧?然而 DR 的網頁都是手工的 HTML,為了一條有問題的規則動輒挖出所有網頁改內容,儘管用批次處理做得到卻不太應該,應該還是要從規則著手才是。

於是把 modsecurity_crs_60_correlation.conf 裡頭那行規則註解掉,再將 httpd reload,log 雖然沒訊息了,但圖檔還是被擋,這時 DR 陷入了極大的困惑和不解,並且驚覺自己對 mod_secuity 的設計非常非常的不熟!接下來 DR 查了點文件,認為 modsecurity_crs_60_correlation.conf 大概只是處理 log 的輸出,真正的抵擋規則在別的檔案,直接按字面上檢查 modsecurity_crs_41_xss_attacks.conf 卻看不出個所以然。只好使出殺手鐧,設定檔一個個給 httpd 載進去試,看是載了哪個檔案後被擋下來。然而最後一路到 modsecurity_crs_49_enforcement.conf 才擋下來,而裡頭的規則只是按分數執行抵擋結果而已,並沒有判定 XSS 攻擊的部份。顯然各個設定檔有交互參照性,試到這裡就夠了,還是有請專業吧。

最後 DR 把問題丟到 Core Rule Set 的 mailing list,得到以下的回覆:其實要檢查的是 modsec_audit.log,裡頭可以找到究竟是哪裡的規則把它擋下來,於是 DR 參照 log,鎖定 modsecurity_crs_41_phpids_filters.conf 這個檔案,將裡頭的一條規則註解掉解決,在還沒搞清楚如何撰寫規則前就先這樣處理了。

補充資料,以 mod_security 的中文文件來說,以下這篇是 DR 目前為止找到最「好看」的:

http://support.oss.org.tw/wiki/index.php/ModSecurity

11/04/2009

Panda USB Vaccine 與 Removable Malware Removal v1.6


最近兩週 DR 又稍微研究了一下隨身碟防毒的相關工具與方案,首先是 gaptx 的 usbprotector(勿跟 Wow! USB Protector 搞混),不過這工具不太 OK……然後是知名防毒軟體廠商 Panda Security 的 USB Vaccine(疫苗),這個工具就比較有趣,首先它兼具系統和隨身碟的免疫方法,系統的部份由於 DR 先前就整理過可行的免疫方法(針對 Autorun),詳情可參考此文章,因此該工具對於系統的免疫功能就暫不研究。

DR 有興趣的是:它怎麼做到對於隨身碟本身的免疫?於是就安裝了 Panda USB Vaccine,然後插入一支隨身碟給它用用看。只見它在隨身碟裡放入一個隱藏的 autorun.inf - 這乍看之下跟網路上流傳的那些腦殘方法相差無幾,然而 DR 馬上發現這個檔案無法被開啟、被刪除、或者重新命名,無論是用 explorer、命令行介面還是其它工具皆無法,意指這個 autorun.inf 完全無法被 Windows 讀取,這就非常有趣了。

接下來 DR 免不其然的要確認:這個狀況是否完全針對 Windows,還是其它作業系統也是如此?於是把隨身碟拿到 Linux 底下開啟,有趣的是這個 autorun.inf 在 Linux 底下要殺要剮非常容易,還可以直接打開來看裡頭有什麼,但也發現檔案本身並無任何異狀。究竟為何在不同作業系統有不同的存取狀況?又是如何辦到的?

這時 DR 回想起來 Panda USB Vaccine 在安裝時有詢問是否選擇 NTFS 支援(beta),而當時是沒有勾選的,於是 DR 便把隨身碟從 FAT 格式化為 NTFS,再執行看看,果然它就沒有辦法進行免疫動作了。這顯示 Panda USB Vaccine 的免疫功能是從檔案系統層著手的,DR 在網路上的進一步搜尋也更說明了這點,雖然這並未解釋為何在不同作業系統(更精確的講是不同的檔案系統驅動)有不同狀況,並且既然 Linux 不受影響,那麼一個延伸問題是:這個方案算是合理使用,或者其實是鑽 Windows 的設計缺失?

若先不討論這些技術議題,就防治評價而言,建立完全無法讀取的 autorun.inf 算是蠻有效的防禦方案,因為既然無法開啟,那麼裡頭就算塞了 Autorun 指令也無法被 Windows 執行,並且除非更動檔案系統,否則病毒也沒有能力去覆蓋它。


那、那跟 DR 自製的 Removable Malware Removal 有什麼關係?由於 r-m-removal 預設是逢隱藏 autorun.inf 必刪,而 DR 評估了一下,既然有這樣「防毒式」的 autorun.inf 存在, 那麼程式有必要加些判定讓使用者能夠分辨是否具有威脅(何況這種 autorun.inf 還砍不掉)。於是 DR 在 1.6 版加了一段簡單的開檔程式,成功開啟就刪除,而無法開啟就屬於防毒式的 autorun.inf,再回報給使用者。

不過 r-m-removal v1.6 並不只是改了上述部份而已,還有以下改進:

1. 移除逢隱藏 *.inf 檔案必刪的規則,現在只處理隱藏 autorun.inf,這樣比較符合現實狀況。

2. 檔案掃描現在會將目錄直接排除,避免一些擁有「副檔名」的目錄被當成檔案來處理。

3. 發現一些無用的程式碼順勢清理掉。

基本上 v1.6 並不屬於安全性更新,而是功能更新,v1.5 並無可能導致病毒被放行的規則紕漏。任何建議歡迎提供給 DR。

9/07/2009

三號機已從 Fedora 9 升級為 Fedora 10

三號機(也就是 DR 的個人網站伺服器)原本打算從 Fedora 9 升級到 Fedora 11,然而上網查了一下發現兩個版本之間的不相容性極高(主要是因為 rpm 套件管理工具的改版),於是為求慎重,就先升級到 Fedora 10,日後的升級則再看著辦。其實三號機所提供的服務非常簡單、單純,所以要直接重灌新系統也並不困難,只是若能使用 yum 直接升級當然也較方便,相關的升級資訊可參考:

http://fedoraproject.org/wiki/YumUpgradeFaq

8/27/2009

Linux 無法順利連 ADSL 之另解

網路討論區上,總還是三不五時會有些使用者反應:使用 Linux 連 ADSL 時,出現含有「/sbin/adsl-start」、「Terminated」、「/dev/null」這類字串所組成的錯誤訊息,並且無法連線。而遇到這類問題,會想到的原因通常是 ADSL 連線設定有誤、或者網路卡(驅動)有問題。但 DR 今天卻意外挖掘出一個新的原因(以及解法)……

話說 DR 二號機上的 Linux(Fedora),其實也有著相同的問題,連 ADSL 時會出現前文所述的錯誤訊息,但 DR 之所以不太在乎的原因是因為雖然它連第一次會出錯,但連第二次卻又可以連上,並且同樣在二號機上的 Windows 連 ADSL 就完全沒問題,因此既然它終究還是可以連線,DR 也就沒太放在心上。不過就在今天,DR 因為整理機器的關係,將二、三號機的線路對調,竟然發現狀況也跟著對調了,大驚之餘把網路線和 switch 接孔交叉測試,才發現原來改插另一個 switch 接孔就解決了。

所以若有人有類似的狀況,不妨將線材或串接設備測試一下,也許可以解決問題。

4/17/2009

Fedora 10 初用心得


一定有人會覺得:都已經出到 Fedora 11 beta 了,怎麼現在才貼個 Fedora 10 初用心得?呃,簡而言之就是 DR 沒有那麼閒,可以每推出一個新版本就馬上裝起來玩,最近才剛把二號機從 Fedora 8 換成 Fedora 10。而以下就是經過重點篩選的心得:

1. NetworkManager
NetworkManager 是個注重桌面體驗的連線設定工具,原先 DR 以為它不過就是用來協助無線網路設置的工具,然而實際上它包辦了所有網路介面的設定和管理。由於 NetworkManager 在 Fedora 10 上預設是啟用的,於是 DR 便嘗試用 NetworkManager 進行 ADSL 和區域網路的連線。但卻發現它沒有辦法同時啟用 ADSL 和為網路卡指定 Private IP,所造成的結果是若連結網際網路,則區域網路不能通,反之亦然。意指 NetworkManager 一次只容許一個網路介面進行連線,這對單純使用 DHCP 或無線網路的使用者來說固然簡便,但對網路設置有進一步需要的人卻是大麻煩。因此 DR 決定繼續用傳統的方式設定網路。

結論:關閉

2. SELinux
SELinux 這個安全強化模組絕對不是什麼新玩意,雖然關閉 SELinux 是 DR 過去的習慣,但因為這次 Fedora 10 在 firstboot 的程序時,並沒有提供可對 SELinux 進行啟用或關閉的選項,另外再加上 DR 最近在架設伺服器時,也是有啟用 SELinux 的,於是就決定試試看以桌面使用者的角度來體驗 SELinux……最終的結果只能說:對於桌面使用者而言,DR 仍舊認為啟用 SELinux 是缺乏意義甚至會徒增困擾的。一來它對於桌面使用沒有實質的安全影響,二來在沒有實質安全影響的情況下,使用者還得面對它一狗票的輸出訊息,或者沒有必要的抵擋。

結論:還是把它關了吧

3. LXDE
LXDE 是嶄新的輕省桌面環境專案,就像 Xfce 一樣,但它比 Xfce 更吸引 DR 的注意。於是 DR 除了預設的 GNOME 桌面環境外,還裝了 Fedora 10 所提供的 LXDE,確實外觀亮眼、效能也不錯。然而相對應的問題是 bug 和功能性,LXDE 沒有虛擬桌面著實讓 DR 很不習慣,因為 DR 相當習於用虛擬桌面去分配工作視窗。另外,檔案瀏覽是很基本且相當要求穩定性的功能,LXDE 所附的 PCMan File Manager 還是有點 bug,在基本的工作上出現 bug 總是會令人困擾。由於 DR 的硬體配備還算 OK,所以其實不太需要去要求所謂的輕省,因此還是換回了 GNOME 桌面。總而言之,LXDE 是個尚在開發階段的專案,無論是 PCManFM 還是整個 LXDE,DR 都對其方向非常推崇且支持。

結論:移除

4. KompoZer
KompoZer 不是 Fedora 裡的玩意,它是 DR 用來編寫網頁的軟體,之所以會提到它是因為 DR 發現它在 Fedora 10 底下不能跑了。一開始以為不過是 32bit 軟體在 64bit 系統上運作的問題,但幾個 32bit 的函式庫裝上去之後,雖然錯誤訊息沒了,軟體卻還是沒反應。索性就用 Wine 去跑 Windows 版的 KompoZer,但用著用著覺得實在是太 buggy 了,最後抓 KompoZer 的原始碼自己編譯才解決問題。

結論:自行編譯

1/17/2009

Norton Removal Tool

Norton Removal Tool 是資安大廠 Symantec 所釋出的一款移除工具,用來移除惡意軟體嗎?不,是用來幹掉他們自家的軟體……

至於為什麼 DR 會提到這款工具呢?故事是這樣的,話說 DR 最近接到一台灌了 Windows Vista 的筆電,症狀是「不能上網」,於是 DR 檢查了一下,首先網路硬體應該沒有問題,可以順利撥上線,但網路瀏覽器、即時通訊都處於無法順利連線的狀況 - 這就蠻符合惡意軟體的特徵了。這台筆電可以看得出來原本灌了 Symantec 的某款防毒軟體,但又被移除掉,只留下了些許可見的「程式殘渣」(找不到其它形容詞……),於是 DR 灌了小紅傘(Avira AntiVir),並且搭配其它惡意軟體掃描工具進行清理。然而整個掃描下來只有一個結論:這台筆電乾淨到爆,一丁點惡意軟體的痕跡都沒有。雖然找不到兇手,但症狀總還是要處理吧,於是 DR 就開始用 Windows 的 netsh 工具進行網路設定的復原。結果卻無效,還是不能上網 - 呃,怎能有這事呢?!

DR 花很長的時間左思右想想不出個所以然:首先這台筆電就 DR 的認知來看真的是非常乾淨,並且以 Vista 預設的權限設定而言,要中毒也非易事,再者,DR 還真的沒碰過用 netsh 無法解決的惡意軟體,只好在網路上大量搜尋類似的討論,但都沒有吻合的環境與狀況。找著找著,DR 逐漸迷濛的眼睛突然在討論串中抓到一段字句,提到 Norton 防毒要先砍乾淨,對吼,這不是一開始就看到的嗎?於是 DR 飛快的把本次的標題:Norton Removal Tool 找來用,一切解決,可以上網了……

此時此刻,DR 對這些防毒軟體已經無言了……只想留個筆記,供有需要的人參考。

12/05/2008

您們的聲音,DR 通通都聽見了……

最近待辦事項越積越多,DR 決定開一張列表,以此說明 DR 並沒有忘記這些事情,下列人士以英文字母作為代號。若您記得有跟 DR 約定過任何事情,而下列事項卻似乎沒有提到,那麼請再一次提醒 DR,謝謝!

M:「硬碟資料什麼時候救得完啊?」

C:「什麼時候幫我裝新硬碟?」

J:「什麼時候來看我家電腦?」、「影片什麼時候做好?」

B:「程式什麼時候寫好?」

G:「劇本什麼時候寫好?」

Q:「那台主機搞好了沒?」

F:「表格什麼時候會打好?」

D:「Avira AntiVir for Linux 的 How-To 什麼時候寫好?」

針對以上事項,DR 的統一回覆是:一切請等 12/7 講道過後,之後 DR 會按重要性以及時效性排定優先次序並依序處理。不過別忘了,DR 自己還有許多課堂報告得交啊……

11/22/2008

Tribes 2 Alternate Master Server

前幾天 DR 心血來潮,想說玩一下 Tribes 2,遊戲帳號卻無法登入,這才發現……話說 Sierra(現在的 Vivendi Games)決定關閉(也就是停止支援)旗下 20 款舊遊戲的 master server,以下網頁有完整的已停止支援遊戲列表:

http://forums.vgames.com/ann.jspa?annID=332

而其中也包含了 DR 最愛的 Tribes 2……

關閉遊戲的 master server 就像 Blizzard 把 Battle.net 給關了一樣,玩家將無法經由 Internet 進行遊戲連線,這可是非常嚴重的問題……因此有玩家決定自行架設 Tribes 2 的 master server,並利用 Tribes 2 本身的 script 撰寫功能改寫了遊戲的通訊協定(真沒想到,Tribes 2 的 scripting 竟然拯救了它的延續性),讓 server 與 client 可以利用非官方的 master server 進行溝通。玩家(client)只需要下載 AlternateMasterSupport.vl2 並放置到遊戲的 base 目錄裡(Windows/Linux 皆是)再進入遊戲的區域網路模式就可連結至非官方的 master server 並進行搜尋。詳細資訊可參考:

http://t2.plugh.us/

另外,既然官方已停止 Tribes 2 的連線支援,而非官方的 master server 既不會也無能力進行(正版)帳號驗證,那麼它就可以算是一種「abandonware」了,因此光明正大的把它抓下來玩吧!網路上已有提供下載:

Windows:
http://www.ewo.tergen.net/
Linux:
http://t2.giantfriend.com/

最近上網玩了一下 Tirbes 2 的「rabbit」模式,真的還是好好玩……

9/26/2008

Fedora 8/9 套件金鑰更換

在過去這段時日裡,應該有不少 Fedora 8/9 的使用者發現自己的系統搜尋不到套件更新,這是因為部份的 Fedora 更新伺服器於8月22日被發現遭到非法登入,因此更新服務全面「下架」(這詞最近好常用……)檢查。雖然經過一番檢查後並未發現遭破壞或被殖入惡意程式的跡象,但為求保險,Fedora Project 決定發佈新的套件金鑰,至於舊版金鑰就會無法獲得更新,以防止使用者下載到有心人所散佈的惡意程式。安裝新版金鑰的方法很簡單,只要使用 rpm 指令安裝下列套件即可:

Fedora 8:
rpm -Uvh http://kojipkgs.fedoraproject.org/packages/fedora-release/8/6.transition/data/signed/4f2a6fd2/noarch/fedora-release-8-6.transition.noarch.rpm

Fedora 9:
rpm -Uvh http://kojipkgs.fedoraproject.org/packages/fedora-release/9/5.transition/data/signed/4f2a6fd2/noarch/fedora-release-9-5.transition.noarch.rpm

安裝完後,應該就可以順利下載更新了,詳情或其它問題請參閱 Fedora Project:
https://fedoraproject.org/wiki/Enabling_new_signing_key

9/11/2008

關於 NetworkManager 在 Fedora 8 x86_64 上更新的錯誤

如果在 Fedora 8 x86_64 上更新 NetworkManager 時出現像以下的錯誤:

ERROR with rpm_check_debug vs depsolve:

Package NetworkManager conflicts with NetworkManager-vpnc < 1:0.7.0-0.7.7.svn3549.
Package NetworkManager conflicts with NetworkManager-openvpn < 1:0.7.0-9.svn3549.
Package NetworkManager needs NetworkManager-glib = 1:0.7.0-0.6.7.svn3370.fc8, this is not available.
Package NetworkManager needs NetworkManager-glib = 1:0.7.0-0.6.7.svn3370.fc8, this is not available.

這是因為 NetworkManager 已經停止在 x86_64 套件庫中更新 i386 的套件,而 x86_64 版本的 Fedora 8 預設會一併安裝(更新)這兩種架構的套件。至於最簡單的解決辦法是先將 i386 的
NetworkManager 整個移除掉:

# yum remove
NetworkManager.i386

只移除 i386 的套件對於 x86_64 的系統應不會造成問題,然後再執行更新即可:

# yum update
NetworkManager

參考連結:
http://marc.info/?l=fedora-list&m=121683476925642&w=2

7/10/2008

KB951748 與 ZoneAlarm 防火牆

今天 DR 在外頭時接到老哥一通電話,說家裡 ADSL 可以連線,但瀏覽器等軟體卻無法順利連結。回家一看,還真的是這樣的狀況,而且一號機和二號機都有相同狀況。由於 DR 最近幾天(預計未來幾天也是)因為忙碌的關係,腦袋昏亂,一開始是忽略了 Linux 伺服器連線完全正常這個事實,等到把矛頭指向 Windows 上時,又胡思亂想的思考可能潛藏的惡意軟體。翻查了老半天,索性點開 ZoneAlarm 看看,竟然發現有大規模的連線抵擋動作,這時心想該不會是莫名其妙的瘋狂 DoS 攻擊吧?這怎麼可能?!不過點開詳細訊息一看,怪怪,擋的都是頗為正常的連線啊。於是將 ZoneAlarm 關閉,發現關閉後網路一切正常,DR 才想起有可能是昨晚 Windows 的更新(KB951748)導致 ZoneAlarm 發瘋了,而目前 DR 是將 ZoneAlarm 的安全等級從「高」設為「中」來解決這個問題,進一步的資訊可參閱 SecurityFocus 網站:
http://www.securityfocus.com/archive/1/494108

幸好 DR 只有在自家的電腦上裝 ZoneAlarm,不然 DR 可能就得跑到許多人家去處理這個問題……