[解決済み] Zip爆弾はどうやって作るの?
2022-03-01 18:39:43
質問
この質問 を見たときに、自然とZIP爆弾に行き着きました。 ウィキペディアのページ というトピックがあります。この記事では、45.1kbのZIPファイルが1.3エクサバイトに解凍される例について触れています。
そもそも、そのようなファイルを作るには、どのような原理・技術が必要なのでしょうか?私は実際にこれを実行したいのではなく、関係する概念の簡略化された"how-stuff-works"の説明に興味があるのですが、いかがでしょうか?
記事には9層のZIPファイルについて書かれているので、単純に0をたくさんZIPすればいいというわけではありません。なぜ9個なのか、なぜ10個ずつのファイルなのか?
解決方法は?
Wikipediaのページから引用しています。
<ブロッククオートZip爆弾の一例として、ファイル 45.1.zipは、45.1キロバイトの圧縮データでした。 9つの 層からなるネストしたZIPファイルのセットで 10個で、最下層の各アーカイブは 1.30ギガバイトのファイルを含む に対して 合計1.30エクサバイトの非圧縮データ。 データです。
つまり、0だらけの1.3GBのファイルを1つだけ用意し、それをZIPファイルに圧縮し、10個コピーしてそれをZIPファイルに詰め、この作業を9回繰り返せばいいのです。
このように、完全に解凍するととんでもない量のデータが生成されるファイルを、最初からその量を用意することなく手に入れることができます。
さらに、ネストされたアーカイブは、ウイルススキャナのようなプログラム(これらの「爆弾」の主なターゲット)が賢くなり、「大きすぎる」アーカイブの解凍を拒否することが非常に難しくなります。
関連
-
[解決済み] ヒープ化 VS ビルドヒープ
-
[解決済み] O(log* N)とは何ですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 山積みされた靴下を効率よく組み合わせるには?
-
[解決済み] O(log n)とは具体的にどのような意味ですか?
-
[解決済み] 32ビット整数のセットビットの数を数えるには?
-
[解決済み] ビッグ・オー、どうやって計算・概算するんだ?
-
[解決済み] 円周率の計算が正確かどうかを判断するにはどうしたらよいですか?
-
[解決済み】zlib、gzip、zipはどのように関係していますか?これらの共通点と相違点は何ですか?
-
[解決済み】アルゴリズムの時間複雑性を求めるには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] TSPの場合、Held-Karpアルゴリズムは、Brute-forceのO(n!)からO(2^n*n^2)に時間複雑性をどのように減少させるのでしょうか?[クローズド]
-
[解決済み] O(n)とO(log(n))の違い -どちらが優れていて、O(log(n))とは一体何なのか?
-
[解決済み] DFSとBFSの時間計算量がともにO( V + E )であるのはなぜか?
-
[解決済み] 迷路の生成に適したアルゴリズムとは?[クローズド]
-
[解決済み] 数字の範囲を表すときの「exclusive」「inclusive」の意味は?
-
[解決済み】なぜBase64を使うのか?
-
[解決済み】ループ不変量って何?
-
[解決済み】スキップリストとバイナリサーチツリーの比較
-
[解決済み】純粋な関数型プログラミングの効率性
-
[解決済み】固定長 6 int 配列の最速ソート