2012/08/30

COSCUP 記趣




今年是我參加 COSCUP 的第四年、加入志工的第三年,學到新技術也交了不少志同道合的朋友,參加了社群活動真的讓生活改變了不少。

2012/08/13

wget 中文亂碼問題

這幾天為了某事情用 wget 砍站,但因為對方目錄使用中文命名,wget 遇到中文不但網址錯誤,連檔案名稱的文字也變成亂碼。

原因是 wget 對國際語言的支援不夠完整,判斷 URL 中的特殊字元後在轉成檔名儲存,而遇到中文字時轉換會錯誤。目前官方是出的版本沒有辦法使用參數或設定繞過這個問題,但可以透過修改程式碼再重新編譯解決。

先從 GNU Wget 網站上將 source 抓回來。開啟 wget-1.x/src/url.c,找到以下程式片段:
quoted = 0;
   for (p = b; p < e; p++)
     if (FILE_CHAR_TEST (*p, mask) )
       ++quoted;

改成:
quoted = 0;
   for (p = b; p < e; p++)
     if (FILE_CHAR_TEST (*p, mask) && !((*p | 0x0fffffff) == 0xffffffff) )
       ++quoted;

存檔後重新編譯:
$ ./configure
$ make


完成後用剛編譯完成的 wget 來抓檔案:
$ ./wget-1.x/src/wget -np -r http://path.to/your/檔案名稱/


Reference:

wget中文乱码 - 互联网络 - c - Linux - Wget - 自说Me话
http://isayme.com/2011/07/fix-wget-for-zh-cn/


wget中文乱码 | 可可熊的窝
http://cocobear.info/blog/2008/04/19/wget-chinese-encode/

2012/08/02

建立 SSH Tunnel 專用帳號

VPN 有帳號管理功能,但是一些加密方式卻不盡安全,現在找到一個方法能讓使用者能登入 SSH 並使用 tunnel,但是無法使用 shell,僅當作跳板。


建立一個帳號,但將這個帳號的 shell 改為 nologin:
zero:x:1000:1000:zero,,,:/home/zero:/usr/sbin/nologin

這樣一來使用者無法取得 shell 操作、存取任何資料,但仍可以啟用 tunnel:
ssh zero@host.to -N -L 3128:127.0.0.1:3128

-N 意思是不執行任何遠端指令,也不會開 shell。