最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于python的MD5腳本開發(fā)思路

 更新時(shí)間:2022年03月30日 15:52:04   作者:spmonkey  
這篇文章主要介紹了基于python的MD5腳本,通過 string模塊自動(dòng)生成字典,使用permutations()函數(shù),對字典進(jìn)行全排列,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下

開發(fā)思路

1、通過 string模塊 自動(dòng)生成字典;

2、使用permutations()函數(shù),對字典進(jìn)行全排列;

3、使用 md5模塊 對全排列的字典進(jìn)行轉(zhuǎn)換;

4、使用了多線程,分別對5~18位字符串進(jìn)行md5碰撞,以防止時(shí)間太長(雖然現(xiàn)在也要很久)。

md5碰撞函數(shù)

def md5_poj(self, md5_value, k):
        if len(md5_value) != 32:
            print("error")
            return
        md5_value = md5_value.lower()
        # permutations() 全排列
        for item in permutations(all_letters, k):
            item = "".join(item)
            if item == "hongrisec@2019":
                print(item)
            if md5(item.encode()).hexdigest() == md5_value:
                print('\n success: ' + md5_value + ' ==> ' + item)
                self.__mdfive = 1

其中 if len(md5_value) != 32 判斷所輸入的md5是否為32位的

主函數(shù)

def main(self):
        NT_md5 = input("請?zhí)顚慚D5:")
        start_time = time()
        t_list = []
        print("正在查詢...")
        # 添加線程
        t_first = threading.Thread(target=self.md5_first, args=(NT_md5,))
        t_first.daemon = 1
        t_first.start()
        for k in range(5, 18):
            t = Process(target=self.md5_poj, args=(NT_md5, k))
            # t = threading.Thread(target=self.md5_poj, args=(NT_md5, k))
            t.daemon = 1    # 守護(hù)程序
            t_list.append(t)
        # 啟動(dòng)所有線程
        for i in t_list:
            i.start()
        # 當(dāng) __mdfive == 1 時(shí)結(jié)束所有線程
        while 1:
            if self.__mdfive:
                break
        print("\n查詢結(jié)束!")
        print('使用了 %f 秒'%(time() - start_time))

完整代碼腳本

import threading
from multiprocessing import Process
from hashlib import md5
from itertools import permutations
from string import ascii_letters, digits, ascii_lowercase, ascii_uppercase
from time import time
all_letters = ascii_lowercase + '.,;@' + digits
class MDfive:
    def __init__(self):
        self.__mdfive = 0

    def md5_poj(self, md5_value, k):
        if len(md5_value) != 32:
            print("error")
            return
        md5_value = md5_value.lower()
        # permutations() 全排列
        for item in permutations(all_letters, k):
            item = "".join(item)
            if item == "hongrisec@2019":
                print(item)
            if md5(item.encode()).hexdigest() == md5_value:
                print('\n success: ' + md5_value + ' ==> ' + item)
                self.__mdfive = 1
    # 判斷 md5 是否與空匹配
    def md5_first(self, md5_firstvalue):
        if len(md5_firstvalue) != 32:
        elif md5_firstvalue == "31d6cfe0d16ae931b73c59d7e0c089c0":
            print("\n密碼為空!")
            self.__mdfive = 1

    def main(self):
        NT_md5 = input("請輸入MD5:")
        start_time = time()
        t_list = []
        print("正在查詢...")
        # 添加線程
        t_first = threading.Thread(target=self.md5_first, args=(NT_md5,))
        t_first.daemon = 1
        t_first.start()
        for k in range(5, 18):
            t = Process(target=self.md5_poj, args=(NT_md5, k))
            # t = threading.Thread(target=self.md5_poj, args=(NT_md5, k))
            t.daemon = 1    # 守護(hù)程序
            t_list.append(t)
        # 啟動(dòng)所有線程
        for i in t_list:
            i.start()
        # 當(dāng) __mdfive == 1 時(shí)結(jié)束所有線程
        while 1:
            if self.__mdfive:
                break
        print("\n查詢結(jié)束!")
        print('使用了 %f 秒'%(time() - start_time))

if __name__ == '__main__':
    MDfive().main()

到此這篇關(guān)于基于python的MD5腳本的文章就介紹到這了,更多相關(guān)python MD5腳本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python爬蟲中如何使用xpath解析HTML

    Python爬蟲中如何使用xpath解析HTML

    文章詳細(xì)介紹了如何使用Python的lxml庫中的xpath進(jìn)行網(wǎng)頁數(shù)據(jù)爬取,解釋了xpath與BeautifulSoup相比的優(yōu)勢,介紹如何使用lxml庫加載HTML內(nèi)容,包括parse()、fromstring()和HTML()方法的使用,展示了如何使用xpath定位HTML節(jié)點(diǎn),包括使用絕對定位和相對定位
    2024-11-11
  • Python日志器使用方法及原理解析

    Python日志器使用方法及原理解析

    這篇文章主要介紹了Python日志器使用方法及原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Python3中安裝后SSL問題及解決

    Python3中安裝后SSL問題及解決

    這篇文章主要介紹了Python3中安裝后SSL問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • python讀取word文檔的方法

    python讀取word文檔的方法

    這篇文章主要介紹了python讀取word文檔的方法,實(shí)例分析了Python基于win32com操作word文檔的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • python如何終止死循環(huán)和開啟死循環(huán)

    python如何終止死循環(huán)和開啟死循環(huán)

    這篇文章主要介紹了python如何終止死循環(huán)和開啟死循環(huán)問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • 想學(xué)python 這5本書籍你必看!

    想學(xué)python 這5本書籍你必看!

    想學(xué)python,這5本書籍你必看!本文為大家推薦了學(xué)習(xí)python的5本書籍,5本經(jīng)典書籍,感興趣的小伙伴們可以參考一下
    2018-12-12
  • python?包之?APScheduler?定時(shí)任務(wù)

    python?包之?APScheduler?定時(shí)任務(wù)

    這篇文章主要介紹了python?包之?APScheduler?定時(shí)任務(wù),文章基于python的相關(guān)資料展開主題內(nèi)容,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-04-04
  • Sanic框架藍(lán)圖用法實(shí)例分析

    Sanic框架藍(lán)圖用法實(shí)例分析

    這篇文章主要介紹了Sanic框架藍(lán)圖用法,結(jié)合實(shí)例形式分析了Sanic框架中藍(lán)圖的功能以及路由控制中藍(lán)圖的定義、注冊、簡單使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2018-07-07
  • Python2中的raw_input() 與 input()

    Python2中的raw_input() 與 input()

    這篇文章主要介紹了Python2中的raw_input() 與 input(),本文分析了它們的內(nèi)部實(shí)現(xiàn)和不同之處,并總結(jié)了什么情況下使用哪個(gè)函數(shù),需要的朋友可以參考下
    2015-06-06
  • Python掃描IP段查看指定端口是否開放的方法

    Python掃描IP段查看指定端口是否開放的方法

    這篇文章主要介紹了Python掃描IP段查看指定端口是否開放的方法,涉及Python使用socket模塊實(shí)現(xiàn)端口掃描功能的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06

最新評(píng)論

滁州市| 改则县| 韶关市| 辽阳县| 富平县| 龙井市| 隆昌县| 绥化市| 通河县| 肥西县| 岳西县| 井冈山市| 灵川县| 林周县| 香格里拉县| 嘉黎县| 永州市| 五华县| 桃园市| 荔浦县| 古田县| 新疆| 杭锦旗| 宁晋县| 古蔺县| 垣曲县| 枝江市| 汉阴县| 绩溪县| 玛多县| 沅江市| 东方市| 礼泉县| 台湾省| 中阳县| 根河市| 河津市| 灌南县| 四平市| 盈江县| 腾冲县|