基于python的MD5脚本开发思路

目录
  • 开发思路
  • md5碰撞函数
  • 主函数
  • 完整代码脚本

开发思路

1、通过 string模块 自动生成字典;

2、使用permutations()函数,对字典进行全排列;

3、使用 md5模块 对全排列的字典进行转换;

4、使用了多线程,分别对5~18位字符串进行md5碰撞,以防止时间太长(虽然现在也要很久)。

md5碰撞函数

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位的

主函数

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    # 守护程序
            t_list.append(t)
        # 启动所有线程
        for i in t_list:
            i.start()
        # 当 __mdfive == 1 时结束所有线程
        while 1:
            if self.__mdfive:
                break
        print("\n查询结束!")
        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    # 守护程序
            t_list.append(t)
        # 启动所有线程
        for i in t_list:
            i.start()
        # 当 __mdfive == 1 时结束所有线程
        while 1:
            if self.__mdfive:
                break
        print("\n查询结束!")
        print('使用了 %f 秒'%(time() - start_time))

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

到此这篇关于基于python的MD5脚本的文章就介绍到这了,更多相关python MD5脚本内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 利用python计算windows全盘文件md5值的脚本

    import hashlib import os import time import configparser import uuid def test_file_md5(file_path): test = hashlib.md5() if os.path.isfile(file_path): with open(file_path, "rb") as f: while True: data = f.read(8096) if not data: break else: test.

  • 基于python的MD5脚本开发思路

    目录 开发思路 md5碰撞函数 主函数 完整代码脚本 开发思路 1.通过 string模块 自动生成字典: 2.使用permutations()函数,对字典进行全排列: 3.使用 md5模块 对全排列的字典进行转换: 4.使用了多线程,分别对5~18位字符串进行md5碰撞,以防止时间太长(虽然现在也要很久). md5碰撞函数 def md5_poj(self, md5_value, k): if len(md5_value) != 32: print("error") return m

  • 基于Python实现签到脚本过程解析

    无聊刷日剧,看到签到断了好久,简单写了个脚本,通过模拟抓包的方式实现 1.先登录到字幕组网站获取token 2.用获取到的token登录到人人活动页面获取cookie 3.用获取到的cookie进行签到 import requests import json import time def main(): # 登录,获取用户信息 info = json.loads(get_token()) uid,token = info['data']['uid'],info['data']['token']

  • 基于Python的微信机器人开发 微信登录和获取好友列表实现解析

    首先需要安装itchat库,可以pip install itchat安装,也可以在pycharm里安装 # -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" import itchat def get_friends(): friends = itchat.get_friends(update=True) #获取微信好友列表,如果设置update=True将从服务器刷新列表 for i in friends: print(i) def m

  • 基于Python编写一个爆炸信息窗口脚本

    目录 前言 爆炸信息窗口 设计思路 模块准备 删除好友警告 源代码 批量获取表情包 前言 Hello!大家好,有好几天没有跟大家见面咯~不知道大家是否在等待<小玩意儿>专栏的更新呢 上一篇的文章[老师见打系列]:我只是写了一个自动回复讨论的脚本~ 感觉挺受大伙的喜欢的呢,非常感谢各位兄弟给哥们顶上热榜,你们的支持就是我更新的动力 所以这几天我就在想是否继续往[老师见打系列]更新文章,想出一些能让”老师见打“的idear,当然,我并不是要故意惹老师生气的哈…… 直到前天,突然想写点什么,于是打开

  • 基于Python开发chrome插件的方法分析

    本文实例讲述了基于Python开发chrome插件的方法.分享给大家供大家参考,具体如下: 谷歌Chrome插件是使用HTML.JavaScript和CSS编写的.如果你之前从来没有写过Chrome插件,我建议你读一下这个.在这篇教程中,我们将教你如何使用Python代替JavaScript. 创建一个谷歌Chrome插件 首先,我们必须创建一个清单文件:manifest.json. { "manifest_version": 2, "name": "Py

  • 基于python的Linux系统指定进程性能监控思路详解

    监控Linux服务器的工具.组件和程序网上有很多,但是一台服务器上会有很多进程同时运行,特别是做性能测试的时候,可能一台服务器上部署多个服务,如果只监控整个服务器的CPU和内存,当某个服务出现性能问题时,并不能有效准确的定位出(当然通过其他工具也可以实现),因此,很有必要只监控指定的进程.需求明确了,于是动手撸了一个性能监控脚本. 一.整体思路 1.为了方便的启动监控和停止监控,在想查看监控结果的时候随时查看监控结果,用flask开启了一个服务,通过发送get请求可以随时启停监控和查看监控结果.

  • 基于Python的Jenkins的二次开发操作

    背景 最近我们在整一个云执行的平台,底层用的是Jenkins来做执行引擎,方便的把我们的脚本做一个统一的调度. Jenkins确实是一个非常方便的框架,它提供了一整套的RESTful的API,可以非常方便的做二次开发,而且提供了一个python的库,操作起来就更加方便了. 常用的Jenkins概念 我们在使用Jenkins的时候,一般看到的都是Jenkins的View. 也就是说我们看到的基本上都是一些视图. 每一个构建的内容,无论是执行用例,跑脚本,还是打包编译发布,都是一个job. 每一个j

  • 基于Python+QT的gui程序开发实现

    最近帮朋友做了一个将文本文件按条件导出到excel里面的小程序.使用了PyQT,发现Python真是一门强大的脚本语言,开发效率极高. 首先需要引用 from PyQt4 import QtGui, uic, QtCore 很多控件像QPushButton是从QtGui的空间中得来的,下面def __init__(self, parent=None)中定义了界面的设计及与控件相互联系的方法. class AddressBook(QtGui.QWidget): def __init__(self,

  • 基于python脚本实现软件的注册功能(机器码+注册码机制)

    一.前言: 目的:完成已有python图像处理工具的注册功能 功能:用户运行程序后,通过文件自动检测认证状态,如果未经认证,就需要注册.注册过程是用户将程序运行后显示的机器码(C盘的卷序号)发回给管理员,管理员对机器码加密后生成加密文件或字符串返回给用户.每次启动程序,在有注册文件的情况下,程序就会通过DES和base64解码,并与此刻获取到的C盘卷序列号比对,如果一致则运行主程序.如果注册文件解码后与卷序号不一致,就要提醒用户输入注册码,如果对新输入的解码后和重新获取的机器码一致,则通过认证,

  • 基于Python实现ComicReaper漫画自动爬取脚本过程解析

    这篇文章主要介绍了基于Python实现ComicReaper漫画自动爬取脚本过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 讲真的, 手机看漫画翻页总是会手残碰到页面上的广告好吧... 要是能只需要指定一本漫画的主页URL就能给我返回整本漫画就好了... 这促使我产生了使用Python 3来实现, 做一个 ComicReaper(漫画收割者) 的想法! 本文所用漫画链接 : http://www.manhuadb.com/manhua/

随机推荐