「Ishkur's Guide to Electronic Music」のFLASHを軽く解析してみた。


概要

年末からFLASHのオワコン攻撃が始まっており、苦しんでいる人も多くいるかと思われる。Adobeの Flash Player だけでなく、Google ChromeMozilla Firefox、 Microsoft Windows Update という波状攻撃には、お前らそんなに仲良かったっけ? とすら感じるほどの連携プレイで爽快感さえ感じる👍。いいぞもっとやれ。さっさと IEも同様に終了して欲しいなぁ と思ったのはさておき。

Ishkur's Guide to Electronic Music と言えば、ダンス ミュージック シーンのジャンル解説FLASH。

このFLASHが見れなくなってしまったのは、この世で一番のダメージ ではないかと思う。

なのでこのFLASHの動作を解析し、人類の文化の保存に寄与するべく再構築しよう!と、妄想したものの。取り敢えず 力量時間体力 、そして 権利 など無いものづくしだったので、取り敢えず簡単な解析結果についてのメモ。

諸々自己責任でお願いします。

JASRACから請求があったりしても、当方は関係ありませんし、当方に責任もありません。違法ダウンロードなどで摘発されても、自己責任になります。

何より、DI.FM 及び、 HARDCORE TECHNOに迷惑がかかることの無い様に しましょう。

解析

環境

  • Windows 10 Pro v1809
    ※ 2019年10月にインストール以後、Windows Updateもしていない (必要がないので)
  • Microsoft Edge (EdgeHTML版)
    ※ 手元でなんとかFLASHが動いたオワコン ブラウザ
  • Wireshark
  • Cygwin bash

要約

  • 基点は music.swf
  • 各ジャンルの内容は個別ファイル
    • 楽曲データはSWF。ジャンルごとに1ファイルになっており、コントロールと複数の楽曲データが格納されている。
    • ジャンル説明はテキストファイル。ジャンル個別のSWFファイルは同じファイル名のテキストファイルを読み込んで表示される。
  • 一式同じフォルダにあれば、ローカルでも Media Player Classic などでは再生出来る。

① 通信解析

まず実際に操作を行いながら、WiresharkにてURLをまず探す。


※ SWFとTXTの通信が連続して発生しているのが確認できた。

② パターンを考える

通信内容を眺めながら、どの様なルールになっているのかを考える。

caption swf file txt file memo
RAVE rave.swf rave.txt 単純小文字化
HAPPT GABBER happygabber.swf happygabber.txt スペースなし
GABBER HOUSE gabberhouse.swf gabberhouse.txt スペースなし
ROTTERDAM rotterdam.swf rotterdam.txt 単純小文字化
NU STYLE GABBER nustylegabber.swf nustylegabber.txt スペースなし
HAPPY happyhardcore.swf happyhardcore.txt 表記違い (衝突回避?)
... ... ...
  1. 表示名には表記揺れなどが見受けられる。
  2. 階層分けはされておらず、ファイル名をユニークにしている。
  3. 表示名とファイル名は別管理であろう。
  4. SWFとテキストとは同じファイル名っぽい。

SWFファイル からファイル名表記を抽出

music.swf の中身を覗くと、テキストが埋め込まれているのがわかった。

このテキストを一括抽出しようと考えたものの、shではバイナリ操作が出来ない。うまく特定の文字だけを通過するフィルターが出来ないか考えた結果

  1. sedで特定の文字以外を改行に置換
  2. grepでswfのある行を抽出
sed -e "s/[^a-zA-Z0-9.\-]/\n/g" music.swf | grep "swf"


良い感じじゃない?

リスト作成

頑張ってまとめてたけど、ちょっと心が折れた。


🤮🤮🤮🤮
この確認作業は、もう面倒くさすぎる。。。。
いずれ、気が向いたらやる。。。。

取り敢えず簡易収集スクリプト

大体傾向はわかったので。簡単に諸々を一括ダウンロードするスクリプト。

collect electronic-music-guide.sh
#!/bin/sh


BASE_URL="http://techno.org/electronic-music-guide/"

# download music.swf
wget "${BASE_URL}music.swf"

# download genre swfs
sed -e "s/[^a-zA-Z0-9.\-]/\n/g" music.swf | grep "swf" | sort | uniq | while read line
do
  swf_file="${line}"
  txt_file=`echo "${line}" | sed -e "s/\.swf$/\.txt/g"`
  swf_url="${BASE_URL}${swf_file}"
  txt_url="${BASE_URL}${txt_file}"
  echo "${swf_url}"
  wget "${swf_url}"
  echo "${txt_url}"
  wget "${txt_url}"
done

まとめ

正直このタイミングで、 システムの賞味期限に危機感を感じてこなかった企業・組織の尻拭い のために、FLASHを解析させられるお仕事も増えているのでは無いかと思っている。特にFLASHなんて作ったことないのに解析させられる人なんかにとっては、結構しんどいのでは無いかと思う。リバース エンジニアリングの解析する際の考え方の1つとして、なにか参考になれば。

とは言っても、Wiresharkを触ったのは初めてだったし、そんな高尚なことやってないけど。

あと、このFLASHをJavascriptで作ってみたいけど。流石にきつそうだなあ。。。

追記

同一作者と思われる、新しいジャンル解説サイトがあった。

情報の解像度上がりすぎwww
FLASHからのリビルドなんて全く必要ないね!

そんな感じで、今更Flashなんて使っているということは。

  • そもそも解析する必要がある?
  • いちから要件定義し直したほうが正攻法なのでは?

と言う場合も往々にあるはずなので。
安請負などせず、何もしない と言う選択肢も、FLASHオワコン問題については大事かなぁとお思います。

外部リンク