28 กันยายน 2558

Published กันยายน 28, 2558 by with 0 comment

สร้าง One Time Password ในภาษาไพทอน

สวัสดีผู้อ่านทุกท่านครับ บทความนี้ผมขอพูดถึงเรื่อง การสร้าง One Time Password ในภาษาไพทอน (Python) กันครับ

One Time Password (หรือที่รู้จักกันในชื่อ OTP) เป็นรหัสผ่านที่ใช้งานได้เพียงครั้งเดียว ตัวอย่างเช่น การทำธุรกรรมทางการเงินกับธนาคารผ่านอินเทอร์เน็ต จะมีรหัสผ่านยืนยันส่ง SMS มายังโทรศัพท์มือถือ นี่คือ รหัส One Time Password

ภาษาไพทอน (Python) ได้มีนักพัฒนาได้พัฒนาโมดูลสำหรับสร้าง One Time Password ในภาษาไพทอนไว้แล้ว คือ โมดูล pyotp

โมดูล pyotp เป็นโมดูลสำหรับสร้าง One Time Password

สามารถติดตั้งได้โดยใช้คำสั่ง pip:
pip install pyotp

การใช้งาน


ให้ทำการ

[python]import pyotp[/python]

เข้ามาทุกครั้ง

ใช้งาน One Time Password



[python]
totp = pyotp.TOTP('base32secret3232')
totp.now() # => 492039

# OTP verified for current time
totp.verify(492039) # => True
time.sleep(30)
totp.verify(492039) # => False
[/python]

ดึงรหัส OTP ถัดไป



[python]
hotp = pyotp.HOTP('base32secret3232')
hotp.at(0) # => 260182
hotp.at(1) # => 55283
hotp.at(1401) # => 316439

# OTP verified with a counter
hotp.verify(316439, 1401) # => True
hotp.verify(316439, 1402) # => False[/python]

สร้าง base32 Secret Key



[python]pyotp.random_base32() # returns a 16 character base32 secret. Compatible with Google Authenticator[/python]

การตั้งค่ากับ Google Authenticator


แอพ Google Authenticator บนมือถือ Android, iOS สามารถสร้างลิงค์ otpauth:// แล้วนำลิงค์นี้ไปเพิ่มลงแอพ สำหรับใช้สร้างรหัส One Time Password ได้

[python]
totp.provisioning_uri("admin") # บัญชีที่ชื่อว่า admin จะได้ otpauth://totp/admin?secret=base32secret3232 [/python]

นำลิงค์ที่ได้ไปสร้าง QR code (https://chart.apis.google.com/chart?cht=qr&chs=250x250&chl=otpauth://totp/admin?secret=base32secret3232) แล้วนำไปสแกนกับแอพ Google Authenticator จะได้รหัส One Time Password มา แล้วลองเปรียบเทียบรหัสที่ได้ระหว่างโปรแกรมไพทอนที่เขียนกับแอพ Google Authenticator

[python]
import pyotp
totp = pyotp.TOTP("base32secret3232")
print("Current OTP: %s" % totp.now())[/python]

ผลลัพธ์
Current OTP: 250602

แอพ Google Authenticator
สร้าง One Time Password ในภาษาไพทอนตั้งค่ากับ Google Authenticator

หน้าหลักโมดูล pyotp https://github.com/pyotp/pyotp

ลองนำโมดูลนี้ไปออกแบบความปลอดภัยให้กับระบบกันดูครับ

ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)