パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

10MBのファイルが281TBに膨らむ新型「非再帰的ZIP爆弾」」記事へのコメント

  • by Anonymous Coward on 2019年07月16日 20時56分 (#3652470)

    Gigazineの記事を読む限りハードリンク的なことをして容量を膨らましてるっぽい。
    FATでもハードリンクできるらしいし、参照先を同じにすればできるわな。
    同じファイルが含まれる場合ってちょくちょくあるだろうけど、普通に圧縮するときにそういう使い方することあるのかな。
    あるとすれば対策は難しそうだ。

    ついでにあるエントリの何バイト目から何バイト目みたいな指定ができれば便利…どころじゃないな。ソリッド圧縮ができることになる。
    まぁ圧縮済みファイルを途中から読みだすのは大変だから工夫が多少は必要だけど。

    • by Anonymous Coward

      FATの場合は通常クロスリンクと呼ばれていてファイルシステムのエラー扱いされる

    • by Anonymous Coward

      ZIPは個々のエントリーの先頭にローカルファイルヘッダとは別にヘッダ情報だけをまとめたセントラルディレクトリがある。
      前者はシーケンシャルにしか存在できないが、後者は(本来別の)あるエントリの何バイト目から何バイト目みたいな指定ができる。
      そして、処理の効率化のためにセントラルディレクトリしか読まず、ローカルファイルヘッダを読まないプログラムは少なくない。

      • by Anonymous Coward

        ローカルヘッダがあるのか。だからバイナリエディタで覗くとファイル名が見えるわけだな。
        対策もチェックするだけで簡単な話か。
        とはいってもローカルヘッダに見えるようずらして配置できるから、対策には頭から解凍しないといけないのでそれなりにコストがかかるな。

        ソリッド圧縮的な使い方としては圧縮後での何バイト目かで指定できないといけないし、不正なファイルになるから使えないな。

      • by Anonymous Coward

        ローカルファイルヘッダの情報がファイルサイズが0記録されているものもあるので、
        次のローカルファイルヘッダに行くためには、解凍の動作をしなければならないこともあります。(またはヘッダーを探す??)
        なので、やっぱりセントラルディレクトリでしょう。
        (サイズ0は、圧縮開始時には、サイズが不明なストリームタイプのデータとかに使われます。1パスで作成できる構造で、データを随時圧縮できる為、データ全体をどこかに置く必要もありません。)

        関係ないけど、何故、パスワード付のzipの解凍は標準であるのに圧縮は、標準でないの?python,node.js,C#とか

    • by Anonymous Coward

      Gigazineの記事を読む限りハードリンク的なことをして容量を膨らましてるっぽい。

      圧縮側のアプリケーションが不適切だよね
      実態ではなくハードリンク|シンボリックリンク|ジャンクション自体をとらないとあかん

      ハードリンク|シンボリックリンク|ジャンクション自体で圧縮されてるものでそれなら
      解凍側がハードリンク|シンボリックリンク|ジャンクション自体として扱ってないのがあかん

      ってこんなん一昔前には対策済みですから
      圧縮アプリケーションが相当古いものか
      ハードリンク|シンボリックリンク|ジャンクションを意図的に実態と誤認して扱う悪意あるアプリケーションか
      どっちでしょうね

      # まぁそのあたりの容量算出がおかしなOSもあるから何ともだが

目玉の数さえ十分あれば、どんなバグも深刻ではない -- Eric Raymond

処理中...