【資料1】
各種TXT、バイナリ変換方式の比較Sample:307,551ByteのLZH圧縮済みFile
形式 Size(Byte) Size増加率(%) ISH (shift JIS形式) 364,580 118.54 ISH (8bit形式) 392,116 127.50 ISH (non-kana形式) 392,116 127.50 ISH (7bit形式) 427,284 138.93 CODE91 389,100 126.52 BtoA/AtoB 394,363 128.23 DSC 410,068 133.33 BOO 420,863 136.84 Base64 420,915 136.86 HQX 424,673 138.05 UUEncode 430,655 140.03 XXEncode 430,665 140.03 ABE 459,197 149.31 AR7 523,055 170.07 HEX 634,343 206.26
各形式の詳細は、各形式の項と、次項(【資料2】)を参照の事。
【資料2】
各種TXT、バイナリ変換方式の使用文字
以下で文字の場合『〜』『、』と言う記号を使ってますが、これは分かり易い様入れただけの物です。
○ISH
shift JIS 形式 : 漢字・1byte仮名も使う 8bit 形式 : 漢字を使わない non-kana 形式 : 1byte仮名を使わない 7bit 形式 : 漢字・1byte仮名を使わない
:「<<< FileName for MS-DOS ( use ***** ish ) [ ???? lines ] >>>」で開始 「--- FileName (現在の行/????) ---」で終わるのが一般的。
(『*****』は変換形式、『????』は全行数)
:一行78文字
○Base64 (MIME準拠)
文字 : A〜Z、a〜z、0〜9 記号 : +/
:US-ASCII の文字の内の計64個(6bit)を基本に使う。但し、"="を65個目の文字として特殊な操作(変換が区切の中途で終わった時のSpacer役)を示す為に使う。
:一行76文字
○UUEncode
文字 : A〜Z、0〜9 記号 : `!"#$%&'()*+,-./:;<=>?@[\]^_
:計64文字(6bit)を基本に使う。
:「begin ??? FileName」で始まり、「end」で終わるのが一般的 。
(???はUNIX上での属性を示す数字)
:一行61文字
:行頭は「M」
○XXEncode
文字 : A〜Z、a〜z、0〜9 記号 : +-
:計64文字(6bit)を基本に使う。
:「begin ??? FileName」で始まり、「end」で終わるのが一般的 。
(???はUNIX上での属性を示す数字)
:一行61文字
:行頭は「h」
○BinHex
文字 : A〜N、P〜Z、a〜f、h〜m、p、q、r、0〜6、8、9 記号 : !"#$%&'()*+,@-`[
:計64文字(6bit)を基本に使う。
:「(This file must be converted with BinHex 4.0) 」が先頭に置かれ、「:」で変換部分が開始、「:」で終わるのが一般的。
:一行64文字
○BOO
文字 : A〜Z、a〜o、0〜9 記号 : :;<=>?@[\]^_`
:計64文字を基本に使う。
:元のFileNameで始まる。
:一行は78文字
○BtoA/AtoB
文字 : A〜Z、a〜u、0〜9 記号 : !"#$%&'()*+,-./:;<=>?@[\]^_`
:計85文字を基本に使う。但し、"x"を特殊操作用(Fileの始点終点の表示)に使う。
:『xbtoa Begin』に始まり『xbtoa End 〜〜(種々の情報)』で終わる。
:一行は80文字
○AR7
文字 : A〜Z、a〜z、0〜9 記号 : !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
:計94文字を基本に使う。
:『,AR7 e-mailable archive: FileName』に始まり『!$』で終わる。
:一行は78文字
○DSC
文字 : A〜Z、a〜z、0〜9 記号 : ()
:計64文字(6bit)を基本に使う。
:他と異なり、Net通信等の為の形式では無いと思われる。
:一行は膨大な長さになる(正確には、改行は無い?)。
【資料3】
JDA の機能メモ
JDA は機能が豊富で、一見見間違いやすい機能も有るので、その違いを軽く記しておきます。
・『インプラントJPG機能』
名前の通り、JPGにファイルを埋め込む機能です。
他のビュアー等ではインプラントされている事も分かりません。
『遮蔽機能』、『ファイル取り出しのロック機能』が有ります。
『遮蔽機能』は、JDAからもインプラントJPGである事を隠す機能です。
遮蔽コードには『-2147483646 〜 +2147483646 』の数字を使います。
これからも分かる様に、『遮蔽機能』での隠蔽の対クラック強度は低いです(UNJDA等はこれを総当りで読み出そうとする物の筈。使ったこと無いので自信無いですが)。
『ファイル取り出しのロック機能』は、取り出しの際にPASSを設定できる機能です。
此方も対クラック強度は低いです。
・『暗号化インプラントJPG機能』
インプラントに於いて、JPG以外の部分を『BLOWFISH』暗号技術によって暗号化したものです。
他のビュアー等からは画像として認識されます。
『BLOWFISH』暗号技術の対クラック強度は著しく高いので、解読はほぼ不能です(『BLOWFISH』暗号技術自体に未だ弱点が見当たらず、また、解読された事が無い)。
もちろんUNJDA等では解読不可能です。
・『クローキングBitmap 』
BMPに他のファイルを埋め込む形式です。
「論理的に埋め込む」との事で、埋め込み後もBMPのSize、色数が変わらないのが特徴です。BMPのSizeによって埋め込みSizeが制限されるのが欠点かもしれません。
・『暗号化JPEG機能』
JPGその物を『BLOWFISH』暗号技術によって暗号化し、普通のビュアーでは不可視にします。『インプラント』等の機能ではありません。
JDA等のToolでなくては見れなくなります。…とは言うものの、PASSを知らないと画像が見れないのは一緒ですが。
拡張子は『JPZ』です。
【資料4】
一般的書庫のヘッダ
一般的な書庫の特徴的なヘッダを自分の経験を下に表にしました。間違いも有るとは思いますが、参考程度にはなるでしょう。
ただ、下記は夫々のヘッダの特徴であって、決して夫々のHeaderの全てではないのは念頭において下さい。
また、文字の表示は『Shift_JIS』を使っています。
形式 Adress 0 1 2 3 4 5 6 7 8 9 A B C D E F LHA (lh0) - l h 0 - LHA (lh1) - l h 1 - LHA (lh5) - l h 5 - LHA (lh6) - l h 6 - LHA (lh7) - l h 7 - LArc (lzs) - l z s - LArc (lz4) - l z 4 - LArc (lz5) - l z 5 - ZIP P K CAB M S C F MS-Compress S Z D D BZIP2 B Z h 9 1 RAR R a r ! ACE * * A C E * * YZ1 y z 0 1 GZA G Z I P BZA B Z 2 777 7 7 7 BIX B I X UFA U F A UHARC U H A *4 SIT S I T ! GCA G C A *1 *2 ZZIP Z Z *3 0 1 2 3 4 5 6 7 8 9 A B C D E F
註)
(*1)Solid形式時は1、通常時は0
(*2)データ解析圧縮Mode時は=、通常時はA
(*3)ZZIPのVersionによって異なり、一回のVerUpで+1されるそうです (今は『0』)。
(*4)UHAのVersionによって異なるようです (v0.2なら『0x02』、v0.4なら『0x04』)。
上記以外
(ヘッダが文字では表示できない物)(文字列は全て16進数)
形式 Adress バイナリの終り 0 1 2 … - - GZIP 1F 8B 08 ARJ 60 6A 08 UNIX Compress 1F 9D 90 ARC 1A *1 RK R K
註)
・ARC
(*1) 圧縮に使用したアルゴリズムを示す部分。LZW法を使用した場合(これが一般的)は『08』
【資料5】
一般的ファイルのヘッダ
一般的なファイルの特徴的なヘッダを表にしました。参考にどうぞ。
ただ、下記は夫々のヘッダの特徴であって、決して夫々のHeaderの全てではないのは念頭において下さい。
文字に表せる部分は文字で表していますが、如何しても表し辛い部分(半角かなになってしまう部分等)は16進数で表しています(区別しやすい様に2桁でその場合は記載)。
形式 Adress 0 1 2 3 4 5 6 7 8 9 A B C D E F GIF G I F 8 7 a GIF G I F 8 9 a PNG 臼 N G I H D R JPG (JFIF) FF D8 FF E0 J F I F BMP B M EXE M Z DLL M Z WAV(*3) R I F F W A V E F M t 20 AVI R I F F A V I 20 L I S T MP3 RPM (RIFF MP3) R I F F R M P 3 D a t a WMA 0 & B2 u 伺 CF 11 A6 D9 00 AA 00 62 CE 0F MIDI M T h d DOC D0 CF 11 爍 B1 % P D F - 1 . *2 0D % 粤 CF D3 JACK T h i s _ I s _ J a c k _ F i l MSI D0 CF 11 爍 B1 HELP ? FF FF FF FF CHM I T S F ED E N C R Y P T E D 20 B Y 20 V 2 . 0 1 2 3 4 5 6 7 8 9 A B C D E F
(*1)
GIFは現時点で有効なVersionは上記の二つのみ。
ちなみに形式は『GIF??*』となる(?は数字、*はアルファベット)
(*2)
PDFのバージョンによって変わるらしい。
v1.1なら1、v1.2なら2、v1.3なら3のようです。
最新版は1.3のようです。
(*3)
WAVファイルはRIFF形式(Windows上でMultiMediaDataを処理する形式の一つ)の一種でありますが、そのWAVファイルも 同じ『WAV』でも、中身は色々有ります。
その違いはバイナリを見れば見当がつきます。
Adress 10 11 12 13 14 15 … 1) 1) 1) 1) 2) 2) …
1) 0x10〜0x13
:'fmt 'チャンクのサイズ
WAVE なら [10 00 00 00] or [12 00 00 00]
(普通は前者だが、時には後者のヘッダのものも存在)
MPEG Audio なら [1E 00] or [20 00]
2) 0x14〜0x15
:このWAVEのデータフォーマット (下記の『データID』)
データID 形式 概要 00 01 リニアPCM ごく普通のWAVE : : : 55 00 RIFF/MP3 拡張子WAV、ID3タグ有 : : :
これ以降は、
チャネル数 (2bytes Mono: 01 00 、Stereo: 02 00)
サンプリングレート (4bytes)
バイト/秒 (4bytes)
等、と続きます。
【資料6】
圧縮アルゴリズムの概説
世の中には色々な圧縮アルゴリズムが存在し、現在でも改良・開発が行われています。
それらを詳しくまとめたSiteも存在しますが、一応軽い紹介程度のことを書いてみたいと思います。勿論紹介程度なので、もっと詳しく知りたい方はこのHTMLのLinkから色々飛んでみて下さい。
○Huffman法
: D.A.Huffman考案(1950年頃) : 主な物は『静的ハフマン符号法』『適応型/動的ハフマン符号法』です。 : 原理は『出現率の多い物を短い符号で、出現率の低い物を長い符号で表現する』です アイディアは、当時としてはかなり革新的な物でした。しかし、最近では単体で使われることは少なくなりました。しかし、複数段階圧縮で用いられる事は有ります。 [例] ・静的ハフマン符号法 (Static Huffman Coding)
:LHA(lh5〜lh7)の2段階目
・適応型/動的ハフマン符号法 (Adaptive/Dynamic Huffman Coding)
:LHArc の2段階目
○Lampel-Ziv法
: A.Lampel と J.Ziv 考案 : 1977年考案の物を『LZ77法』、1978年考案の物を『LZ78法』と称します。
このアルゴリズムは現在、アーカイバの主流といえます。[例] LZ77法
: 静的辞書圧縮法 (Static dictionary based compression)とも言われます。
主な派生形式には『LZSS法』(考案者:Storer、Szymanski、1982)が有ります。
: LHA形式、ZIP形式、GZIP形式、CAB(MSZIP)形式、PNG画像 (以上 LZ77法)、MS-Compress (以上 LZSS法) LZ78法
: 動的辞書法(Dynamic dictionary based compression)とも言われます。
主な派生形式は『LZW法』(考案者:Welch、1984)が有ります。
: UNIX-Compress、ARC形式、GIF画像、TIFF画像 (以上LZW法 <= UNISYS社が特許を主張する部分)
○BWT法 (Burrows-Wheeler Transform)
: M.Burrows、D.J.Wheeler 考案 (1994) : 或る方法でデータの中身を(圧縮し易いよう)ソートする(Block Sorting)のが基本的原理です。 : このソート(Block Sorting)した物に圧縮を掛ける事で、高い圧縮率をたたき出せる様です。
圧縮率では優秀性を誇るPPM法(しかし、圧縮速度は遅い)に比べると、速度はそこそこ速く、且つ、かなり近しい圧縮率を達成します。[例] BZIP2、BA、DC、EXP1、IMP、reSource、SBC、SZIP、YBS、ZZIP等で採用
○PPM法
: 『次の文字を予測する』と言うのがこの方法の原理の様です。 : このアルゴリズムに関しては資料が少ないです。 : 圧縮率ではこれも高い結果が期待できる方法です。
ただし、圧縮速度が如何しても遅くなる傾向があるのが欠点です。[例] PPMD、PPMZ、RK等で採用
| LArc (v3.33) | LHarc (v1.13c) | LH (v1.9*) | LH (v2.0*) (*1) | LHA (v2.1*) (*2) | LHA (v2.5*) | LHA (v2.6*) | LHA32 (v2.67) | UNLHA32.DLL | |
| lh0 | × | × | ◎ | ◎ | ◎ | ◎ | ◎ | ◎ | ◎ |
| lh1 | × | ◎ | ◎ | ◎ | ◎ | ◎ | ◎ | ◎ | ◎ |
| lh2 | × | × | ◎ | ○ | ○ | ○ | ○ | ○ | ○ |
| lh3 | × | × | ◎ | ○ | ○ | ○ | ○ | ○ | ○ |
| lh4 | × | × | × | ◎ | ◎ | ◎(*3) | ◎(*3) | ◎(*3) | ◎(*3) |
| lh5 | × | × | × | ○ | ◎ | ◎ | ◎ | ◎ | ◎ |
| lh6 | × | × | × | × | × | ○ | ◎ | ◎ | ◎ |
| lh7 | × | × | × | × | × | × | ○(*4) | ○ | ◎ |
| lzs | ◎ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| lz4 | ◎ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| lz5 | ◎ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| アプリ名 | 状 況 | 書庫形式 | Encode形式 | ||||||||||||||||||
| L H A | Z I P | C A B | T A R | G Z I P | B Z I P 2 | Z | A R J | A R C | Z O O | R A R | A C E | B H | M S C o m p | S I T | B 6 4 | M I M E | U U E | X X E | H Q X |
||
| Aladdin Expander (v7.5) | Free | ○ | ○ | × | × | ○ | ○ | × | ○ | ○ | × | × | × | × | × | ○ | ○ | ○ | ○ | × | ○ |
| eo (v1.5.2) | Free | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | × | × | ○ | × | × | ○ | × | ○ | ○ | ○ | ○ | ○ |
| +Lhaca デラックス版 (v1.18) | Free | ◎ | ◎ | ◎ | ◎ | ◎ | ◎ | ○ | ○ | × | × | ○ | × | × | × | × | × | × | × | × | × |
| Lhaplus (v1.16) | Free | ◎ | ◎ | ◎ | ◎ | ◎ | ◎ | ○ | ○ | ○ | ○ | ○ | ○ | ◎ | × | × | ◎ | ○ | ◎ | ◎ | × |
(v1.41) | Free | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | × | × | × | × | × | ○ | × | × | × | × | × | × |
| Japan Zip 32 (v2.0.3.2) | Share | ◎ | ◎ | ○ | ○ | ○ | × | ○ | ○ | ○ | ○ | ○ | × | ◎ | × | × | × | × | × | × | × |
| WinPack3 | Share | ◎ | ◎ | ◎ | ◎ | ◎ | ◎ | ◎ | ◎ | ◎ | ◎ | ○ | × | × | ◎ | ○ | ◎ | ◎ | ◎ | ◎ | ◎ |
| ZELDA (v2.8R2) | Share | ◎ | ◎ | ◎ | ◎ | ○ | × | ○ | ○ | ○ | ○ | ○ | ○ | ◎ | × | × | × | × | ◎ | × | × |
| ファイルコンパクト (v4.00) | Share | ◎ | ◎ | ◎ | ◎ | ◎ | ◎ | ○ | ○ | × | × | ○ | × | × | ○ | × | ◎ | × | ◎ | ◎ | ◎ |
| L Z H | Z I P | C A B | T A R | G Z I P | B Z 2 | Z | A R J | A R C | Z O O | R A R | A C E | B H | ? ? _ | S I T | B 6 4 | M I M E | U U E | X X E | H Q X |
||
| ・ | Aladdin Expander は MacBinary形式も○ |
| ・ | Japan Zip 32 はHA形式も◎で、PAK形式が○。 |
| ・ | WinPack32 Deluxe はAtoB/BtoA(boo)、Freeze(frz)、Quake Pak(pak) が◎ |
| ・ | ZELDA は 777、7Z、ACE、GCA、RK、UHA書庫及びUPX形式も◎だが、各種EXEが必要 |
| ・ | ファイルコンパクトはAIZ形式も◎ |
| ・ | 或る形式に対応、としても、その形式の内部Type全てに対応してる訳ではない事が有る。 |
LHA形式関連アーカイバ圧縮率比較
LHA形式関連のアーカイバの圧縮率の比較をしてみました(使用サンプルは『圧縮率の言及に関して』と同じです)。
UNLHA32.DLL、LHA32.EXE以外は全てデフォルトでの圧縮ですが、圧縮メソッドは記載しておきます。
夫々のEXEについての情報は各項を参照してください。
なお、数字の単位は『kbyte』です。
UNLHA32.DLL LArc LHarc AR LHA32 LHARK H.C.E.II lh5 lh6 lh7 lz5 lh1 lh5 lh5 lh6 lh7 lh7 EXE (1,293) 598 580 574 712 635 598 598 580 582 577 TXT (1,730) 674 615 582 787 725 675 673 615 607 580 合計 (3,023) 1,272 1,195 1,156 1,499 1,360 1,273 1,261 1,195 1,242 1,157
【資料10】
DOSエクステンダの簡単なまとめ
MS-DOS はVer.7.* になってLFNが使えるようになったり(v7.0)、FAT32が使えるようなったり(v7.1)しましたが、基本的に16bitのOSです。
Windows3.1もGUIではあるものの 16bitのOSでしたし、Windows9xもかなり32bit化されたとはいえ結局のところ16bitの呪縛から逃れていません。
このようにMS-DOS関連のOSは常に16bitという制限との苦闘の歴史とも言えるのです。
しかし、純粋に16bit環境で有る筈のMS-DOS環境で32bit環境を持ちこもうとした工夫が『DOSエクステンダ』と言うものです。
32bit環境はアーカイバにとっても有益なものです。
アーカイバによっては『辞書』と言う物が有り、これのサイズが大きいほど圧縮率が向上する傾向があります(例:RAR形式)。しかし、DOS(16bit)環境では16bitの制限の為、64KB(64Kb = 65536b = 216b)までしか辞書サイズを大きく出来ないのです(この為、LHA形式の『lh7』圧縮された書庫はDOSでは圧縮出来ないのです)。
そのような経緯も有り、DOSのアーカイバではDOSエクステンダを使うものが多々見られます( 註1 参照)。
それらについて主なものを軽くまとめてみたいと思います。
Name 作成者 STATUS 必要環境 主な外部File その他 DOS/4G (32bit) Rational Systems, Inc. Sale 386以上、DOS v5.*以上 DOS4G.EXE WATCOM C/C++,FORTRAN77対応
DLL使用可
メモリは4GB迄可
VCPI,DPMI準拠DOS/4GW (32bit) Rational Systems, Inc. Sale 386以上、DOS v5.*以上 DOS4GW.EXE DOS/4Gの機能制限版
WATCOM C/C++,FORTRAN77対応
メモリは32MB迄可
VCPI,DPMI準拠DOS/16M (16bit) Rational Systems, Inc. Sale 286以上、DOS v3.*以上 ??? 要RealMode用C Compiler
メモリは16MB迄可GO32 (32bit) DJ Delorie Free 386以上 GO32.EXE DJGPP v1.* WDOSX (32bit) Michael Tippach Free 386以上?
DOS v3.3以上STUBIT.EXE VCPI,DPMI準拠 EXE286/386 (32bit) 京都マイクロコンピュータ(株) Free 286/386以上 EXE386.EXE VCPI準拠
これ以外にも多数存在するので興味の有る方は調べても良いでしょう。
註1)
『DOSエクステンダ』とは正確には『286以降のCPUで利用できる16bit/32bitプロテクトモードプログラムの実行機能を、リアルモードもしくは仮想8086モードで実行中のMS-DOSから実行するための環境』とされます(アスキーデジタル用語辞典より)。
【資料n】
参考リンク
基本的にTool作者さんのところは、ちょっと趣旨と外れるので此処からは外しました。
英語Siteはその旨明記してあります。
[アーカイバ関連の情報]
○Archive Comparison Test (ACT)
URL : http://compression.ca/ Memo : 各種アーカイバの能力比較を行っています。
マイナー系アーカイバも多く取り上げられてます。
但し、英語です。
○DO++
URL : http://member.nifty.ne.jp/DO/ Memo : アーカイバの歴史等に関して要点を得た解説が有ります。
また、幾つかソースも置いて有ります。
○Kompresja
URL : http://www.kki.net.pl/fgf/kompresja/ Memo : ものすごい数のアーカイブ形式を紹介しているSiteです。 紹介内容も私のものとは比べ物になりません。
しかしながらこのWevPageはポーランド語で書かれているらしく(charset=iso-8859-2)、 私は殆ど読解出来ないのが残念です。
サーバは少々重いと思います。
Lossless audio compression
URL : http://www.firstpr.com.au/audiocomp/lossless/ Memo : 可逆Audioファイル圧縮形式について比較、検討しているSiteです。
○Mitsuharu ARIMURA's Page
URL : http://www.hn.is.uec.ac.jp/~arimura/ Memo : アーカイバに関する研究を行っている方のようです。
Linkは数多い為、幾等か参考になるかと思います。
…Topは少しだけビックリしました。
○Muluz page
URL : http://www.ingnet.or.jp/~kojif/mu/index.htm Memo : 圧縮法に関しての説明が分かりやすく解説されているSiteです。 圧縮法(ハフマン法、LZ法、BWT法、等)に興味を持たれたなら覗いて見るのも良いでしょう。
○The Data Compression Library
URL : http://www.dogma.net/DataCompression/ Memo : 各種のアーカイバに関するLinkを纏めているPageです。開発者向けにも良いところだと思います。
英語です。
○奥村晴彦のホームページ
URL : http://www.matsusaka-u.ac.jp/~okumura/ Memo : LHAフォーマット作成に関わった、奥村晴彦さんのSiteです。
圧縮形式関連のリンク等有って勉強になります。
なお、かなりこのHTMLの参考にさせていただきました(謝)。
○統合アーカイバプロジェクト
URL : http://www.csdinc.co.jp/archiver/ Memo : アーカイバDLL関連ならここでほぼ情報がそろいます。それ以外でも十分情報あります。
殆どのDLLも揃いますし。
なお、此方のSiteではメルマガもやってるので興味が有る方は購読しても良いのではないでしょうか。
[Tool紹介Site]
○Vector
URL : http://www.vector.co.jp/ Memo : 著名なOnLineSoft紹介Siteです。
マイナーなアーカイブ形式を処理するSoftも多々見られるので、まずは目を通しておく事を お勧めしておきます。
また、そうでなくても色々な物があるので、何かしたい時も覗くと良い結果を 得られる事も多いはずです。
[検索Site]
○AltaVista
URL : http://www.altavista.com/ Memo : 手に詰まったらここも選択肢でしょう。老舗(?)の検索エンジンです。
検索に引っかかる情報の数は、かなりウッハウハです。
多すぎてうぐぅな時も多いですが(苦笑)。
英語です。
URL : http://www.google.com/ Memo : 突如として登場、あっという間に便利な検索Siteとしてのし上がった感があります。
此処を使いこなせれば、かなりの事がすぐ分かります。
と言うか、此処さえあれば、人に訊く事なんて殆ど無いって断言できるかもしれません。
○Lycos Fast FTP Search
URL : http://download.lycos.com/static/advanced_search.asp Memo : 探しているFileの名前が分かるのなら此処も選択肢でしょう。
少々コツが必要ですが、的確に使えた場合、探し物はもう目の前です。
英語です。