MBP 不能安裝 dmg 檔的死循環

這個標題看起來有點冗長, 不過個人覺得還滿貼切的.

我在 Apple 的 MacBook Pro 上, 已經很久都不能用 Safari 下載 dmg 檔來安裝新的軟體了. 不過, 除了 dmg 檔之外的檔案, 倒是可以正常下載沒問題, 所以一度也懷疑過是否與防毒軟體或安全性之類的設定有關? 幾次上網爬文之後, 我發現這是個 “罕見疾病". 偶而看到一個同病相憐的人, 鄉民們總是三緘其口或顧左右而言他, 沒有人能對症下藥.

今天再次遇到這個問題時, 決定仔細看一下設定值是否有問題?畢竟改用 Opera 的時候是可以下載 dmg 的, 問題應該還是出在 Safari 的設定上. 其實, Safari 可以調整的地方還真是少, 滑鼠移來移去也找不出嫌疑犯. 好不容易才僥倖在 “輔助說明" 下面看瞄到 “已安裝的外掛模組" 這個名詞, 才想到或許有點玄機. 點進去之後, 果然看到下載 dmg 的功能原來已經被 igetter 這個 plugin 接管了.

我的解決方式是: 先用 Finder 找到 3 個 igetter 的檔案, 然後把它們全部丟進垃圾桶. 從此以後, Safari 就可以正常 download dmg 檔並且加以安裝了. 看起來這完全是 plugin 相容性的問題. 照理說, 只要到 igetter 的網站更新版本就可以解決. 不過 igetter 的更新檔也是個 dmg 的格式, 這就冏了 – 它是個死循環 (dead lock), 不把 igetter 砍掉還不行. 另一方面, 將它砍掉後, 應該沒有什麼副作用. 那麼, igetter, 我們就這樣掰了吧! 

ARM 的 Trust Zone 小註解

ARM 公司推了一個安全機制叫做 trust zone, 基本上它和一個跨平台的類似規範 Global Platform [1] 差不多. ARM 的基本資料都可以在 ARM 的網站免費下載, 但是進階的資料或是 global platform 的資料都需要註冊後才能取得.

ARM 的 trust zone 共分為三級, 其中最高的一級 tier 3 長這樣. 

圖片來自 http://www.arm.com/products/processors/technologies/trustzone.php

我們可以看到在記憶體的部分, 多數都用 TZMA (trust zone memory adapter) 或是 TZASC (trust zone address space controller)  的褐色方塊隔離起來. 除了 FLASH 這個框框, 被當作是沒有安全顧慮的模組之外 – 比方說使用者在手機上外接的 macro SD 卡. 而每個記憶體又都有自己的規範編號, 比方說 bus 的規範是 PL301, DMA 是 PL330, SDRAM 是 PL340, FLASH 是 PL350 等等.  在 trust zone security white paper [1] 裡面, 還提到 TZASC 是 PL380, GIC (generic interrupt controller) 是 PL390, TZMA 是 BP141 等等.

諸如 PL350 的規格, 裡面似乎都沒有特別強調加密或是保護的機制. 特別需要規範的硬體模組主要就是 TZMA 和 TZAC 了. 其中定址空間可以固定出保密與非保密地址空間的模組 (如 ROM) 以 TZMA 隔離; 保密與非保密資料可能儲存在任意地址空間的模組 (如 RAM) 以 TZASC 隔離.

[ref]

1. http://www.globalplatform.org/

2. Building a Secure System using TrustZone® Technology

Subtitle 時間格式小整理

以前有一陣子需要解字幕檔的問題, 所以稍微看了一下相關的東西. 根據網站上的說法 [1], 至少有這麼多種字幕格式存在.

  • Adobe Encore DVD (*.txt)
  • Advanced SubStation Alpha (*.ass)
  • AQTitle (*.aqt)
  • Captions 32 (*.txt)
  • Captions DAT (*.dat)
  • Captions DAT Text (*.dat)
  • Captions Inc. (*.txt)
  • Cheetah (*.asc)
  • CPC-600 (*.txt)
  • DKS Subtitle Format (*.dks)
  • DVD Junior (*.txt)
  • DVD Subtitle System (*.txt)
  • DVDSubtitle (*.sub)
  • FAB Subtitler (*.txt)
  • IAuthor Script (*.txt)
  • Inscriber CG (*.txt)
  • JACOSub 2.7+ (*.jss; *.js)
  • Karaoke Lyrics LRC (*.lrc)
  • Karaoke Lyrics VKT (*.vkt)
  • KoalaPlayer (*.txt) (equal to one of the variations of TMPlayer)
  • MAC DVD Studio Pro (*.txt)
  • MacSUB (*.scr)
  • MicroDVD (*.sub)
  • MPlayer (*.mpl)
  • MPlayer2 (*.mpl)
  • MPSub (*.sub)
  • OVR Script (*.ovr)
  • Panimator (*.pan)
  • Philips SVCD Designer (*.sub)
  • Phoenix Japanimation Society (*.pjs)
  • Pinnacle Impression (*.txt)
  • PowerDivX (*.psb)
  • PowerPixel (*.txt)
  • QuickTime Text (*.txt)
  • RealTime (*.rt)
  • SAMI Captioning (*.smi)
  • Sasami Script (*.s2k)
  • SBT (*.sbt)
  • Sofni (*.sub)
  • Softitler RTF (*.rtf)
  • SonicDVD Creator (*.sub)
  • Sonic Scenarist (*.sst)
  • Spruce DVDMaestro (*.son)
  • Spruce Subtitle File (*.stl)
  • Stream SubText Player (*.sst)
  • Stream SubText Script (*.ssts)
  • SubCreator 1.x (*.txt)
  • SubRip (*.srt)
  • SubSonic (*.sub)
  • SubStation Alpha (*.ssa)
  • SubViewer 1.0 (*.sub)
  • SubViewer 2.0 (*.sub)
  • TMPlayer (*.txt) (five different variations)
  • Turbo Titler (*.txt)
  • Ulead DVD Workshop 2.0 (*.txt)
  • ViPlay Subtitle File (*.vsf)
  • ZeroG (*.zeg)

想要每個都搞懂, 難度有點高. 當時整理了一小部分就放棄了. 不過今天把它挖出分享給大家. 或許我會有動力把它補到完.

格式名稱 副檔名 格式 說明
txt .txt 02:04:32:The End 起始時間(時:分:秒:毫秒) + 內容
sub

.sub

.txt

{4387}{4433}Bye! {起始時間}{結束時間} + 內容
Subripper srt

45

00:02:52,184 –> 00:02:53,617

慢慢来

順序

起始時間 —> 結束時間 

內容

時間的格式 = 00:00:00,000 (時 :分 : 秒: 毫秒)

SubStation Alpha ssa Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Start or End 的格式 = 0:00:00:00(時:分:秒:百分秒), 注意:小時只有一位數
Advanced SubStation Alpha ass
PSB(Power Divx) psb {0:00:47}{0:00:51}Hello, world!

{起始時間的時:分:秒}{結束時間時:分:秒} + 內容

DVD Subtitle
圖形, 以 run-length 壓縮存在碼流中.
Subtitle ID為 0x20 + 0~31, DVD 可以有 32 個 subtitle [4].

[ref] 

1. http://www.divx-digest.com/software/subtitle_workshop.html

2. http://www.6psp.cn/20100714/ssa-ass字幕格式全解析.html

3. http://www.allsubs.org/

4. http://sam.zoy.org/writings/dvd/subtitles/

TDLS 小註解

此處的 TDLS 是指 Tunneled Direct Link Setup, 中文名稱叫做隧道直接鏈結設置. 

它有什麼用處呢?它能夠讓兩個 WIFI devices 不透過 AP (access point) 就能互傳資料. 畢竟裝置 A 傳給 AP, AP 再傳給裝置 B 這條路徑還是有點長; 如果省掉中間人, 效率就會增加. 這原理跟直銷差不多!   

好!那麼兩個裝置怎麼互相認識對方呢?一般來說, 他們還是需要先上 facebook 交朋友, 透過 AP 當介紹人才行. 此時由 TDLS 的裝置 A 發起 discovery, 再由 AP 牽線找到 TDLS 裝置 B. 裝置 A 可以比較究竟是透過 AP 傳? 還是直接對裝置 B 傳比較有效率?不過, TDLS 裝置 A 也可以跳過 "比較" 這一步, 直接進到下一步 TDLS 設置 (setup).

TDLS 建立 link 時, 由裝置  A 發出訊息給裝置 B (TDLS setup), B 如果接受這個 link, 就會回覆 confirm frame. 雙方加密用的 key 的交換就發生在 setup 的階段. 如果任何一方想要斷線, 可以逕自送出 teardown frame. 萬一裝置間失聯了, 他們也可以把訊息送給 AP 代為轉達.

比較複雜的案例是某個裝置休眠了, 或是他們想切換通訊頻道 (5GHz 切到 2.4GHz 或反之). 若 AP 不希望它的 client 私下透過 TDLS 傳東西, 可以禁用 TDLS. 

若是有了 TDLS, 偷偷攻擊麥當勞裡面坐在旁邊的外行的客人相對就容易多了, 此時還是禁用掉比較不會出事. 客人們想要用 TDLS 分享資料的話, 拿一台手機出來當 AP 就可以自行解決了.

[ref]

1. Wi-Fi CERTIFIED™ TDLS – Wi-Fi Alliance

Bridge 小註解

Bridge 是很常見的名詞, 路上的木橋、石橋、糯米橋, 化學的鹽橋、物理的電橋、連三國都有大喬和小喬, 比較容易搞混的橋是下面這兩種.

第一個 bridge 是網路設備的名稱. 相較於 hub, switch, gateway 都是很常用的名詞, 網路上也有很多文章在介紹. Bridge 這個名詞就很少用多了. 一般根據 OSI 的 L1/L2/L3/L4 來區別 repeater, bridge, router, 和  gateway [ref 2], 照理說大家亮相的機會均等, [ref 2] 甚至說 router 在 1970 年以前也叫做 bridge.

Repeater 只是單純照抄封包給其他人, 又叫做 Hub. Bridge 初次見到某個 MAC address 時會先去問 router 該送哪個 port, 以後就能記住 MAC address 與 port 的對應關係. Bridge 又叫做 switch hub 或是 L2 (level 2) switch.

至於 Router 自己有 routing table, 會看某個 IP 決定往那個 port 送最佳, 又叫做 L3 (level 3) switch, IP switch 或 switch router.

由於 3C 產品不斷 cost down, 個人覺得 repeater 和 bridge 應該都沒有什麼存在的價值了. 現在在網路上搜尋 Hub, 出來的應該都是 USB hub. PCHome 的 10/100 Mbps 5 port switch 才賣 290 NTD. 它能過濾 2K 個 Mac address, 至少是 L2 switch 啦!5 port Gigabit 的 switch 也才賣 649 NTD.

第二個容易混淆的 “bridge" 是虛擬機 – virtual machine (VM) 用的. VM 軟體像是 PC 上的 VMWare 或是 Mac 上的 Parallel, 它們在原有的作業系統中, 又執行另外一個虛擬的電腦. 這個電腦通常也需要網路. 如果希望虛擬機和主機 (host) 在網路上有同樣的地位, VMWare 的網路要設定為 bridge. 此時 VM 和 host 共用 Ethernet 接口, 但各自有一個 MAC address 和 IP address. 這兩個 IP address 會在同一個網段, 比方說都是 172.21.1.X. 

Mac 上的 Parallel 的選項分成共用網路、橋接網路、Host-Only 三個選項, 在它的設定檔裡面, 選虛擬機器 → 配置 → 硬體 → 網路 → 橋接網路 → 默認適配器. 就可以達到 VMWare 中選 bridge 的效果. 如果選 vnic0 (virtual nic 0), 外面的 DHCP server 根本看不到它. Parallel 隨便給它個 10.211.x.x 當 IP 就可以透過 host 的 NAT (network address translation) 上網了. Parallel 對待虛擬機, 仍然是隨便給一個 Mac address 了事, 和 host 不同, 甚至還有 “生成" 的選項可以隨機產生新的値.

[Ref]

1. Connecting Devices – Hub, Repeater, Switch, Bridge, Router, Gateway

2. hub/switch/ip share/router 細部介绍

3. Hubs, Bridges, Switches, Routers and Gateways

4. Hubs, Bridges, Switches, Routers and Gateways