LoginSignup
0
0

More than 3 years have passed since last update.

【第2回】pythonで某Authenticator的なツールを作ってみた

Posted at

表示するユーザー情報をDB化してみた。

  • 前回はユーザー情報をソースにそのまま書き込まないといけなかった。
  • 初回実行時にgauth.dbってファイルがなければ作成する。
  • INSERT INTO文でuser1〜3までをDBに入れてる。
  • 実行すると実行した瞬間の認証番号を表示する。
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import tkinter as tk
import pyotp
import sqlite3
import os

if(os.path.exists('gauth.db')):
    pass
else:
    # データベースに接続する
    conn = sqlite3.connect('gauth.db')
    c = conn.cursor()
    # テーブルの作成
    c.execute('''CREATE TABLE gauth(id integer primary key AUTOINCREMENT, name text, private_key text)''')
    # データの挿入
    c.execute("INSERT INTO gauth VALUES (1, 'user1', 'ZAQWSXCDERFVBGT')")
    c.execute("INSERT INTO gauth VALUES (2, 'user2', 'qwertgfdsazxcvb')")
    c.execute("INSERT INTO gauth VALUES (3, 'user3', 'vfrtgbnhyqweraa')")
    # 挿入した結果を保存(コミット)する
    conn.commit()
    # データベースへのアクセスが終わったら close する
    conn.close()
# tkinterでwindowの作成とタイトルを作る
# windowサイズの指定
root = tk.Tk()
root.title(u"g_authentication_tool")
root.geometry("300x200")
# データベースに接続する
conn = sqlite3.connect('gauth.db')
c = conn.cursor()
for a in c.execute("select * from gauth"):
    totp = pyotp.TOTP(a[2]) #鍵的な値
    totp.now()
    # 表示用ラベル
    Static1 = tk.Label(text=a[1])
    Static1.pack(side='left')

    Static2 = tk.Label(text=totp.now())
    Static2.pack(side='left')
    # 挿入した結果を保存(コミット)する
    conn.commit()
# データベースへのアクセスが終わったら close する
conn.close()
root.mainloop()

次回予定

  • 新しいデータの登録部分の作成
  • 時間経過とともに認証番号の変更されるようにする
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0