Wi-FiパスワードをQRコードで共有する

WIFIのパスワードをQRコードで共有する方法です

QRコードを作って,SSIDとパスワードを埋め込むだけで良いのですが

  • QRコード作成サイトを使う→パスワードが流出するので好ましくない
  • スマホやPCのQRコード作成アプリを使う→面倒くさい

ということで pythonスクリプトを使う方法が個人的にはおすすめです.

QRコードの作成

原理は簡単で,以下の文字列をQRコードに変換するだけです

WIFI:S:<SSID>;T:WPA;P:<パスワード>;;

pythonで書くと3行です

import qrcode
img = qrcode.make('WIFI:S:%s;T:WPA;P:%s;;' % ("softbank002", "12345"))
img.save("wifi.png")

上記の例は

  • SSID:softbank002
  • パスワード: 12345

という設定のQRコードを生成して

というファイル名で画像を保存しています

この画像のQRコードを印刷しておけば,QRコードスマホタブレットでスキャンするだけで無線LANに接続できます

店頭のフリーWifi,自宅の来客用など,一つ用意しておくと便利です

QRコードに色をつける

色の指定もできます

オプションが増えるので コマンドライン引数で指定できるようにします

import qrcode
from argparse import ArgumentParser

parser = ArgumentParser()
parser.add_argument("ssid")
parser.add_argument("passwd")
parser.add_argument("output")
parser.add_argument("--bg", "--background", type=str, default="255,255,255")
parser.add_argument("--fg", "--forground", type=str, default="0,0,0")

args = parser.parse_args()
args.bg = tuple(int(x) for x in args.bg.split(','))
args.fg = tuple(int(x) for x in args.fg.split(','))

qr = qrcode.QRCode()
qr.add_data('WIFI:S:%s;T:WPA;P:%s;;' % (args.ssid, args.passwd))
qr.make(fit=True)

img = qr.make_image(back_color=args.bg,
                    fill_color=args.fg)

img.save(args.output)

これを wifi.py という名前で保存しておけば,例えば

  • 背景:緑(0,255,0)
  • 前景:赤(255,0,0)

で作成する場合は

$ ./wifi.py  SSID PASSWORD output.png --fg 255,0,0 --bg 0,255,0

とコマンド一発で生成できます

import qrcode でエラーが出る場合

qrcode モジュールのインストールが必要です

$ pip3 install --user qrcode