リベンジ。
ツール
Mac/LinuxのコンソールからコマンドでGoogle Authenticatorのワンタイムパスワードを確認する | 俺的備忘録 〜なんかいろいろ〜
ワンタイムパスワードを算出するCUIツールがあるらしい。
前回まで
ワンタイムパスワードの自動取得ができない問題があった。そのせいでGitHubの二要素認証(Two-Factor, 2FA)アカウントへのログインやAPIが完全自動化できなかった。
GitHubでの二要素認証
WinAuthで二要素認証のワンタイムパスワードを生成させてみた - やってみる
GitHubで二要素認証してみた - やってみる
二要素認証でGitHubAPIを叩いてみた - やってみる
ワンタイムパスワードを自動で取得する方法の調査
ワンタイムパスワード生成ライブラリの調査1 - やってみる
ワンタイムパスワード生成ライブラリの調査2 - やってみる
ワンタイムパスワード生成ライブラリの調査3 - やってみる
- 基準となる時刻
- 秘密キー
上記があれば自前で計算できるはずだが、ログインできなかった。基準となる時刻がよくわからない。WinAuthのソースコードをみるとGoogle.comサーバの時刻を取得しているように見えたが、試してみてもログインには至らなかった。原因不明。
インストール
oauth-toolkit
oauth-toolkit
のインストールを試みる。
Synapticパッケージマネージャで検索したら発見。oauthtool
と思われる。
apt-getでoauthtool
としても見つからなかった。
$ sudo apt-get install oauthtool パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 E: パッケージ oauthtool が見つかりません
よくよくみるとoath
だった。u
がない。そういう名前らしい。
$ oathtool --totp -b {16桁の秘密キー} 233210
xsel
クリップボードコピーするコマンド。
ログイン試行
GitHubアカウントを作成し、TwoFactor認証を有効にする。ログインを試みる。
二要素認証の画面になったら、ターミナルで以下のコマンドを叩く。
$ oathtool --totp -b {16桁の秘密キー} | xsel --clipboard --input
ブラウザに戻り、Ctrl+Vキーでコピーされたワンタイムパスワードを貼り付ける。Verifyボタンを押下してログインできれば成功。
しかし失敗した。
予想
おそらく現在時刻がローカルのものを使っている。これをGoogle.comサーバのものにすると成功するかもしれない。 もしくはGitHubサーバのものにすると成功するかもしれない。
調べてみた
oathtool github two-factorでググったらいかがヒット。感謝。
Generating Two-Factor Authentication Codes on Linux - Thirld Word Blog
Google 翻訳
以下のようなコマンドにしてみる。
$ oathtool --base32 --totp {16桁の秘密キー} | xsel --clipboard --input
ログインに再挑戦するも、失敗した。
基準となる時刻を設定する案がまだ残っている。
macos - oathtool never agrees with Google Authenticator - Super User
所感
というか、2FAの秘密鍵は本当に合っているのか?