資安

python編寫登陸模塊

# auth marcuya
'''
作業:編寫登陸模塊
1.輸入用戶名和密碼
2.認證成功顯示歡迎信息
3.輸錯3次後鎖定用戶
設計思路:
1.用戶信息保存文件有5個字段:序號,用戶名,密碼,密碼輸入錯誤次數,是否鎖定
2.密碼輸入錯誤次數大於2,鎖定字段為TRUE,用戶不能登陸'''

import openpyxl

while True:

    #獲取用戶輸入的用戶名和密碼
   print()

    _username = input("please input username:")

    _password = input("please input password:")

    # 打開文件
   userInfoFile = openpyxl.load_workbook("homeWork1CountInfo.xlsx")

    userInfoSheet = userInfoFile.active

    #errorcount = userInfoSheet.cell(row=2, column=4)
   #print(errorcount.value)
   #errorcount.value = 3
   #userInfoFile.save("homeWork1CountInfo.xlsx")
   #逐行輪詢
   for rows in userInfoSheet.iter_rows():

        no = rows[0]

        username = rows[1]

        password = rows[2]

        errorCount = rows[3]

        lock = rows[4]

        #print("{} {} {} {} {}".format(no.value, username.value, password.value, errorCount.value, lock.value))
       if _username == username.value:

            #賬戶被鎖定
           if lock.value == True:

                print("too many error count to input, the user {user} is locked,please contact administrator!".format(user=username.value))

                break
           #密碼正確,此處需要把值統一為字符類型對比
           elif _password == str(password.value):

                print("welcome user {user} login !".format(user = username.value))

                #將輸入錯誤次數置0
               userInfoSheet.cell(row=(no.value + 1), column=4).value = 0
               userInfoFile.save("homeWork1CountInfo.xlsx")

                break
           else:

                #密碼錯誤,密碼輸入錯誤次數+1
               errorCount.value = errorCount.value + 1
               userInfoSheet.cell(row=(no.value+1), column=4).value = errorCount.value

                userInfoFile.save("homeWork1CountInfo.xlsx")

                print("invalid username or password")

            #密碼輸入錯誤次數大於等於3,鎖定賬戶
           if errorCount.value > 2:

                lock.value = True
               userInfoSheet.cell(row=(no.value+1), column=5).value = True
               userInfoFile.save("homeWork1CountInfo.xlsx")

                break
           else:

                break

Leave a Reply

Your email address will not be published. Required fields are marked *