パスワードを忘れた? アカウント作成

TwitterでPNGに偽装しファイル共有を行う方法が発見される」記事へのコメント

  • 埋め込みツールのコードを見てみましたが、
    ・入力は PNGファイル(偽装対象)とZIPファイル(埋め込みデータ)の二つ。
    ・PNGファイルのIDATチャンク(圧縮した画像データそのものを示すデータ領域)の後ろにZIPファイルを追加して埋め込んだものを出力する
    というものでした。「圧縮画像データ」の中にzipが入ってるので、「コメント等の余計なデータを除去する」ような処理で埋め込みデータあが消されることはありません。

    あとは、
    ・PNG表示時は、画素数分だけ展開ができたら、そこで圧縮データからの読み込みは終わる。その後ろにゴミが付いてても無視されるだけで問題ない。
    ・ダウンロードしたファイルは、拡張子を ZIP にするだけ。ZIPファイルを扱うツールはZIPデータが始まるまでの不要部分(PNGデータ部分)はテキトーに読み捨ててファイル中のZIPデータを見つけ出してくれる。
    という形になってます。

    抽出ツール等は不要というのが手軽ですね。

    • by Anonymous Coward

      > テキトーに読み捨ててファイル中のZIPデータを見つけ出してくれる。

      SFXで展開ルーチンが先頭にくっついている物対策ですかね

      • Re: (スコア:2, 興味深い)

        by Anonymous Coward

        ZIPは各ファイルのオフセット等の情報をまとめたセントラルディレクトリというのが最後にあって、
        セントラルディレクトリの開始位置というのは、後ろから辿る場合、必ずしも1パスでは確定しない、
        という、イマイチな仕様がある。
        なので、大抵の実装ではヘッダを探索するようになっている。

        • by Anonymous Coward on 2021年03月26日 6時52分 (#4001293)

          LZHも前後にゴミが含まれていても構わないという仕様で、ヘッダー探索が必要だったな。そもそも当時のファイル転送プロトコル(XMODEM)はファイルサイズを128の倍数にしかできない仕様だったので、末尾のゴミに対応できることは必須だった。
          LZHとZIPを結合して、LZHとしてもZIPとしても展開できて、それぞれ別のファイルが出てくるという書庫をパソコン通信時代に見た覚えがある。今でもベクターに残ってるかも。あとLZHの末尾にishが付加されていて、ishをかけるとやっぱり別のファイルが出てくるとか

          • by Anonymous Coward

            あとMacがクソみたいなヘッダを勝手に追加するとかも無かったっけか。

Stableって古いって意味だっけ? -- Debian初級

処理中...