2016-11-22 63 views
0

我在這裏有一個腳本,其中包含一些基本功能: 函數1-wget打開一個網頁並將其保存到本地變量中,然後關閉。 函數2 - 爲這個網頁抓取md5散列值。 函數3 - 獲取散列值並使用常用密碼字典對它們進行破解。不知道如何輸入一個函數的輸出作爲另一個函數的輸入

我的問題是從函數2獲取我的輸出並將其插入到函數3中。部分原因是函數2的輸出爲列表,而函數3正在查找散列值。

你們很有可能通過閱讀我的代碼來了解更多,下面是我的代碼到目前爲止。

import sys, hashlib, re, urllib 

def wget(url): # could import webpage_get and use wget() from there instead 
    '''Read the contents of a webpage from a specified URL''' 
    print '[+]---------------------------------------------------------------------------- ' #CHANGE THIS 
    # open URL 
    webpage = urllib.urlopen(url) # opens url like a file 
    # get page contents 
    page_contents = webpage.read() # reads content of webpage 
    return page_contents 
    page_contents = webpage.close() # close webpage 

def findmd5(text): 
    '''Find all md5 hash values''' 
    md5value = re.findall(r'([a-fA-F\d]{32})', text) 
    count = len(md5value) 
    print "[+] Total number of md5 hash values found: %s" % count 
    for x in md5value: 
     print x 


def dict_attack(passwd_hash): 

    dic = ['123','1234','12345','123456','1234567','12345678','password','qwerty','abc','abcd','abc123','111111','monkey','arsenal','letmein','trustno1','dragon','baseball','superman','iloveyou','starwars','montypython','cheese','123123','football','password','batman'] 


    passwd_found = False 
    for value in dic: 
     hashvalue = hashlib.md5(value).hexdigest() 
     if hashvalue == passwd_hash: 
      passwd_found = True 
      recovered_password = value 

    if passwd_found == True: 
     print '[+] Password recovered: %s'% (recovered_password) 
    else: 
     print '[-] Password not recovered' 


def main(): 
    # temp testing url argument 
    sys.argv.append('URL HERE!') 

    # Check args 
    if len(sys.argv) != 2: 
     print '[-] Usage: email_analysis URL/filename' 
     return 
    #call functions 
    try: 
     print '[+] md5 values found: ' 
     print findmd5(wget(sys.argv[1])) 
     print '[+] Cracking hash values: ' 


    except IOError: 
     print 'Error' 

if __name__ == '__main__': 
    main() 

任何幫助,非常感謝!

+0

我看到一個關於這個完全相同的任務不到一個小時前的問題。你能和你的同學一起工作嗎? – TigerhawkT3

回答

0

wget:將return語句設置爲最後一條語句。

findmd5:從打印它的結果變爲將它們返回到主變量中。

main:在for循環中添加以遍歷發現的散列並將dict_attack應用於每個值。

但是我確實沒有建立任何中斷或停止狀態,所以即使找到了,程序也會繼續運行。但它仍會打印找到的結果。

import sys, hashlib, re, urllib 

def wget(url): # could import webpage_get and use wget() from there instead 
    '''Read the contents of a webpage from a specified URL''' 
    print ('[+]---------------------------------------------------------------------------- ') #CHANGE THIS 
    # open URL 
    webpage = urllib.urlopen(url) # opens url like a file 
    # get page contents 
    page_contents = webpage.read() # reads content of webpage 
    page_contents = webpage.close() # close webpage 
    return page_contents 

def findmd5(text): 
    '''Find all md5 hash values''' 
    md5value = re.findall(r'([a-fA-F\d]{32})', text) 
    count = len(md5value) 
    print ("[+] Total number of md5 hash values found: %s" % count) 
    return md5value 


def dict_attack(passwd_hash): 

    dic = ['123','1234','12345','123456','1234567','12345678','password','qwerty','abc','abcd','abc123','111111','monkey','arsenal','letmein','trustno1','dragon','baseball','superman','iloveyou','starwars','montypython','cheese','123123','football','password','batman'] 


    passwd_found = False 
    for value in dic: 
     hashvalue = hashlib.md5(value).hexdigest() 
     if hashvalue == passwd_hash: 
      passwd_found = True 
      recovered_password = value 

    if passwd_found == True: 
     print ('[+] Password recovered: %s'% (recovered_password)) 
    else: 
     print ('[-] Password not recovered') 


def main(): 
    # temp testing url argument 
    sys.argv.append('URL HERE!') 

    # Check args 
    if len(sys.argv) != 2: 
     print ('[-] Usage: email_analysis URL/filename') 
     return 
    #call functions 
    try: 
     md5Values = findmd5(wget(sys.argv[1])) 
     for md5value in md5values: 
      dict_attack(md5value) 
      print ('[+] Cracking hash values: ') 


    except IOError: 
     print ('Error') 

if __name__ == '__main__': 
    main() 
+0

非常感謝! –

0

比利,返回發現的哈希列表,而不是打印它們(它看起來像你認爲它是bash,但你不需要「打印」一個函數的輸出,就像你在bash,在python中,你可以從字面上返回一個包含元素的數組)。

您的散列表的正則表達式使用\d,但也包括-,它可能會帶來不是MD5散列的東西。

相關問題