热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux服务器弱密码检查,linux系统弱密码检测

需要自备弱密码明文字典from_utils.patrol2importdata_format,report_format,run_cmdimportplatformimportcr

需要自备弱密码明文字典

from _utils.patrol2 import data_format,report_format,run_cmd

import platform

import crypt

with open(passwd[0],'r') as f:

cOntent=f.readlines()

def use_md5(password,salt):

global content

for i in content:

cmd="openssl passwd -1 -salt '{}' '{}'".format(salt,i)

code,res=run_cmd(cmd)

if res.split('$')[-1].strip()==password:

return True

return False

def use_SHA512(id,password,salt):

global content

for i in content:

cry_password=crypt.crypt(i,'${}${}'.format(id,salt))

if cry_password==password:

return True

return False

cOntent=[i.strip('\r\n').strip('\n') for i in content]

weak_passwd=[]

remove_users =remove_users.split(',')

low_length_users=[]

cmd="awk -F: &#39;length($2)<={} {{print $1}}&#39; /etc/shadow".format(passwd_length)

code,res=run_cmd(cmd)

for i in res.split(&#39;\n&#39;):

if i.strip() not in remove_users:

low_length_users.append(i.strip())

blowfish=[]

nocrypt=[]

cmd="awk -F: &#39;{print $1,$2}&#39; /etc/shadow"

code,res=run_cmd(cmd)

for i in res.split(&#39;\n&#39;):

user_name=i.split()[0].strip()

if user_name in remove_users:

continue

passwd=i.split()[1].strip()

if passwd in (&#39;!!&#39;,&#39;&#39;) and user_name not in low_length_users:

low_length_users.append(user_name)

elif passwd.startswith(&#39;$&#39;):

_,id,salt,hashed=passwd.split(&#39;$&#39;)

if id==&#39;1&#39; and use_md5(hashed,salt):

weak_passwd.append(user_name)

elif id in (&#39;6&#39;,&#39;5&#39;) and use_SHA512(id,hashed,salt):

weak_passwd.append(user_name)

elif id in (&#39;2a&#39;,&#39;2y&#39;):

blowfish.append(user_name)

elif id not in (&#39;6&#39;,&#39;5&#39;,&#39;2a&#39;,&#39;2y&#39;,&#39;1&#39;):

nocrypt.append(user_name)

result=[]

if low_length_users:

result.append(&#39;密码长度不足或空密码:{}&#39;.format(&#39;,&#39;.join(low_length_users)))

if weak_passwd:

result.append(&#39;密码强度不足:{}&#39;.format(&#39;,&#39;.join(weak_passwd)))

if blowfish:

result.append(&#39;使用了blowfish加密方式,建议使用sha512方式:{}&#39;.format(&#39;,&#39;.join(blowfish)))

if nocrypt:

result.append(&#39;无法识别加密类型:{}&#39;.format(&#39;,&#39;.join(nocrypt)))

if not result:

report=data_format(&#39;检查结果&#39;,&#39;正常&#39;,0)

else:

report = data_format(&#39;检查结果&#39;, &#39;\n&#39;.join(result), 1)

reports=report_format(platform.node(),[report],is_json=True)



推荐阅读
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了在CentOS 7.x上进行端口映射配置的方法,通过修改内核和配置防火墙实现端口映射。作者分享了自己使用华为服务器进行端口映射的经验,发现网速比直连还快且稳定。详细的配置过程包括开启系统路由模式功能、设置IP地址伪装、设置端口映射等。同时,还介绍了如何监听本地端口的tcp请求,以及删除规则和开放的端口的方法。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文介绍了django中视图函数的使用方法,包括如何接收Web请求并返回Web响应,以及如何处理GET请求和POST请求。同时还介绍了urls.py和views.py文件的配置方式。 ... [详细]
  • 修复安装win10失败并提示“磁盘布局不受UEFI固件支持”的方法
    本文介绍了修复安装win10失败并提示“磁盘布局不受UEFI固件支持”的方法。首先解释了UEFI的概念和作用,然后提供了两种解决方法。第一种方法是在bios界面中将Boot Mode设置为Legacy Support,Boot Priority设置为Legacy First,并关闭UEFI。第二种方法是使用U盘启动盘进入PE系统,运行磁盘分区工具DiskGenius,将硬盘的分区表设置为gpt格式,并留出288MB的内存。最后,通过运行界面输入命令cmd来完成设置。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • 本文介绍了如何在Azure应用服务实例上获取.NetCore 3.0+的支持。作者分享了自己在将代码升级为使用.NET Core 3.0时遇到的问题,并提供了解决方法。文章还介绍了在部署过程中使用Kudu构建的方法,并指出了可能出现的错误。此外,还介绍了开发者应用服务计划和免费产品应用服务计划在不同地区的运行情况。最后,文章指出了当前的.NET SDK不支持目标为.NET Core 3.0的问题,并提供了解决方案。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有