偽装ファイルの作成(Python版)
日経ソフトウェア2009年12月号特別付録『かんたん10分プログラミングレシピ』から、インプラント・ファイルの作成のPython版をやってみる。記事の内容は、Webでも公開されているので誰でも読める。
http://itpro.nikkeibp.co.jp/article/COLUMN/20060131/228220/
2つのファイルをくっつけて出力するだけなので、プログラムというほどのものではないのだが。Linuxでのインプラント・ファイルの挙動を確かめるためにやってみた。スクリプトはこんな感じ。
file1 = 'a.jpg' file2 = 'zzz.txt.gz' file3 = 'x.jpg' separator = '\n --&& split here &&--\n' input1 = open(file1, 'r') input2 = open(file2, 'r') output = open(file3, 'w') output.write(input1.read() + separator + input2.read())
セパレータを間に挟んで、file1とfile2をこの順番で結合する。そのとき、新しくできるfile3の拡張子はfile1と同じものにする。
画像ファイル+テキストファイル→画像ファイル
容量は増えるが、内容はfile1と全く同じ画像ファイルとなる。コマンドcmpでfile1とfile3を比較すると、
$ cmp a.jpg x.jpg cmp: ファイルa.jpgの末尾
と表示される。これは、ファイルa.jpgの後ろ部分のみがx.jpgとは異なることを意味している。このように2つのファイルがあれば比較できるが、x.jpgだけだとやはりただの画像ファイルとしか認識されない。
画像ファイル+画像ファイル→画像ファイル
a.jpgの後ろに別のb.jpgをくっつけても、できたファイルはa.jpgと全く同じ表示になる。
画像ファイル+bzip2ファイル→画像ファイル
a.jpgの後ろにz.txt.bz2をくっつけても、できたファイルはa.jpgと全く同じ表示となるただの画像ファイル。
bzip2ファイル+画像ファイル→bzip2ファイル
画像ファイルを後ろにくっつけても、解凍するとちゃんと元のファイルになっている。解凍するとき、後ろにごみがついてますよ、という旨のメッセージが表示されるが。
trailing garbage after EOF ignored
日経ソフトウエア 2009年 12月号 [雑誌] | |
日経ソフトウエア 日経BP出版センター 2009-10-24 売り上げランキング : Amazonで詳しく見る by G-Tools |