プロセルピナ
Top Internet
Mail
Private
Proxy
Capture
Device
Download Config
and
Words
Online
Help
Online
Home
[BACK]
Top > FileDownload > Macro > Ex: Command > Decompress > Sample (CWS→FWS)

 

 CWS(ZLIB圧縮されたswfファイル) を FWS(非圧縮のswfファイル) に変換
 (Ex:Decompressコマンド)

Macro Top | Variables | Constants | Commands | Ex-Commands  


 

概要


Ex:Decompressコマンドで、ZLIB圧縮されたオブジェクトを非圧縮の状態に展開(解凍)する例として、 Adobeの Flashファイル(swfファイル) を扱う例を示します。

Flashファイルのうち、Magic Word(ファイル先頭の3バイト)が CWS の場合、 ファイルヘッダ以降の部分が ZLIB圧縮されています。
このZLIB圧縮部分を Ex:Decompressコマンド で展開し、非圧縮のswfファイル(Magic Wordが FWS) に変換します。

手順は、ヘッダ(ファイル先頭の8バイト)のうち、ヘッダ先頭の CWS の3バイトを FWS に変更し、 そのヘッダ以降に非圧縮にしたデータを追加するだけです。
8バイトのヘッダのうち後半の4バイトは ヘッダを含めたトータルのファイルサイズが格納されていますが、 これはCWSファイルの場合でも 展開後のサイズで設定されています。
よって、ファイルヘッダのうち、書き換えるのは先頭のMagic Wordの部分だけです (CWS → FWS)。

 

CWS→FWS変換


CWSファイルをFWSに変換する具体的なマクロを示します。
このマクロは パラメータ(input[0]) で CWSファイル(データ部がZLIB圧縮さたswfファイル) を受け取ります。



上記例をファイルにそのまま保存し、実際に動作させて確認することができます。
例えばパラメータに
  C:\Documents and Settings\MyName\Work\cws_sample.swf
というswfファイルを渡してマクロを起動すると、
デスクトップに 非圧縮-cws_sample.swf という非圧縮swfファイルを作成します。

Ex:Decompressコマンドで 圧縮を解除するのは データ部のみなので、
  skip=8
を指定して swfファイルのヘッダ部をスキップしています。
ZLIB圧縮を展開するので
  type="zlib"
を指定します。
圧縮解除された内容を格納するファイルのファイル名は、 パラメータ O:destfile= で指定した文字列変数 str["解凍"] に設定されます。
このファイルの内容は Ex:readBinfileコマンド でバイナリ変数 binl[20] に読み取って、 新しく作成するswfファイルに書き込んでいます。
[BACK]
プロセルピナ