やってみる

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

ワンタイムパスワードをクリップボードに出力するPythonスクリプトを書いた

使い方はGitHub参照。

成果物

GitHubPython.OTP.tools.201704200841

開発環境

問題

毎回OTPを出力しないとログインできない。せめてOTPを少しは楽に出力したい。クリップボードにコピーするとか。

Pythonクリップボード関数がない。OSによって異なるツールを使う必要がある。クロスプラットフォームなコードが書けない。

調査

http://stackoverflow.com/questions/11063458/python-script-to-copy-text-to-clipboard

対処

クリップボード用のコマンドも一つではない。環境依存が根深い。

tkinterが使えない

tkinterで動作したような気がしたが、今やってみると以下のようなエラーが出る。

ImportError: No module named '_tkinter', please install the python3-tk package

どうやらインストールの必要があるらしい。たしかPythonGUIにTkが標準でついているとどこかで見た気がしたのだが。

pyperclip

インストー

$ sudo pip3 install pyperclip
Downloading/unpacking pyperclip
  Downloading pyperclip-1.5.27.zip
  Running setup.py (path:/tmp/pip_build_root/pyperclip/setup.py) egg_info for package pyperclip
    
Installing collected packages: pyperclip
  Running setup.py install for pyperclip
    
Successfully installed pyperclip
Cleaning up...
import pyperclip
pyperclip.copy('pyperclipでクリップボードにコピーする。')
print(pyperclip.paste())

やってみたいができそうにない

  • 自動ログインしてブラウザの表示までしたい
  • 複数アカウントでログインしたい

Firefoxで自動ログインするAddOnが作れたらいいが、Firefoxは1サイト1アカウントでしかログインできない。プロファイルを複数作るにしても使いわけが難しいしメモリ消費も膨大になってしまう。

そもそもブラウザの仕組みを知らないし、どうやって実装すればいいかもわからない。

仮に実現できたとしても本質的に2FAではなくなってしまう。セキュリティ的にいかがなものか。

仕方ないのでOTPのクリップボードコピーで妥協する。

所感

とりあえずクリップボードにOTPをコピーするコードは書けた。

今後Pythonではpyperclipを使ってクリップボード操作をする。コマンドならxsel