使い方はGitHub参照。
成果物
開発環境
- Linux Mint 17.3 MATE 32bit
- SQLite 3.8.2
- Python 3.4.3
問題
毎回OTPを出力しないとログインできない。せめてOTPを少しは楽に出力したい。クリップボードにコピーするとか。
Pythonでクリップボード関数がない。OSによって異なるツールを使う必要がある。クロスプラットフォームなコードが書けない。
調査
http://stackoverflow.com/questions/11063458/python-script-to-copy-text-to-clipboard
対処
- pyperclip.pyをインストールする
- Linuxではxcopyまたはxselコマンドを使うらしいのでインストールする
- 以前Linuxでワンタイムパスワードを取得する方法を調べてみたときにxselをインストールしていた
- Linuxではxcopyまたはxselコマンドを使うらしいのでインストールする
クリップボード用のコマンドも一つではない。環境依存が根深い。
tkinterが使えない
昔tkinter
で動作したような気がしたが、今やってみると以下のようなエラーが出る。
ImportError: No module named '_tkinter', please install the python3-tk package
どうやらインストールの必要があるらしい。たしかPythonはGUIに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をコピーするコードは書けた。