cafegale(LeafCage備忘録)

LeafCage備忘録(はてなダイアリー)と統一しました。

三井住友カードを騙るフィッシング詐欺メールが来て途中まで偽物だと気付かず入力してしまったレポートする

こんなメールが届いた。

f:id:leafcage:20210131004214p:plain
身に覚えのない利用額を見せられる

いつも三井住友カードをご利用頂きありがとうございます。
お客様のカードご利用内容をお知らせいたします。

ご利用カード:ANA VISAカード

◇利用日:2021/01/31 0:10:43
◇利用取引:買物
◇利用金額:20,677円

利用いただき、ありがとうございます。このたび、ご本人様のご利用かどうかを確認させていただきたいお取引がありましたので、誠に勝手ながら、カードのご利用を一部制限させていただき、ご連絡させていただきました。つきましては、以下へアクセスの上、カードのご利用確認にご協力をお願い致します。お客様にはご迷惑、ご心配をお掛けし、誠に申し訳ございません。何卒ご理解いただきたくお願い申しあげます。ご回答をいただけない場合、カードのご利用制限が継続されることもございますので、予めご了承下さい。

▼ご利用確認はこちら
https://www.smbc-card.egfhj.com ←※詐欺サイトなのでうっかり情報を入力しないように

身に覚えのない利用金額、三井住友カードを持っていないのならすぐに詐欺だとわかるが、作ったまま使っていない三井住友カードを持っていたので、確認のためメールに記載しているリンクを踏んでしまった。

そうしたら以下の画面が

f:id:leafcage:20210131011946p:plain
ちなみに今入ろうとしたらGoogleからフィッシングの警告が出たがさっきまでは出てなかった

この時点で何の疑いもなく自分のIDとパスワードを入力してしまった。
偽サイトなので実はデタラメなIDとパスワードを入力しても次に進める。

そうしたら、次にこういう画面が。

f:id:leafcage:20210131010153p:plain
やけに入力項目が多い!

カード番号やセキュリティーコードまで入力させようとしていることでさすがにフィッシングに気づいた。

しかしフィッシングサイトの入り口でログイン情報(IDとパスワード)を入力してしまったのでそれは詐欺師に知られてしまったのだった。
三井住友カードのサイトは他の情報も入力させるので、IDとパスワードを知っているだけでは核心的な情報にまで到達できないが、とはいえバレたままでは不安なのですぐにIDとパスワードを変更した。
お気に入りのIDとパスワードを捨てざるを得なくなって悔しい。

身に覚えのない利用額を見せてカードが不正利用されてますよと不安をあおって釣る手口だ。気を付けよう。

さよならMEGASync。OneDriveに移行することにする。

Dropboxから移行したMEGASyncの同期の挙動がずっと懸念を感じさせるもので、かねてからフラストレーションが溜まっていたが、いよいよ脱却を図ることにした。
ずっと困っていた様は以下の記事を見てもらえればわかると思う。

MEGASyncの良かったところ

MEGASyncのダメなところ

  • 公式サイトに繋がるのが遅い。変なロード画面を見せられる。
  • 更新したファイルがわかりにくい
    • ファイルを新規作成しても更新してもメッセージでは「foo.txtが追加されました」と出て既存ファイルの更新なのか新規なのかわからない。
    • あるファイルを更新するたびに「foo.txtが追加されました」がリストされるので同じメッセージが複数行並ぶことになる。
    • ファイル単位の更新情報しか表示されない。ディレクトリの新規作成・リネームは表示されない。
  • 競合が起きたときの挙動がおかしい。→同じクラウドロケーションに同期されたクライエントに、同時に矛盾する行動が取られると、どうなりますか?:“MEGAsyncの現在のバージョンは、このような衝突を決定論的な方法で解決しません。 可能であればそれらを避けてください。”
  • ファイル・フォルダの削除・リネームを正しく識別できていないことがある。削除したはずのファイルがいつの間にか復活していたりリネーム前のファイルが再び作成されたりする。
    • ファイルの作成と更新については問題なく識別してるのでこの2つだけを主に行うフォルダにだけ使うといいだろう

特にこの、ファイル・フォルダの削除・リネームを追跡できていないことが致命的で、ファイルを激しく追加・削除する git を使っていたらシステムが破壊される懸念があった。

OneDriveのよさげなところ

  • Windows標準搭載。ただしバージョンが古い場合は公式サイトからダウンロードして更新しないと動かない。
  • 容量が5GB。容量追加サブスクの料金が安い。さらにMicrosoft 365のサブスクもあるので最新Officeを使いながらという選択もできる。なお、サブスクは直接申し込むよりAmazonから購入した方が安い
  • ちゃんと競合を認識して対処してくれる。競合した古いファイルはコンピュータ名をポストフィックスにしてリネームして保持してくれる。

OneDriveのダメそうなところ

  • とにかくメモリを食う。特に多数のファイルを走査、同期しているときのメモリ消費はヤバい。
  • Linux標準クライアントはない。有志が作成した代替クライアントを試すことになるだろう。そして代替クライアントがずっとサポートしてくれるかどうかはわからない。
  • 除外ファイル・フォルダの設定はできない。「node_modules」などをどうするか決めねばならない。
  • 一度オフラインにしてから再度オンラインにした時の同期がとても遅い。ファイルシステム全体を確認して比較するアルゴリズムがよくないのではないかと思う。
  • Dropboxに比べて遅いらしい→「Dropbox→OneDrive→Dropbox」。OneDriveへ移行した私がDropboxとの併用に戻した理由
  • 更新されたファイルが更新ファイル一覧にリストされない時がある。
  • 最近更新されたファイルがオンライン上やほかのデバイス上で確認できない。つまり更新されたことが明示されないけどファイルを開いたら更新されていたなんてことがある。

OneDriveはファイルオンデマンドが有効になっていて、他のマシンから同期されたファイルの実体はオンライン上にしかなくて使用時のみダウンロードするようになっている。これをやめさせるには設定から「容量を節約し、ファイルを使用するときにダウンロード」のチェックを外すか、エクスプローラで右クリックして「このデバイス上で常に保持する」を選択する必要がある。

気になる

news.mynavi.jp

前述の「MEGA」とコンセプトが非常によく似た、個人利用向けのオンラインストレージサービスが「pCloud」だ。音楽用のフォルダと、写真用のフォルダがデフォルトで用意されていることからも、どのようなユーザをターゲットとしているのかが伺い知れる。ちなみにMEGAと違って日本語化されておらず、英語で利用する。

Dropboxの代わりに最適なのは? 3つの無料オンラインストレージを徹底比較 | マイナビニュース

度重なるMEGASyncの不具合に我慢できずOneDriveに移行しようかと思ったけど

OneDrive重い。
MEGASyncですら結構重い(177MB)のに、264MBもある。
メモリを積んでいない貧弱PCではまず動かせない。

失ってみて改めてDropBoxって優秀だったんだなって気づかされる。

単体テストに関するスタンス

外部仕様(ブラックボックス的なの)のテストはなるべく最初に書くが、内部仕様(実装・ホワイトボックス的なの)のテストは実装仕様が安定するまでは、特に重要な部分に絞って*1、仕様が安定した時点で(先に作成した)中身が空のテストケースを埋めていくか修正・削除していくことにする。

理由:外部仕様と比べて内部仕様は不安定で変更が生じやすい。
というか Vim script はUIとビジネスロジックの分離がしづらくて、UIを変更することはほぼそのままビジネスロジックを大幅修正することなので仕様が確定するまで待つ必要がある。

内部ロジックに依存しすぎたユニットテストは、変更に対して脆くなるため、テスト対象の外部仕様からテストデータを選択したほうがよいという側面もあります。

https://dev.classmethod.jp/articles/blackbox_testing_and_whitebox_testing/

*1:でも一応どんなテストが必要か忘れないように、こんなテストしたいという中身のないテストケースだけは作っておく

MEGAsyncが逆同期をしてくるのでBox にクラウドストレージを移行しようかとしたけど辞めた理由

以前のMEGAsync の評価の記事→Dropboxの移行先としてのMEGAsyncの評価 - cafegale(LeafCage備忘録)

削除したファイルを勝手に復活させる逆同期をMEGAsync がやらかしてきて、古いファイルが復活したせいでコンパイルが通っていたのが通らなくなったという事件が起きて、(git statusで古いファイルが存在するのが見えてわかった)、いよいよこのような整合性が大切なファイルをMEGAsyncに任せておけないと思ったので、Boxに乗り換えようとした。

結論から言うとBoxは乗り換えるのに不安要素があった。

  • 無視されるファイルが決まっていて変更できない。tmpが名前に含まれてるファイルや隠しファイルが同期されないのは致命的。
    support.box.com
  • ファイルシステム上にファイルがあるように見えるが、実体はクラウドにある形式。フォルダ右クリックで出るコンテキストメニュー内の「オフライン利用可」を選択するとそのマシンではオフラインで利用できるが、代わりに他のマシンではクラウドでの利用を余儀なくされそう(おそらく排他的)
    この認識は間違ってる可能性がある。まだ検証中。
  • クラウドストレージディレクトリ「Box」の場所はレジストリを触らないと変更できない。

support.box.com

  • Ctrl Shift Alt B というキーをグローバルに奪い取ってしまう。
  • クライアントソフトに設定項目がない。ヘルプやログアウトはあるけど見事に設定についての項目は何も用意されていない。


まだ検証が必要だがその間はMEGAsyncにファイル管理を任せることになり、しばらく心臓に悪そうだ。
ところで、MEGAsyncによる同期事故の報告についてオンライン上で見かけないのが不思議だ。私の環境が悪いのか?

TVからのTSファイルをffmpegでmp4エンコードする現在の設定

ことわっておくが私もこのffmpegのオプションの詳細についてよく把握できていないものが多い。それほど複雑ってことだ。
理屈がわからないまま値を変更していって試行錯誤で決まったものも多く、

readonly SVGA="800:600"

ffmpeg -y -dual_mono_mode main -i "src.ts" -movflags +faststart \
  -flags +loop -partitions parti4x4+partp8x8 -me_method umh -subq 8 -me_range 16 -g 250 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 1 -qmin 10 -rc_eq "blurCplx^(1-qComp)" -bf 16 -bidir_refine 1 -refs 16 -deblock 0:0 \
  -c:v h264_qsv -b:v 4M -crf 25 -pix_fmt yuv420p -profile:v main -look_ahead 0 -vf yadif,scale=$SVGA -preset slow \
  -c:a libfdk_aac -vbr 4 "out.mp4"
  • -dual_mono_mode main
  • -c:v h264_qsv -b:v 4M -crf 25
  • -c:a libfdk_aac -vbr 4
    • FDK-AACライブラリを使って、可変長(VBR)の5段階中4の品質でエンコードする。(だいたいビットレートが105~110kbpsくらいになる。)
    • -c:a copy の無劣化でやるのが一番楽なのだが、-c:a copyだとエラーが出てエンコードできないケースがあるので、多少の劣化に目をつぶって汎用性を持たせた結果。
    • VBRなハズなのにMediaInfoではCBRと表示されるから混乱した。音声だけ抜き出すとVBRと表示されるのでますます混乱する。深く考えないことにした(このことについてくどくど後述している)。
  • -flags +loop -partitions parti4x4+partp8x8 -me_method umh -subq 8 -me_range 16 -g 250 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 1 -qmin 10 -rc_eq "blurCplx^(1-qComp)" -bf 16 -bidir_refine 1 -refs 16 -deblock 0:0

AACについてのさらなる探求

音質比較記事
ch.nicovideo.jp
kamedo2.hatenablog.jp
AACエンコーダの音質比較

VBRにするか、HE-AAC

AACとは (エーエーシーとは) [単語記事] - ニコニコ大百科
ニコニコ大百科を見る限りAACビットレートをすごく小さくしない限りは、HE-AACにする意味はあまりなさそうだ。

-vbrフラグを付けてるのに、MediaInfoでmp4のデータを見るとオーディオがCBRと表示されるため、「もしかしてQSVだと強制的にCBRにされる?」と疑ったが、そのデータからAACだけを抜き出すとVBRと表示されるため、よくわからんがMediaInfoの解析ミスということにしておく。
PotPlayerのようなCtrl+F1で再生中のリアルタイムビットレート確認できるプレイヤーでも刻刻ビットレートが変動しているのが見えるし、実質VBRなのだろう。

ここで LC-AAC、HC-AACの違いは

LC-AACAAC-LC (AAC Low Complexity)と呼ばれる基本機能だけのもの
HE-AAC :High-Efficiency AAC、aacPlus、AAC+SBR、aacPlus Version 2、Enhanced aacPlus、AAC+SBR+PS と呼ばれる低ビットレートで高音質となるもの

となっています。

HE-AAC を使う場合は

  • profile:a aac_he

または

  • profile:a aac_he_v2

を指定します。
v2のほうが新しい規格で、48kbps 以下の低ビットレートでの音質が改善します。

  • vbr オプションの [品質] の部分には 1〜5 を指定します。

HE-AAC を使う場合は 3 が最高品質、
そうでない場合は 5が最高品質です。

FFmpeg で高音質 AAC 変換できるようにする
  • profile:a で指定できるのが

aac_low :AAC-LC 何も指定しないとこれになる
aac_he :HE-AAC 44.1kHzでは28kから使える 推奨32k-48k
aac_he_v2 :HE-AACv2 44.1kHzでは28k-64kまで使える 推奨16-24k

【ffmpeg】 fdk-aac を ffmpeg に組み込む - ニコニコ動画研究所

なるべく小さい音声ファイルを作る - Qiita

サンプルレート-arについて

映像の場合は48kHzが標準(音楽業界では44,1kHz)参考。特に指定しない限りはエンコード時にエンコード元のサンプルレートが引き継がれる。

Windows用のlibfdk_aacが使えるffmpegを手に入れるまでの長い道のり

以前からAACエンコーディングするならFDK-AACという情報は得ていた。
ffmpegのオーディオコーデックの指定:tech.ckme.co.jp
ただ、ライセンスの問題から、FDK-AACを組み込んだffmpegは配布されておらず、使いたければ、自分でビルドするしかないらしく、かつて一度ビルドしようとして失敗して、あきらめてAACエンコーディングを行わない方針をとっていた。
TVのTSファイルをmp4にエンコードするのに、-c:a copyで音声部分はエンコードしないで無劣化音声をそのまま使うようにしていた。ただ、それだとエラーが出てmp4エンコードできないファイルを発見したので、再びFDK-AAC付きのビルドに挑戦することにした。
(以下のようなメッセージが出てエンコードが開始しない。)

Last message repeated 6 times
[mp4 @ 000001af4198b2c0] Error applying bitstream filters to an output packet for stream #1: Not yet implemented in FFmpeg, patches welcome
av_interleaved_write_frame(): Not yet implemented in FFmpeg, patches welcome
[mp4 @ 000001af4198b2c0] Error applying bitstream filters to an output packet for stream #1: Not yet implemented in FFmpeg, patches welcome
av_interleaved_write_frame(): Not yet implemented in FFmpeg, patches welcome
[mp4 @ 000001af4198b2c0] Error applying bitstream filters to an output packet for stream #1: Not yet implemented in FFmpeg, patches welcome
av_interleaved_write_frame(): Not yet implemented in FFmpeg, patches welcome
[mp4 @ 000001af4198b2c0] Error applying bitstream filters to an output packet for stream #1: Not yet implemented in FFmpeg, patches welcome
av_interleaved_write_frame(): Not yet implemented in FFmpeg, patches welcome
[mp4 @ 000001af4198b2c0] Error applying bitstream filters to an output packet for stream #1: Not yet implemented in FFmpeg, patches welcome
av_interleaved_write_frame(): Not yet implemented in FFmpeg, patches welcome
[mp4 @ 000001af4198b2c0] Error applying bitstream filters to an output packet for stream #1: Not yet implemented in FFmpeg, patches welcome
av_interleaved_write_frame(): Not yet implemented in FFmpeg, patches welcome
[mp4 @ 000001af4198b2c0] Error applying bitstream filters to an output packet for stream #1: Not yet implemented in FFmpeg, patches welcome
av_interleaved_write_frame(): Not yet implemented in FFmpeg, patches welcome
[mp4 @ 000001af4198b2c0] Error applying bitstream filters to an output packet for stream #1: Not yet implemented in FFmpeg, patches welcome
av_interleaved_write_frame(): Not yet implemented in FFmpeg, patches welcome

先に結論

ffmpeg-windows-build-helpersを使う

Windows Subsystem for Linux (WSL) 上でWindows用のffmpegをビルドしてくれるスクリプト
github.com
Windows用FFmpegをWindows 10でビルドする (Bash on Ubuntu on Windows)
ffmpeg-windows-build-helpersの使い方 | EncTools
ffmpeg-windows-build-helpersでWindows版ffmpegをビルドする | つくみ島だより←最も参考にした。

MSYS2/MinGwを使ってビルドしようと苦戦するより、クロスコンパイル(linuxからwindows用プログラムをコンパイルする)できるならそうした方が謎のエラーに格闘して無駄な時間を過ごさなくていいと学んだ。

実行したコマンド

$ ./cross_compile_ffmpeg.sh --build-ffmpeg-static=y --build-intel-qsv=y --disable-nonfree=n

dllを使わず単体にしたいから--build-ffmpeg-static=y、fdk-aacを使いたいから--disable-nonfree=n。
そうしたらいろいろ不足しているパッケージを要求される。
大抵のパッケージはlinuxbrewからでもインストールできるが、 clangとpaxはlinuxbrewでは提供されていないので、それだけはaptで入れなければいけない。

$ sudo apt install clang pax

あと、パッケージが揃っていてもなんか実行前にエラーが出るときは

$ sudo bash -c 'echo 0 > /proc/sys/fs/binfmt_misc/WSLInterop'

を実行する(この状態は再起動すると元に戻る。)。

あと、linuxbrewでインストールする際に、pyenvのバージョンが上がったせいで、pythonが呼び出せなくなって一度スクリプトが異常停止した。
pyenvがバージョンアップしたときには

pyenv rehash

を実行して環境を更新しなければいけない。*1
参考:pyenvをアップデートしたらlibexec/pyenv: No such file or directoryとか言われた話 | エンジニアもどきの技術メモ

3時間くらい?して、ビルドが完了し、

ffmpeg-windows-build-helpers\sandbox\win64\ffmpeg_git_with_fdk_aac

以下にffmpeg.exe などのファイルができているので、それをWindowsのパスの通ったディレクトリに移して終了。

杜撰ブログ : WSLのUbuntuでWindows用ffmpegをビルドするPart2←でもうまくいかない例もあるようだ。


失敗したルート

msys2のmingwで自前でビルドする

参考情報
fdk-aacとx264が使えるffmpegをビルドする(Windows)←もっとも参考にした
ffmpegをwindows向けにビルドした方法 - Qiita←msys2の他にVisual Studioでの方法も載ってる
Windows10 でffmpegをコンパイル:ろくさぶろ:So-netブログ

いくらやっても最終的に

$ ./configure --prefix=/mingw64/x86_64-w64-mingw32 --enable-gpl --enable-version3 --enable-nonfree --enable-libfdk-aac --enable-libx264 --extra-ldflags=-static --optflags=-O2
ERROR: libfdk_aac not found

というエラーで停止してしまう。

$ pacman -S mingw-w64-x86_64-fdk-aac

していても、

・fdk-aacコンパイル
cd fdk-aac
./configure --prefix=/mingw64/x86_64-w64-mingw32
make -j3
make install

していてもだ。なぜかfdk-aacライブラリを認識してくれない。

media-autobuild_suite

github.com
QSV 対応の ffmpeg をつくる | ニコラボ←ここでお勧めされていて知った。

灰色のプロンプト画面からの結構長いダイアログに答えていくと最終的に自動ビルドしてくれるスクリプト
途中でビルドが失敗する。

Likely error (tail of the failed operation logfile):
libtoolize: linking file 'm4/ltversion.m4'
libtoolize: linking file 'm4/lt~obsolete.m4'
configure.ac:41: error: installing './ar-lib'; error while making link: Operation not permitted
configure.ac:39: error: installing './compile'; error while making link: Operation not permitted
configure.ac:42: error: installing './config.guess'; error while making link: Operation not permitted
configure.ac:42: error: installing './config.sub'; error while making link: Operation not permitted
configure.ac:26: error: installing './install-sh'; error while making link: Operation not permitted
configure.ac:26: error: installing './missing'; error while making link: Operation not permitted
examples/c/decode/file/Makefile.am: error: installing './depcomp'; error while making link: Operation not permitted
autoreconf: automake failed with exit status: 1
autogen failed. Check D:/media-autobuild_suite/build/flac-git/ab-suite.autogen.log
This is required for other packages, so this script will exit.
  Creating diagnostics file...

All relevant logs have been anonymously uploaded to https://0x0.st/iDAb.zip
Copy and paste [logs.zip](https://0x0.st/iDAb.zip) in the GitHub issue.
Make sure the suite is up-to-date before reporting an issue. It might've been fixed already.
Try running the build again at a later time.

こんなエラーが出る。"Operation not permitted" と出ることから何かしらの権限的なエラーだとは思うのだが。

試していないルート

FFMPEGビルド改自動化シェルスクリプトX0008

ffmpegビルド(AAC+.FDK-AAC)・がぁんさん自動ビルド編:moribitoブロマガ - ブロマガ
ツールテスト-ニコニコミュニティ
古そうなので試していない。

【AAC+】 HE-AAC が使える ffmpeg をつくる方法 - ニコニコ動画研究所←ほかにもビルド自動化スクリプトはあったようだ。これは2012年の話なので現在ではほとんどのスクリプトは削除されたか更新終了したかしたようだ。

*1:こういうことがあるから私はpythonをグルー言語として使うことには否定的だ。python本体やpyenvがバージョンアップするとパスが変わって動かなくなるということが以前にもあって、気づかないうちに動かなくなってるの怖って思った。