Recent Articles / Archives

破解 XP 使用者密碼

如果忘記 XP 的登入密碼,以下方法可以不需安裝任何軟件及不用安裝光碟的情況下解決:

1. 在啟動時按 “F8″ 鍵,選擇 “帶命令行的安全模式”。

2. 當出現帶有 Administrator 及其他用戶的選單時,選擇 Administrator 進入命令模式。

3. 如果想恢復密碼的用戶名為 xp_user,而密碼為 new_pass,則輸入以下指令:

net new_user new_pass /add

4. 如果想新增一個帶管理員權限的用戶,例如新用戶名為 new_user,而密碼為 new_pass,則輸入以下指令:

net user new_user new_pass /add
net localgroup administrators new_user /add

5. 重新開機便可以使用新密碼登錄。

March 16, 2010 · Windows 筆記 · Comments (4)

Linux: 將檔案的 Tabs 字元用空白取代

在 Linux 下有一個工具 “expand”,它可以將檔案內所有 tabs 字元轉換為空白字元, 用法如下:

expand input.file > output.file
expand data.txt > output.txt
expand -t 2 data.txt > output.txt

上面第三行的參數 -t 是定義用多少個空白字元取代 tabs。而另一個工具 “unexpand” 則與 “expand” 剛剛相反, 是將空間字元轉換為 tabs 字元。

March 11, 2010 · Linux / BSD 筆記 · No Comments Yet

Ubuntu - Firefox 的 Flash 亂碼問題

在 Google 找了一下,應該是 /etc/fonts/conf.d/49-sansserif.conf 出問題,只要將檔案移除或移到其他地方就可以:

sudo mv /etc/fonts/conf.d/49-sansserif.conf /etc/fonts/conf.d/49-sansserif.conf.bak

輸入以上指令後,只要重新啟動 Firefox,就可以看到問題解決了。

March 5, 2010 · Linux / BSD 筆記 · Comments (1)

vi 方向鍵及 backspace 的問題

在 Ubuntu 上面有時編輯一些設定檔時會直接用 vi 來做,但預設安裝 Ubuntu 後用 vi 開啟檔案,會發覺方向鍵及 backspace 鍵不能使用,解法方法是在家目錄建立 .vimrc 檔案,然後加入以下內容:

set nocompatible
set backspace=2

儲存檔案後離開,下次使用 vi 開啟檔案就可以使用方向鍵及 backspace 了。

March 5, 2010 · Linux / BSD 筆記 · No Comments Yet

Linux: 操作包含特殊字元的檔案

在 Unix 或 Linux 下很多特殊字元也是指令的一部份,例如空格 (” “)、問號 (”?”) 及橫線 (”-”) 等。所以如果檔案名稱包含了一些特殊字元,在操作上便會出現錯誤,例如:

# touch -foo.txt
touch: invalid option — ‘o’
Try `touch –help’ for more information.
# touch –foo.txt
touch: unrecognized option ‘–foo.txt’
Try `touch –help’ for more information.

上面輸入了兩行指令,分別用 touch 建立檔案 “-foo.txt” 及 “–foo.txt”,但同樣發生錯誤。要解決這個問題,只要在指令後面加上兩個橫線 “–” 即可,例如:

# touch — –foo.txt
# touch — -foo.txt

而這個方法同樣可以在其他檔案操作指令使用,例如 cp, mv, rm, rmdir。

以下是 cp 及 mv 的用法:

cp - - ‘-foo.txt’ /path/to/dest
mv - - ‘-foo.txt’ /path/to/dest

February 22, 2010 · Linux / BSD 筆記 · No Comments Yet


使用 PHP GZIP 使網頁提速

GZIP 是一種壓縮技術,是在伺服器上將頁面壓縮,傳到用戶的瀏覽器再解壓。在 PHP 實要 GZIP 壓縮可以這樣做:

PHP:
  1. <?php
  2. if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')){
  3.     ob_start("ob_gzhandler");
  4. }else{
  5.     ob_start();
  6. }
  7. ?>

February 22, 2010 · 程式設計分享 · No Comments Yet

執行 sudo 時電郵通知

sudo 提供了簡單的方法追蹤執行紀錄,其中一項就是當透過 sudo 執行 指令時發送電郵到指定電郵地址,方法如下:

1. 開啟 sudo 的設定檔:
visudo

2. 加入下面兩行:

mailto "admin@localhost"
mail_always on

mailto 後面是設定發送電郵通知的地址。
mail_always 預設是 off,開啟後會在每次執行 sudo 後發出電郵通知。

February 19, 2010 · Linux / BSD 筆記 · No Comments Yet

Iptables 限制每個 ip 連線數

如果在 Linux 下要限制每個 ip 的連線數,可以透過 iptables 實現。詳細指令語法如下:

/sbin/iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT
限制每個 ip 只可以有 3 個 ssh 連線 (預設 ssh 使用 port 22)。

/sbin/iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 -j REJECT --reject-with tcp-reset
只接受每個 ip 20 個 http 連線 (httpd.conf 裡面的 MaxClients 預設是 60)。
要留意的是,這個設定可能會把 proxy servers 阻隔,因為每個 proxy servers 可能會建立大量的連線。

Skip proxy server IP 1.2.3.4 from this kind of limitations:

/sbin/iptables -A INPUT -p tcp --syn --dport 80 -d ! 1.2.3.4 -m connlimit --connlimit-above 20 -j REJECT --reject-with tcp-reset
這句的作用跟上面語法一樣,只是把已知的 proxy server (1.2.3.4) 給開通,避免阻隔 proxy servers 的連線。

In this example, limit the parallel http requests to 20 per class C sized network (24 bit netmask)

/sbin/iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 --connlimit-mask 24 -j REJECT --reject-with tcp-reset
這個是限制同一個 class C 網絡同時建立 20 個連線。

如果想把在指定時間內建立過多連線的 ip 阻隔,這便要編輯 iptables 的 shell script。
以下例子會阻隔在 100 秒內建立多於 10 個 http 連線的 ip

#!/bin/bash
IPT=/sbin/iptables
# Max connection in seconds
SECONDS=100
# Max connections per IP
BLOCKCOUNT=10
# ....
# ..
# default action can be DROP or REJECT
DACTION="DROP"
$IPT -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
$IPT -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds ${SECONDS} --hitcount ${BLOCKCOUNT} -j ${DACTION}
# ....
# ..

要儲存 iptables 的修改可以查看 iptables-save 的 man page,在 redhat 下是用以下指令:
service iptables save

February 18, 2010 · Linux / BSD 筆記 · No Comments Yet

ProFTPd 登入援慢問題

在安裝 ProFTPd 後,會發覺登入時非常援慢,但只要登入成功後,速度就會變得很暢順。

造成這個問題的原因是 ProFTPd 預設在登入時會做「反查」的動作,解決方法是將 ProFTPd 設定為不做「反查」。方法如下:

1. 開啟 proftpd.conf,一般上檔案位置會是 /etc/proftpd.conf 或 /usr/local/etc/proftpd.conf

2. 加入以下兩行:

UseReverseDNS off
IdentLookups off

3. 重新啟動 ProFTPd。

February 10, 2010 · Linux / BSD 筆記 · No Comments Yet

Linux 系統管理電子書

The Free Technology Academy (FTA) 釋出一本免費電子書 "The GNU/Linux operating system",內容主要圍繞系統管理,例如如何安裝及設定多種不同的伺服器及優化系統等。

官方網站介紹:

The GNU/Linux systems have reached an important level of maturity, allowing to integrate them in almost any kind of work environment, from a desktop PC to the sever facilities of a big company.

In the module called "The GNU/Linux operating system", the main contents are related with system administration. This book is the main documentation for the module.

書本資料:

* Authors: Remo Suppi Boldrito, Josep Jorba Esteve
* Coordinator: Josep Jorba Esteve
* Licenses: GNU Free Documentation License, Creative Commons Attribute ShareAlike License
* Information: 545 Pages; 18.8 Mb
* Download PDF version

February 9, 2010 · Linux / BSD 筆記 · No Comments Yet


PHP 免費線上電子書 - Practical PHP Programming

Practical PHP Programming 是 PHP 免費線上電子書,比較適合對 PHP 有基礎認識的朋友,以下為電子書目錄:

1. Preface
2. Introducing PHP
3. Simple variables and operators
4. Functions
5. Arrays
6. Objects
7. HTML Forms
8. Files
9. Databases
10. Cookies and Sessions
11. Multimedia
12. XML & XSLT
13. Output Buffering
14. Java and COM
15. Networks
16. Miscellaneous topics
17. Security concerns
18. Performance
19. Writing PHP
20. Writing extensions
21. Alternative PHP uses
22. Practical PHP
23. Bringing it to a close
24. Answers to Exercises
25. The future of PHP
26. Glossary

February 9, 2010 · 程式設計分享 · No Comments Yet

netstat 檢查不尋常連線

netstat 是一個十分好用的網絡管理工具,而其中一個用途是查看不尋常連線,例如當一個 IP 發送大量連線到伺服器,那麼伺服器很大機會是否遭受 DoS 或 DDoS 攻擊。

以下是一些實用的 netstat 語法,可以檢查主機的連線數量:

netstat -na
顯示主機上所有已建立的連線。

netstat -an | grep :80 | sort
顯示所有 port 80 的連線,並把結果排序。

netstat -n -p|grep SYN_REC | wc -l
列出主機上有多少個 SYNC_REC,一般上這個數字應該相當低。

netstat -n -p | grep SYN_REC | sort -u
同樣是列出 SYNC_REC,但不只列出數字,而是將每個 SYNC_REC 的連線列出。

netstat -n -p | grep SYN_REC | awk '{print $5}' | awk -F: '{print $1}'
列出發送 SYNC_REC 的所有 ip 地址。

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
計算每一個 ip 在主機上建立的連線數量。

netstat -anp |grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
列出從 TCP 或 UDP 連線到主機的 ip 的數量。

netstat -ntu | grep ESTAB | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
列出每個 ip 建立的 ESTABLISHED 連線數量。

netstat -plan|grep :80|awk {'print $5'}|cut -d: -f 1|sort|uniq -c|sort -nk 1
列出每個 ip 建立的 port 80 連線數量。

February 9, 2010 · Linux / BSD 筆記 · No Comments Yet

婚禮

2010 年 1 月 23 日是我結婚的大日子,多得一班朋友及家人的幫忙,他們為我們處理大大小小的問題,尤其在酒樓座位安排上面,整天我們兩夫妻也不用操心細節,只要專心影相。

沒有你們的幫忙,結婚當日不會這麼順利,在此再向他們衷心說聲多謝!

January 31, 2010 · 生活隨筆 · No Comments Yet

ASUS RT-N12 + DD-WRT 韌體

用了幾年的的 router 最近有些怪怪的,發生經常 hang 機的情況,升級 firmware 後也是一樣,唯有花錢買過一台。

最後選擇了 ASUS RT-N12,首先是比較喜歡其簡潔的設計,而它使用的晶片是 BCM4716,時脈 300Mhz,4M FLASH + 32MB DDR RAM,連線數量可達 30,000 條。而著名第三方韌體商 DD-WRT 的韌體也支援 RT-N12,升級過程十分順利。

用了幾天後,目前也十分穩定,而且長時間開啟後,機身也沒有過熱的情況,是值得推薦的產品。

官方網頁: http://www.asus.com/product.aspx?P_ID=xq8udon10ZTLU7o2&templete=2
DD-WRT RT-N12: http://www.dd-wrt.com/phpBB2/viewtopic.php?t=62896

January 5, 2010 · 互聯網筆記 · No Comments Yet

Google Public DNS Servers 開放使用

上星期 Google 開放了類似 OpenDNS 的 DNS服務,以下是 DNS 的 IP:

8.8.8.8
8.8.4.4

在 Linux 下如果要改用 Google 的 DNS,只要修改 /etc/resolv.conf 檔案,將原本使用的 DNS 改成以下即可:

nameserver 8.8.8.8
nameserver 8.8.4.4

可能是因為 Google 的用戶群龐大,其 DNS 內的 cache 也較豐富,所以很多時瀏覽網站時,感覺 resolve 的時間也很快,比自己 ISP 的反應更佳。但大家要留意,當使用 Google 的 DNS 時,實際上上網的紀錄 Google 也可以知道,關心私穩方面問題的朋友要留意了。

December 11, 2009 · 互聯網筆記 · No Comments Yet


  Next Page »