2007-05-06

腦袋裏裝了一點方法論和工具癖 - 1

在 www.gibar.org 網站,由首頁進入後出現的 Gibar 影音動畫,是個 flash。

一般,要擷取網頁中的 flash,會安裝 browser 相對應的 plug-in,或是特定的工具程式。不過,在可能的範圍,盡量以有限的萬用工具來處理絕大多數的需求,會是一個比較好的選擇──只不過,有形的工具減少了,背後無形的知識背景就不能少。


UltraEdit 32 是一個存在多年的工具軟體,基本上,它是個文字編輯器,不過,常被用來作為程式語言的開發工具,透過一些程式語法的外掛定義,它能支援的程式語言,原則上是沒有限制的。


不過,早年在第一次接觸到 UltraEdit 時,卻不是拿來打字,也不是寫程式,而是用來破解遊戲,因為 UltraEdit 也支援 binary 資料的讀取,因此可以不論讀取的檔案究竟是什麼格式,ASCII也好,Binary 也好,是文字也好,是圖片也好,是影音也好,是程式也好… 反正,都不必拘束。


回到擷取網頁中的 flash 影片這件事。

首先,檢視網頁的原始碼(用 UltraEdit 來開啟),在原始碼中找 .swf 的檔案。如果其中有多個 .swf 檔,就要根據網頁的佈局(主要影音放在那個區塊,這時,你需要熟悉 HTML)以及檔案的放置位址(url 中的 folder name)和檔案名稱來猜測要的是那一個檔(雖然聽起來有點複雜,不過對於熟悉的人來說,這不過是 10 秒左右就能判斷出來)。

上圖就是原始碼中找到的 .swf 位置。


找到它了,接著,就用 UltraEdit 32 來擷取下這個 .swf 的 flash 檔吧。

首先,要把 .swf 的絕對位址(含有 http:// 的 url)組合起來,在 UltraEdit 32 中用開啟舊檔的方式,直接指向這個有 http:// 網址,在本例中是「http://www.gibar.org/img/layout10-7.swf」,然後 UltraEdit 就以 binary 的格式把這 .swf 抓下來了,此時,只要直接另存新檔,並且副檔名還是保持 .swf 就完成了。(如下面這張圖)


一般而言,故事應該到此結束,不過,顯然 Channel V 不想讓事情變得這麼容易。

待續~~


腦袋裏裝了一點方法論和工具癖 - 2

在前文中找到的那個 layout10-7.swf 檔,其實只是真正影音內容的外殼,這個 flash 外殼在播放時會引入另一個影音內容檔(此時還不知道它是什麼或實際的檔案位置在那裏)。由於被藏起來了,此時就算是用特定的擷取 flash 動畫的工具軟體都沒解,因為工具軟體依然也只能抓下上述指出的 layout10-7.swf 檔而已。


然而,換個思維還是能找到解的。如果從封包(packet)下手呢?所有透過網路傳遞的資料都被拆解成一包一包的資料封包,不論是寄 e-mail、瀏覽網頁、MSN交談、P2P、FTP或是其它動作,所有傳遞的資料及控制碼,都可在封包中找到。換句話說,layout10-7.swf 在引入外部的影音內容時,這外部影音內容的蛛絲馬跡仍然會在網路底層的封包中顯現出來。


利用 Wireshark 這個工具軟體,在重新操作一次瀏覽該動畫的過程中進行封包錄製,然後再利用 filter 過濾掉非標的的其它封包(這裏用 tcp.port == 80),然後再 search 其中的內容。


在此,找到了,原來他是個 flv 影音檔,檔案位置在「http://www.gibar.org/img/GB-021.flv」。至此真相大白,再利用 UltraEdit 32 做一次前文中的動作,即可擷取下此 flv 影音檔。


附帶一提,影音動畫的播放畫面,也無法直接用一般的影像擷取軟體來取得,需要一點手腳,這裏,就不再述了。


Gibar - 冷靜的瘋狂

無法割捨繁複所帶來的豐盛,

也無法不追求簡潔的流暢。


冷靜與瘋狂,也同樣是兩端的法碼;

在動態平衡中來回擺盪。


Gibar的組合如同5.1杜比音響,

在瘋狂中,我看到一份冷靜。