Python---项目3-破解使用crypt方法加密(已加salt参数)的登录密码

Python — 项目3-破解使用crypt方法加密(已加salt参数)的登录密码
1、环境部署、

root@kali:~/python/anquangongji# pwd
/root/python/anquangongji
root@kali:~/python/anquangongji# ls
checkfile.py      dictionary.txt   passwordunix.txt    scanmultports.py  vulnftpbanner.txt
crarkpassword.py  openfiletest.py  scanerftpbanner.py  vulnbanners.txt
root@kali:~/python/anquangongji# 
root@kali:~/python/anquangongji# cat passwordunix.txt 
root:HXEtlo/Qz.0mA
xwb:HXEtlo/Qz.0mA
test:XWW7IhbgLDjB2
xwb1:XWW7IhbgLDjB2
root@kali:~/python/anquangongji# 
root@kali:~/python/anquangongji# cat dictionary.txt 
123456
qwe123456
asd123456
root@kali:~/python/anquangongji# 
root@kali:~/python/anquangongji# 
passwordunix.txt文件的内容生成方式是:
Python 2.7.13 (default, Jan 19 2017, 14:48:08) 
[GCC 6.3.0 20170118] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import crypt
>>> crypt.crypt("123456","HX")
'HXEtlo/Qz.0mA'
>>> crypt.crypt("123456","HX")
'HXEtlo/Qz.0mA'
>>> crypt.crypt("qwe123456","XW")
'XWW7IhbgLDjB2'

2、源码与运行情况

root@kali:~/python/anquangongji# 
root@kali:~/python/anquangongji# cat crarkpassword.py 
#!/usr/bin/python
# --*-- coding:utf-8 --*--

import crypt#导入加密模块

def testpasswd(cryptpasswd):
    salt = cryptpasswd[0:2]#取出salt参数
    #print salt

    dictfile = open("dictionary.txt","r")
    for word in dictfile.readlines():
        word = word.strip("\n")#去除换行符
        #print word
        cryptword = crypt.crypt(word,salt)#使用crypt加密模块加密参数
        #print cryptword
        #print len(cryptword)
        cryptpasswd1 = cryptpasswd.replace("\n","")#谨记!从系统文件中读取内容会自动加入一个"\n"换行字符
        #print len(cryptpasswd1)
        #print cryptpasswd1
        if cryptword == cryptpasswd1:#字符长度相同,则进入
            print '[+] : Found Pasword!!!,密码为:' + word + "\n"
            return
    print "[+] Password not found !! \n"
    return

def main():
    passfile = open("passwordunix.txt")
    for line in passfile.readlines():
        if ":" in line:
            user = line.split(":")[0]#取出用户
            #print user
            cryptpasswd = line.split(":")[1].strip(' ')#取出登陆密码字段
            #print cryptpasswd
            print "[+] 破解密码中。。。。。。。" + user
            testpasswd(cryptpasswd)

if __name__ == "__main__":
    main()#前面必须是4个空格,否则无法运行


root@kali:~/python/anquangongji# 

运行情况:

root@kali:~/python/anquangongji# 
root@kali:~/python/anquangongji# python crarkpassword.py 
[+] 破解密码中。。。。。。。root
[+] : Found Pasword!!!,密码为:123456

[+] 破解密码中。。。。。。。xwb
[+] : Found Pasword!!!,密码为:123456

[+] 破解密码中。。。。。。。test
[+] : Found Pasword!!!,密码为:qwe123456

[+] 破解密码中。。。。。。。xwb1
[+] : Found Pasword!!!,密码为:qwe123456

root@kali:~/python/anquangongji# 
在现代的类Unix系统中在/etc/shadow文件中存储了口令的hash,但是更多的是使用SHA-512等更安全的hash算法,如:

root@kali:~/python/anquangongji# cat /etc/passwd | grep ^root
root:x:0:0:root:/root:/bin/bash
root@kali:~/python/anquangongji# cat /etc/shadow | grep ^root
root:$6$Md.vwnjH$r2Ir4r5W/hnwBcXWMjUybN2UYovcUBy27I7xY1Oi7i0UgqaF.ZJQTPRr0s7.8GMVAAqB8XXXlQX2H3nw0YtE01:16609:0:99999:7:::
root@kali:~/python/anquangongji# Python中的hashlib库可以找到SHA-512的函数,这样就可以进一步升级脚本进行口令破解。

参考:https://www.cnblogs.com/Genesis-007/p/5368760.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐为波

看着给就好了,学习写作有点累!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值