2014年1月28日 星期二

D-LINK DIR-632 刷 DD-WRT

D-Link DIR 632

最近持續惡搞ing,所以敗了一台 D-LINK DIR-632 ,理由不是他有 8 ports ,而是單純查 DD-WRT 有 supported 的關係 XD 且看在無線範圍有 50m 所以就用了這台。

不過,下載的韌體卻無法刷機,稍微 google 了一下,發現只要修改一個 byte 即可

$ vim factory-to-ddwrt_NA.bin

接著按 g 再按 a ,就可以切到檔尾,把 1 改成 2 即可:

A101-AR7242-RT-100324-01 => A101-AR7242-RT-100324-02

[Linux] 架設 VPN Server (PPTP/IPSEC/L2TP) @ Ubuntu 12.04

研究上需要架設一台 VPN,於是架了 PPTP 後,也順便把 IPSEC、L2TP 補齊。流程:

安裝需要的軟體:

$ sudo apt-get install pptpd openswan xl2tpd ppp

PPTP:

$ sudo vim /etc/pptpd.conf
# (Recommended)
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245

$ sudo vim /etc/ppp/pptpd-options
# …
ms-dns 8.8.8.8
# …
logfile /var/log/pptpd.log

$ sudo touch /var/log/pptpd.log

$ sudo vim /etc/ppp/chap-secrets
# PPTP
username pptpd password *
# L2TP
username l2tpd password *

其中 username, password 都是明碼


IPSEC/L2TP:

$ sudo su
$ echo "net.ipv4.ip_forward = 1" | tee -a /etc/sysctl.conf
$ echo "net.ipv4.conf.all.accept_redirects = 0" | tee -a /etc/sysctl.conf
$ echo "net.ipv4.conf.all.send_redirects = 0" | tee -a /etc/sysctl.conf
$ for vpn in /proc/sys/net/ipv4/conf/*; do echo 0 > $vpn/accept_redirects; echo 0 > $vpn/send_redirects; done
$ sysctl -p


$ sudo vim /etc/rc.local
for vpn in /proc/sys/net/ipv4/conf/*; do echo 0 > $vpn/accept_redirects; echo 0 > $vpn/send_redirects; done
iptables --table nat --append POSTROUTING --jump MASQUERADE


$ sudo vim /etc/ipsec.conf
conn L2TP-PSK-NAT
    rightsubnet=vhost:%priv
    also=L2TP-PSK-noNAT

conn L2TP-PSK-noNAT
    authby=secret
    pfs=no
    auto=add
    keyingtries=3
    rekey=no
    ikelifetime=8h
    keylife=1h
    type=transport
    left=SERVER_IP
    leftprotoport=17/1701
    right=%any
    rightprotoport=17/%any


$ sudo vim /etc/ipsec.secrets
SERVER_IP  %any:  PSK "L2TP_PRIVATE_KEY"


$ sudo vim /etc/xl2tpd/xl2tpd.conf
[global]
ipsec saref = yes

[lns default]
ip range = 10.1.2.2-10.1.2.255
local ip = 10.1.2.1
;require chap = yes
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes


$ sudo vim /etc/ppp/options.xl2tpd
require-mschap-v2
ms-dns 8.8.8.8
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4


重啟相關服務:

$ sudo service pptpd restart
Restarting PPTP:
Stopping PPTP: pptpd.
Starting PPTP Daemon: pptpd.

$ sudo service ipsec restart
ipsec_setup: Stopping Openswan IPsec...
ipsec_setup: Starting Openswan IPsec 2.6.37...
ipsec_setup: No KLIPS support found while requested, desperately falling back to netkey
ipsec_setup: NETKEY support found. Use protostack=netkey in /etc/ipsec.conf to avoid attempts to use KLIPS. Attempting to continue with NETKEY

$ sudo service xl2tpd restart
Restarting xl2tpd: xl2tpd.


服務驗證:

$ sudo ipsec verify
Checking your system to see if IPsec got installed and started correctly:
Version check and ipsec on-path                                 [OK]
Linux Openswan U2.6.37/K3.2.0-58-generic (netkey)
Checking for IPsec support in kernel                            [OK]
 SAref kernel support                                           [N/A]
 NETKEY:  Testing XFRM related proc values                      [OK]
        [OK]
        [OK]
Checking that pluto is running                                  [OK]
 Pluto listening for IKE on udp 500                             [OK]
 Pluto listening for NAT-T on udp 4500                          [OK]
Two or more interfaces found, checking IP forwarding            [OK]
Checking NAT and MASQUERADEing                                  [OK]
Checking for 'ip' command                                       [OK]
Checking /bin/sh is not /bin/dash                               [WARNING]
Checking for 'iptables' command                                 [OK]
Opportunistic Encryption Support                                [DISABLED]

[OSX] 使用 Mac OS X 內建 Mail app 收信筆記(UTF-8, Auto bcc) @ Mac 10.9

約莫用了快一個月收信了,其中 mail server 是 Microsoft Exchange 系統,有一些筆記:

自動密件自己(auto bcc):

新增:
$ defaults write com.apple.mail UserHeaders "{'Bcc'='myemail@domain.local’;}”


顯示:
$ defaults read com.apple.mail UserHeaders
{
    Bcc = "myemail@domain.local";
}

刪除:
$ defaults delete com.apple.mail UserHeaders



強制 UTF-8 編碼:

由於其他人常用 Outlook 收信,會發現他們的 outlook 無法判斷編碼(但 Webmail 顯示正常),解法就是在信件內容加上 UTF-8 特殊符號即可,例如擺在簽名檔等:

✉ : email@local.com

2014年1月26日 星期日

[OSX] 使用 ffmpeg 將 mp4 list 依序串接起來 (ffmpeg concat) @ Mac OS X 10.9

最近研究了一下對岸的影音播放,發現有的服務實作時,將一部短片以固定時間進行切割,這樣在服務眾人或是走 P2P 時,可以很方便進行分流,然而,若要把它弄成一個檔案,那就得花點功夫了,好家在用 ffmpeg 就可以搞定囉:How to concatenate (join, merge) media files

以 mp4 為例:

$ ffmpeg -i file1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts '/tmp/tmp1'
$ ffmpeg -i file2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts '/tmp/tmp2'
$ ffmpeg -i "concat:/tmp/tmp1|/tmp/tmp2" -c copy -bsf:a aac_adtstoasc output.mp4


接著,嫌太慢就寫個 script 來處理 XDD

$ python ffmpeg-concat-mp4-files.py --files file1.mp4 file2.mp4 --output out.mp4
$ python ffmpeg-concat-mp4-files.py --m3u /tmp/m3u.list --output out.mp4


其中 m3u 是支援 http 的描述,也就是會把網路上的東西用 wget 下載回 tmp 區。因此 ffmpeg-concat-mp4-files.py 需要有 ffmpeg 跟 wget 指令才能。

2014年1月25日 星期六

[Firefox] 把玩 Firefox 擴充套件 - 以 youku_enable_fx 為例

這周被派去研究如何取得對岸影片等問題,解法不就 Proxy、VPN 等,過程中有看到一個很特別的套件:lonelyeagle / youku_enable_fx ,這是 Firefox 擴充套件。

說到 Firefox 嘛,對我而言,很妙地也接近"退役"階段,大概我離開前端開發好一陣子,除了不需用 firebug 外,連現況 Google Chrome 的開發者工具已經非常夠用,所以 Firefox 就接近被我當作"測試用途"的瀏覽器,包含 cookie、history 都設定成不儲存,十分方便。

研究了一下 youku_enable_fx 的做法,其實概念就兩點:

  • 對特定 url requests 攔截
  • 特定 requests 導向指定的 proxy server

如此,就可能巧妙地"欣賞"對岸鎖 IP 的影片了。

至於製作 Firefox extension 的部分,這個文件寫的滿清楚的:如何製作 Firefox 擴充套件。因此,只需把 lonelyeagle / youku_enable_fx 取出後,進行 zip 壓縮即可。

$ cd /tmp
$ git clone https://github.com/lonelyeagle/youku_enable_fx.git
$ cd youku_enable_fx

$ zip -r youku_enable_fx.xpi install.rdf chrome.manifest defaults/* chrome/*
  adding: install.rdf (deflated 51%)
  adding: chrome.manifest (deflated 52%)
  adding: defaults/preferences/ (stored 0%)
  adding: defaults/preferences/prefs.js (deflated 50%)
  adding: chrome/content/ (stored 0%)
  adding: chrome/content/ff-overlay.js (deflated 64%)
  adding: chrome/content/ff-overlay.xul (deflated 46%)
  adding: chrome/locale/ (stored 0%)
  adding: chrome/locale/en-US/ (stored 0%)
  adding: chrome/locale/en-US/overlay.dtd (deflated 62%)
  adding: chrome/locale/en-US/overlay.properties (deflated 25%)
  adding: chrome/skin/ (stored 0%)
  adding: chrome/skin/overlay.css (deflated 57%)
  adding: chrome/skin/unblockPlayer.png (deflated 0%)


產出 youku_enable_fx.xpi 啦,把他拖進 firefox 即可安裝,安裝完記得重啟 firefox 才可以啟用。

enable_youku_fx

安裝完 youku_enable_fx.xpi 後,在調整 proxy 位置:

  • https://github.com/lonelyeagle/youku_enable_fx/raw/master/youku_enable.pac
  • http://yo.uku.im/proxy.pac

如此一來,就可以用了 :P