やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Linuxでワンタイムパスワードを取得する方法を調べてみた

リベンジ。

ツール

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と思われる。

f:id:ytyaru:20170309170633p:plain
f:id:ytyaru:20170309171016p:plain
f:id:ytyaru:20170309171708p:plain
f:id:ytyaru:20170309171635p:plain

apt-getでoauthtoolとしても見つからなかった。

 $ sudo apt-get install oauthtool
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
E: パッケージ oauthtool が見つかりません

よくよくみるとoathだった。uがない。そういう名前らしい。

$ oathtool --totp -b {16桁の秘密キー}
233210

xsel

クリップボードコピーするコマンド。

f:id:ytyaru:20170309173118p:plain
f:id:ytyaru:20170309173124p:plain
f:id:ytyaru:20170309173129p:plain

ログイン試行

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の秘密鍵は本当に合っているのか?