以前から告知されていた通り、2021年1月12日よりAdobe Flash Player が使えなくなりました。それでも Flash を使い続ける手段は無いのか、Ubuntu 18.04 の場合で調べてみました。
今回の検証はUbuntu 18.04.5LTSで行いましたが、Windowsでも多少の違い(ファイルのパス等)はあるものの、各ブラウザの対応状況は基本的に同じです。検証時の各ブラウザのバージョンは次の通り。
- Firefox : ver.84.0.2
- Chrome : ver.87.0.4280.141
- Chromium : ver.87.0.4280.66
そしてブラウザ側でFlashが動かせなくなるバージョン(下記参照)へのメジャーアップデートが、2021年1月に予定されています。
- Mozilla Firefox : ver.85
- Google Chrome : ver.88
- Microsoft Edge : ver.88
先ずは現状確認。Adobe Flash Player ヘルプページでバージョンチェックと動作確認を行なうことが出来ます。Flashの実行を許可しても、動作しない点では各ブラウザ同じ結果でした(Flashのバージョンはいずれもv32.0.0.465)。
次に社内で運用しているvSphere Web Client(FLEX版)を試してみますが、もちろんEOLアイコンになります。尚、運用しているのはvCenter Server 6.7なので、普段はHTML5版のGUIを使っています。
代替プラグインRuffle
FLashベースのゲームを提供するサイトに支持されているFlashエミュレータ、Ruffleを試してみます。Firefoxではまず公式サイトでFirefox用のxpiファイルをダウンロードした後、次のページを開き、このxpiファイルを一時的なプラグインとして読み込みます。
1 |
about:debugging#/runtime/this-firefox |
Chrome向けのプラグインはパッケージ化されていないので、公式サイトよりダウンロードしたZipを適当な場所に解凍し、それを読み込ませます(要デベロッパモード有効化)。
気になる再現性は、現時点ではまだActionScript 3をサポートしていないことから、シンプルなFlashミニゲームや動画で動く程度に留まり、とても実用には耐えられませんでした。
Flashプラグインのバージョン固定
ソフトウェアの更新やaptでの不意な更新に遭わないよう、パッケージのバージョンを固定しておきます。Synapticでは対象パッケージを選んで「バージョンを固定」適用、aptではapt-markを使います(holdで固定、unholdで解放)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
$ sudo apt update $ sudo apt upgrade 以下のパッケージはアップグレードされます: adobe-flashplugin cawbird inkscape python3-pil アップグレード: 4 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。 続行しますか? [Y/n] n 中断しました。 $ sudo apt-mark hold adobe-flashplugin adobe-flashplugin は保留に設定されました。 $ apt-mark showhold adobe-flashplugin $ sudo apt update $ sudo apt upgrade 以下のパッケージは保留されます: adobe-flashplugin 以下のパッケージはアップグレードされます: cawbird inkscape python3-pil アップグレード: 3 個、新規インストール: 0 個、削除: 0 個、保留: 1 個。 続行しますか? [Y/n] y |
v32.0.0.465にmms.cfgを設定し例外的有効
Adobeより公開されているFlash Player Administration Guideを参考に、2021年1月12日以降動作しないようキルスイッチの入ったFlashプラグインv32.0.0.465であっても、サイト単位で例外動作出来るように設定してみます(当該ガイドP.28辺りを参照)。先ずは設定ファイルである「mms.cfg」へのパスをブラウザ毎に確認、ファイルやサブフォルダが存在しない場合は適宜新規作成します。
1 2 3 4 5 6 |
# Firefox /etc/adobe/mms.cfg # Chrome ~/.config/google-chrome/Default/Pepper Data/Shockwave Flash/System/mms.cfg # Chromium ~/.config/chromium/Default/Pepper Data/Shockwave Flash/System/mms.cfg |
mms.cfgの記述は、例外サイトの有効化するいくつかのパラメータの後、「AllowListUrlPattern」にFlashを動かしたいサイトを以下の要領で列記します(Admin Guideより)。
1 2 3 4 5 |
AllowListUrlPattern = <scheme> ://<host>:<port>/<path> <scheme> = ‘*’ | ‘http’ | ‘https’ <host> = <any char except ‘.’ and ‘*’> <port> (optional) = <any valid port number> <path> = ‘/’ <any chars> |
<shceme>ではワイルドカードでhttpとhttps双方とすることが可能ですが、<host>以降にワイルドカードは一切使えません。使えるようなことをほのめかす書き込みもネットでは散見されるのですが、実際は無視されるので注意が必要です。
またswfがアイコンや画像など、設置場所とは別のサイトにホスティングされているリソースを呼び出している場合は、それらのサイトも全て列記しなくてはなりません(さもないと下図のような中途半端な動作に)。
以上を踏まえ、私のmms.cfgは次のようになりました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
EOLUninstallDisable=1 EnabledAllowList=1 AllowListPreview=1 AllowListUrlPattern=*://192.168.2.23/ AllowListUrlPattern=*://helpx.adobe.com/ AllowListUrlPattern=*://photozou.jp/ AllowListUrlPattern=*://kura1.photozou.jp/ AllowListUrlPattern=*://art1.photozou.jp/ AllowListUrlPattern=*://art2.photozou.jp/ AllowListUrlPattern=*://art3.photozou.jp/ AllowListUrlPattern=*://art4.photozou.jp/ AllowListUrlPattern=*://art5.photozou.jp/ AllowListUrlPattern=*://art6.photozou.jp/ AllowListUrlPattern=*://art7.photozou.jp/ AllowListUrlPattern=*://art8.photozou.jp/ AllowListUrlPattern=*://art9.photozou.jp/ AllowListUrlPattern=*://art10.photozou.jp/ AllowListUrlPattern=*://art11.photozou.jp/ AllowListUrlPattern=*://art12.photozou.jp/ AllowListUrlPattern=*://art13.photozou.jp/ AllowListUrlPattern=*://art14.photozou.jp/ AllowListUrlPattern=*://art15.photozou.jp/ AllowListUrlPattern=*://art16.photozou.jp/ AllowListUrlPattern=*://art17.photozou.jp/ AllowListUrlPattern=*://art18.photozou.jp/ AllowListUrlPattern=*://art19.photozou.jp/ AllowListUrlPattern=*://art20.photozou.jp/ AllowListUrlPattern=*://art21.photozou.jp/ AllowListUrlPattern=*://art22.photozou.jp/ AllowListUrlPattern=*://art23.photozou.jp/ AllowListUrlPattern=*://art24.photozou.jp/ AllowListUrlPattern=*://art25.photozou.jp/ AllowListUrlPattern=*://art26.photozou.jp/ AllowListUrlPattern=*://art27.photozou.jp/ AllowListUrlPattern=*://art28.photozou.jp/ AllowListUrlPattern=*://art29.photozou.jp/ AllowListUrlPattern=*://art30.photozou.jp/ AllowListUrlPattern=*://art31.photozou.jp/ AllowListUrlPattern=*://art32.photozou.jp/ AllowListUrlPattern=*://art33.photozou.jp/ AllowListUrlPattern=*://art34.photozou.jp/ AllowListUrlPattern=*://art35.photozou.jp/ AllowListUrlPattern=*://art36.photozou.jp/ AllowListUrlPattern=*://art37.photozou.jp/ AllowListUrlPattern=*://art38.photozou.jp/ AllowListUrlPattern=*://art39.photozou.jp/ AllowListUrlPattern=*://art40.photozou.jp/ AllowListUrlPattern=*://art41.photozou.jp/ AllowListUrlPattern=*://art42.photozou.jp/ AllowListUrlPattern=*://art43.photozou.jp/ AllowListUrlPattern=*://art44.photozou.jp/ AllowListUrlPattern=*://art45.photozou.jp/ AllowListUrlPattern=*://art46.photozou.jp/ AllowListUrlPattern=*://art47.photozou.jp/ AllowListUrlPattern=*://art48.photozou.jp/ AllowListUrlPattern=*://art49.photozou.jp/ AllowListUrlPattern=*://art50.photozou.jp/ AllowListUrlPattern=*://art51.photozou.jp/ AllowListUrlPattern=*://art52.photozou.jp/ AllowListUrlPattern=*://art53.photozou.jp/ AllowListUrlPattern=*://art54.photozou.jp/ AllowListUrlPattern=*://art55.photozou.jp/ AllowListUrlPattern=*://art56.photozou.jp/ AllowListUrlPattern=*://art57.photozou.jp/ AllowListUrlPattern=*://art58.photozou.jp/ AllowListUrlPattern=*://art59.photozou.jp/ AllowListUrlPattern=*://art60.photozou.jp/ AllowListUrlPattern=*://art61.photozou.jp/ AllowListUrlPattern=*://art62.photozou.jp/ AllowListUrlPattern=*://art63.photozou.jp/ AllowListUrlPattern=*://art64.photozou.jp/ |
キルスイッチの無いv32.0.0.371へ巻き戻す
Flashプラグインを少し古いバージョンに巻き戻せば、キルスイッチに邪魔されることなく、これまで通り利用することが出来ますが、あまり古いとセキュリティホールの問題や不具合が多くなることは否めません。そこでキルスイッチの無い最終版であるv32.0.0.371(2020年5月リリース)を入手して入替えてみます。
本来ならAdobeの次のURLよりダウンロードすることが可能なのですが、サポート停止に伴いこうしたアーカイブリンクも軒並み消え去り、もはやダウンロードすることは出来ません。
1 2 3 4 |
# v32.0.0.371 NPAPI https://fpdownload.adobe.com/get/flashplayer/pdc/32.0.0.371/flash_player_npapi_linux.x86_64.tar.gz # v32.0.0.371 PPAPI https://fpdownload.adobe.com/get/flashplayer/pdc/32.0.0.371/flash_player_ppapi_linux.x86_64.tar.gz |
そこで、Internet Archiveに保存されているのを見つけ、ダウンロードしました。
1 2 3 4 |
# v32.0.0.371 NPAPI https://web.archive.org/web/20200530062840/https://fpdownload.adobe.com/get/flashplayer/pdc/32.0.0.371/flash_player_npapi_linux.x86_64.tar.gz # v32.0.0.371 PPAPI https://web.archive.org/web/20200524080541/https://fpdownload.adobe.com/get/flashplayer/pdc/32.0.0.371/flash_player_ppapi_linux.x86_64.tar.gz |
入手出来たアーカイブから必要なバイナリを取り出して配置しますが、その前に既存のバイナリは適当にリネームしておきましょう。
1 2 3 4 5 6 |
$ ls -l -rw-rw-r-- 1 user user 9064252 Apr 25 2020 flash_player_npapi_linux.x86_64.tar.gz -rw-r--r-- 1 user user 9499706 Apr 25 2020 flash_player_ppapi_linux.x86_64.tar.gz -rw-rw-r-- 1 user user 16648168 Apr 25 2020 libflashplayer.so -rw-rw-r-- 1 user user 18912224 Apr 25 2020 libpepflashplayer.so $ sudo mv ./*.so /usr/lib/adobe-flashplugin/ |
これでFirefox、Chromium向けプラグインの入替えは終わりです。Firefoxでは次のURLで開くページでインストールされているプラグインを確認することが出来ます。
1 |
about:plugins |
調べてみるとそれは、たらい回しのようなリンクを経ていました。
1 2 3 4 5 6 7 8 9 |
/usr/lib/mozilla/plugins/flashplugin-alternative.so -> /etc/alternatives/mozilla-flashplugin $ sudo ln -s /etc/alternatives/mozilla-flashplugin /usr/lib/mozilla/plugins/flashplugin-alternative.so $ sudo chmod 775 /usr/lib/mozilla/plugins/flashplugin-alternative.so -> /usr/lib/adobe-flashplugin/libflashplayer.so $ sudo ln -s /usr/lib/mozilla/plugins/flashplugin-alternative.so /etc/alternatives/mozilla-flashplugin $ sudo chmod 775 /etc/alternatives/mozilla-flashplugin |
正常に動作するか、先ずはAdobe Flash Player ヘルプページを開き、バージョン番号を確認。更にフォト蔵のアルバム一括編集ページも、mms.cfgに延々とURLを列記することなく、正常に開くことが出来ました。
次にChromiumはおそらくバイナリを置いたところを直接見に行っている印象ですが、これはデフォルト設定で違う場所を指定することも可能です。
そしてFlash Playerを同梱していると謳っているChromeはChromiumとは異なり、インストール時にFlashプラグインはホームディレクトリ下へ次のように配置され、さらに改ざん防止が施されています。
1 2 3 4 5 |
$ ls -l ~/.config/google-chrome/PepperFlash/32.0.0.465 drwx------ 2 user user 4096 Dec 10 04:33 _metadata -rw------- 1 user user 19509216 Dec 10 04:33 libpepflashplayer.so -rw------- 1 user user 66 Dec 10 04:33 manifest.fingerprint -rw------- 1 user user 2223 Dec 10 04:33 manifest.json |
試しに上記のバイナリを別のバージョンに入れ替えてみましたが、Flash無効と認識されてしまいました。また、上記「PepperFlash」フォルダ下に異なるバージョンのサブフォルダ(例:32.0.0.371/)を作り、そこへバイナリを配置してからChromeを開くと、そのフォルダは改ざんとみなされ、バッサリと削除されてしまうほどの厳格なセキュリティでした。
China Variant v34に入れ替えてみる
中国大陸向けに専用のバージョンが存在しその最終はv34.0.0.92で、これは今でもこちらのページよりダウンロード可能。せっかく入替えの要領を会得したので、ついでに試してみました。
1 2 3 4 5 6 |
$ ls -l -rw-rw-r-- 1 user user 9309942 Dec 22 07:03 flash_player_npapi_linux.x86_64.tar.gz -rw-rw-r-- 1 user user 8630489 Dec 22 07:34 flash_player_ppapi_linux.x86_64.tar.gz -rwxrwxr-x 1 user user 16937720 Dec 22 07:03 libflashplayer.so* -rw-rw-r-- 1 user user 16569392 Dec 22 07:34 libpepflashplayer.so $ sudo mv ./*.so /usr/lib/adobe-flashplugin/ |
早速テストページを開いてみますが、まさかの地区制限に引っかかりました。
最後に発端を
以上、ここまで意地になってFlashを動かそうとしていたのは、本ドメインで運営しているHong Kong Tram Archiveの日々の画像更新の為でした。画像のホスティング先をフォト蔵にしていて、Webサーバは画像をAPIから呼び出しています。日々撮影した数枚から十数枚になる画像ファイルの一括アップロードにはFlash版を使っていましたが、今回の一件で使えなくなりました。代替に用意されているページはアップロードの失敗率が高く、しかも一括アップロード時は失敗もスルーしてしまうので、どのファイルが失敗したのか結局二度手間。そんなこともあってFlash版使い続けられないかと模索したのですが、フォト蔵側でどうもswf呼び出す部分のスクリプトが消されてしまったようで手詰まり。
参考)