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

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

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

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

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

    • by Anonymous Coward

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

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

      • by Anonymous Coward on 2021年03月25日 20時37分 (#4001132)

        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がクソみたいなヘッダを勝手に追加するとかも無かったっけか。

普通のやつらの下を行け -- バッドノウハウ専門家

処理中...