用python写的模拟系统登录三次验证简单程序

简介:     由于工作需要,最近在学习python,看了网上的python视频教程,有个用python写的模拟系统登录三次验证的需求。因本人原来就是开发出身,让我燃起了写程序的欲望。

    由于工作需要,最近在学习python,看了网上的python视频教程,有个用python写的模拟系统登录三次验证的需求。因本人原来就是开发出身,让我燃起了写程序的欲望。

    通过这个简单的程序,我不仅新认识了一种编程语言,还让自己学了不少知识,比如:python在列表与字符串互转的过程中,需要注意英文中括号、英文逗号的问题;还有比较诡异的是,在向数组中append英文逗号时,英文逗号后边竟然给附加了一个空格;还锻炼了自己的逻辑思维,最重要的是自己很享受程序的调试的过程,尽管程序不重要,但是,看着程序慢慢变长,功能逐渐达到自己的预期,很开心。

    附上程序:

    配置文件infomation.py:

[account]
username = ['oracle', 'sybase', 'db2', 'mysql', 'dsfasdf', 'e']

[password]
password = ['redhat5', 'hellow', 'haha', 'heihei', 'adsf', 'f']

[islocked]
islocked = ['0', '0', '1', '1', '1', '1']

[islegal]
islegal = ['1', '1', '1', '0', '0', '0']

    主程序文件user login.py:

# -*- coding: utf-8 -*-:
import ConfigParser
import sys

#定义全局变量
i = int(0)
username = ''
password = ''
value = []
value1 = []
value3 = []
value4 = []
isLegal = []
islegal_flag = 0
isLocked = []
islocked_flag = 0

#定义读取配置文件
conf = ConfigParser.ConfigParser()
myfile = 'C:/Users/localadmin/Desktop/pythonl/infomation.py'
conf.read(myfile)

"""
程序主体:while -- else循环
功能:实现模拟系统登录三次验证,初始状态时,系统对合法用户登录三次以内输入验证信息正确可正常登录,
如果合法用户登录超过三次,合法用户将被锁定,以后无法登录,需要管理员修改配置信息方可后续登录操作,
非法用户尝试登录穷举超过三次,系统将记录非法用户信息,下次非法用户被尝试穷举时将直接拒绝登录。
"""
while i<3:
    #定义登录成功与否标识
    flag = 1
    i = i+1
    #接受用户名和密码的输入
    username = raw_input('username:')
    password = raw_input('password:')
    #定义配置文件的节点名为account,获取配置文件中的账号信息,进行后续的匹配
    node = 'account'
    #获取指定节点下的指定key值
    key = conf.options(node)[0]
    #将指定key值对应的信息按照'号拆分成字符列表,拆分后列表从下标0开始的奇数个元素为有效值
    value = conf.get(node,key).split("'")
    #定义账号列表编译变量
    arr_ind = int(0)
    #取账号列表下标0开始的奇数个元素
    for arr_ind in range(1,len(value),2):
        #对账号列表下标0开始的奇数个元素与用户输入信息进行比对
        if value[arr_ind] == username:
            node1 = 'password'
            key1 = conf.options(node1)[0]
            #当用户账号在配置信息中存在时,取用户密码并拆分成列表,密码列表与账号列表相同,相同下标隶属于同一用户
            value1 = conf.get(node1,key1).split("'")
            node3 = 'islocked'
            key3 = conf.options(node3)[0]
            # 当用户账号在配置信息中存在时,取用户锁定标识并拆分成列表,锁定标识列表与账号列表相同,相同下标隶属于同一用户
            value3 = conf.get(node3,key3).split("'")
            #定位登录用户的锁定列表到指定下标,与账号列表下标相同
            islocked_flag = int(value3[arr_ind])
            node4 = 'islegal'
            key4 = conf.options(node4)[0]
            # 当用户账号在配置信息中存在时,取用户合法标识并拆分成列表,合法标识列表与账号列表相同,相同下标隶属于同一用户
            value4 = conf.get(node4,key4).split("'")
            # 定位登录用户的合法列表到指定下标,与账号列表下标相同
            islegal_flag = int(value4[arr_ind])
            #登录用户账号存在情况下的锁定状态判断,锁定则直接退出系统,并告知用户被锁定,处理方法是联系管理员,未锁定且密码正确,则成功登录
            if islocked_flag == 1:
                print 'Sorry, your account',username,' is locked ,connect system administrator please!'
                #登录用户账号存在情况下的合法性判断,如果是曾经被用作穷举攻击的账号,直接退出系统并发出警报
                if islegal_flag == 0:
                    print 'Alarm:Check for illegal attacked!!!!'
                sys.exit()
            else:
                if username == value[arr_ind] and password == value1[arr_ind]:
                    print 'Login success,welcome ', username, '!'
                    #修改登录标识并退出for循环体
                    flag = 0
                    break
                else:
                    print 'username or password input is error! try again please!'
    #判断登录标识并退出while循环体
    if flag != 1:
        break
else:
    # 用户尝试登录超过三次,进行账号锁定或对穷举攻击信息记录
    print 'sorry! login attempts excessive three times, account ',username,' is locked!'
    #定义配置文件的节点与键值信息
    node = 'account'
    key = 'username'
    node1 = 'password'
    key1 = 'password'
    node3 = 'islocked'
    key3 = 'islocked'
    node4 = 'islegal'
    key4 = 'islegal'
    #获取账号、密码、锁定状态、合法状态并拆分成列表
    value = conf.get(node, key).split("'")
    value1 = conf.get(node1, key1).split("'")
    value3 = conf.get(node3, key3).split("'")
    value4 = conf.get(node4, key4).split("'")
    #去除账号、密码、锁定状态、合法状态列表中多余的左右英文中括号
    value.remove('[')
    value.remove(']')
    value1.remove('[')
    value1.remove(']')
    value3.remove('[')
    value3.remove(']')
    value4.remove('[')
    value4.remove(']')
    #计算账号、密码、锁定状态、合法状态列表中的英文逗号个数
    del_times = int(len(value)-1)/2
    #删除账号、密码、锁定状态、合法状态列表中的英文逗号
    for k in range(0,del_times,1):
        print '删除逗号for循环执行第',k,'次!'
        value.remove(', ')
        value1.remove(', ')
        value3.remove(', ')
        value4.remove(', ')
    #锁定或记录穷举攻击登录信息,锁定则修改登录用户的锁定状态为真,穷举攻击则记录登录信息
    value.append(username)
    print 'value after modified :',value
    islocked_flag = str(1)
    islegal_flag = str(0)
    conf.set(node,key,value)
    value1.append(password)
    conf.set(node1,key1,value1)
    value3.append(islocked_flag)
    conf.set(node3,key3,value3)
    value4.append(islegal_flag)
    conf.set(node4, key4, value4)
    #打开要回写的配置文件
    fn=open(myfile,'w')
    #回写配置文件
    conf.write(fn)
    #关闭文件
    fn.close()

目录
相关文章
|
25天前
|
机器学习/深度学习 传感器 存储
使用 Python 实现智能地震预警系统
使用 Python 实现智能地震预警系统
112 61
|
9天前
|
弹性计算 数据管理 数据库
从零开始构建员工管理系统:Python与SQLite3的完美结合
本文介绍如何使用Python和Tkinter构建一个图形界面的员工管理系统(EMS)。系统包括数据库设计、核心功能实现和图形用户界面创建。主要功能有查询、添加、删除员工信息及统计员工数量。通过本文,你将学会如何结合SQLite数据库进行数据管理,并使用Tkinter创建友好的用户界面。
从零开始构建员工管理系统:Python与SQLite3的完美结合
|
2天前
|
机器学习/深度学习 数据挖掘 开发者
Python编程入门:理解基础语法与编写第一个程序
【10月更文挑战第37天】本文旨在为初学者提供Python编程的初步了解,通过简明的语言和直观的例子,引导读者掌握Python的基础语法,并完成一个简单的程序。我们将从变量、数据类型到控制结构,逐步展开讲解,确保即使是编程新手也能轻松跟上。文章末尾附有完整代码示例,供读者参考和实践。
|
1天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
11 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
1天前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
6 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
13天前
|
机器学习/深度学习 数据采集 存储
使用Python实现智能农业灌溉系统的深度学习模型
使用Python实现智能农业灌溉系统的深度学习模型
56 6
|
13天前
|
机器学习/深度学习 算法 编译器
Python程序到计算图一键转化,详解清华开源深度学习编译器MagPy
【10月更文挑战第26天】MagPy是一款由清华大学研发的开源深度学习编译器,可将Python程序一键转化为计算图,简化模型构建和优化过程。它支持多种深度学习框架,具备自动化、灵活性、优化性能好和易于扩展等特点,适用于模型构建、迁移、部署及教学研究。尽管MagPy具有诸多优势,但在算子支持、优化策略等方面仍面临挑战。
35 3
|
14天前
|
算法 测试技术 开发者
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗;代码审查通过检查源代码发现潜在问题,提高代码质量和团队协作效率。本文介绍了一些实用的技巧和工具,帮助开发者提升开发效率。
17 3
|
17天前
|
机器学习/深度学习 数据采集 算法框架/工具
使用Python实现智能生态系统监测与保护的深度学习模型
使用Python实现智能生态系统监测与保护的深度学习模型
49 4
|
18天前
|
存储 人工智能 数据挖掘
Python编程入门:构建你的第一个程序
【10月更文挑战第22天】编程,这个听起来高深莫测的词汇,实际上就像搭积木一样简单有趣。本文将带你走进Python的世界,用最浅显的语言和实例,让你轻松掌握编写第一个Python程序的方法。无论你是编程新手还是希望了解Python的爱好者,这篇文章都将是你的理想起点。让我们一起开始这段奇妙的编程之旅吧!
19 3