• 爆破linux密码 $6$3uwqC9JI$d9iPRmTDAoXs/IbsplxS3iyeErHqw7fUycacXNHyZk1UCSwFEydl515/zXN7OEwHnyUaqYcNG


     1 #!/usr/bin/env python
     2 # -*- coding:UTF-8 -*-
     3 
     4 import crypt
     5 import sys
     6 
     7 # 哈希密码的前两位就是盐的前两位,这里我们假设盐只有两位。
     8 # 程序分两部分,一部分是打开字典,另一部分是哈希匹配密码
     9 
    10 #standard DES, two salt
    11 def desPass(cryptpass):
    12     #get salt from the front place
    13     saltf = cryptpass[0:2]
    14     return saltf
    15 
    16 #for $6$        
    17 def sha512Pass(cryptpass):
    18     saltf = "$6$"+cryptpass.split("$")[2]
    19     return saltf
    20 
    21 #for $5$
    22 def sha256Pass(cryptpass):
    23     saltf = "$5$"+cryptpass.split("$")[2]
    24     # saltf = "$5$rounds=5000$anexamplestringf"
    25     return saltf
    26 
    27 def main():
    28     banner = '''
    29         python CrackPass.py 5
    30         one params is type for you are cracking
    31         0 ---- standard DES  for 2 salt
    32         5 ---- sha256 crypt  $5$salt$secret
    33         6 ---- sha512 crypt  $6$salt$secret
    34 
    35         salt contains $5$salt
    36         if $salt contain "$",will cause inaccuracy. Maybe you need set the salt by your hand,for example:# saltf = "$5$rounds=5000$anexamplestringf"
    37     '''
    38     print banner
    39     method = sys.argv[1]
    40     passfile = open('Password','r')
    41     #从文件中一行一行读取
    42     for line in passfile.readlines():
    43         cryptpass = line.strip()
    44         print "Cracking Password For: %s"%cryptpass
    45 
    46         #select type
    47         if method == "0":
    48             salt = desPass(cryptpass)
    49         elif method == "6":
    50             salt = sha512Pass(cryptpass)
    51         elif method == "5":
    52             salt = sha256Pass(cryptpass)
    53         print salt
    54         dictfile = open('dictionary','r')
    55         for word in dictfile.readlines():
    56             word = word.strip('
    ')
    57             cryWord = crypt.crypt(word,salt)
    58 
    59             if cryptpass == cryWord:
    60                 print "Found passwd: %s"%word
    61                 print "ok"
    62                 return
    63             print "Password not found!"
    64 
    65 if __name__ == '__main__':
    66     main()

    现在只写了$6$  $5$开头的和一种普通的DES两位盐加密的

    爆破linux一般用¥6¥

    注意一般密文由3部分组成,以”$”分隔,第一部分为ID,第二部分为盐值,第三部分为加密密文

    真正的盐值包括ID部分,我上面判断salt是根据$分割,默认是密文中只有三个$

    有时salt中本来就含有$,

    这时就需要自己指定salt了,saltf = "$5$rounds=5000$anexamplestringf"

    可以观察出来,观察不出来,就多尝试

    我的  QQ921658495  希望与大家交流

  • 相关阅读:
    线段树
    数据结构<三> 队列
    数据结构<二>双向链表
    数据结构<一>单链表
    扩展欧几里德算法
    90 个 node.js 扩展模块,我们疯了
    nodejs的查询构造器
    express的路由配置优化
    express路由方案
    Redis学习笔记~目录
  • 原文地址:https://www.cnblogs.com/kunspace/p/10583774.html
Copyright © 2020-2023  润新知