返回顶部
首页 > 资讯 > 后端开发 > Python >基于python的MD5脚本开发思路
  • 802
分享到

基于python的MD5脚本开发思路

2024-04-02 19:04:59 802人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录开发思路md5碰撞函数主函数完整代码脚本开发思路 1、通过 string模块 自动生成字典; 2、使用permutations()函数,对字典进行全排列; 3、使用 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脚本内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 基于python的MD5脚本开发思路

本文链接: https://lsjlt.com/news/144489.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 基于python的MD5脚本开发思路
    目录开发思路md5碰撞函数主函数完整代码脚本开发思路 1、通过 string模块 自动生成字典; 2、使用permutations()函数,对字典进行全排列; 3、使用 md5模块 ...
    99+
    2024-04-02
  • Python开发Svn_Update脚本
    ######## 脚本需求 ######## 运行系统:Windows输入:路径 子路径 用户名 密码例子:python svn_update_list.py E:\svn\ data\code,data\asset,data\fight ...
    99+
    2023-01-31
    脚本 Python Svn_Update
  • 基于Python_脚本CGI、特点、应用、开发环境(详解)
    CGI CGI 目前由NCSA维护,NCSA定义CGI如下: CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如:HTTP服务器,提供同客户端HTML页...
    99+
    2022-06-04
    详解 脚本 环境
  • 基于pycharm的python开发配置
         虽然基于命令行+文本编辑可以完成python程序开发,并熟悉操作系统下的命令操作。但是基于集成开发环境的开发能够更有效率。因此选择一个适合的集成开发工具是重...
    99+
    2024-04-02
  • 基于python开发环境的Dockerf
    在本地创建一个管理Docker的目录 ## MacOSX 系统下的 mkdir -p ~/mywork/docker/python ## 其他操作系统平台自定义管理目录,这里省略 python开发环境的Dockerfil...
    99+
    2023-01-31
    环境 python Dockerf
  • 基于python编写的shell脚本详细讲解
    今天同事叫我编写一个shell脚本。话说,虽然我受*nix的影响甚深,但是对于*nix 里随处可见的sh脚本却是讨厌之极。为什么讨厌呢?首先是因为sh脚本那莫名其妙的语法,感觉就像随...
    99+
    2024-04-02
  • 使用Eclipse来开发python脚本
    一、安装python1.访问https://www.python.org/downloads/,可以看到如下图所示界面2.点击上图的"Download",可以看到如下图所示的界面:3.下载python-2.7.14.amd64.msi文件...
    99+
    2023-01-31
    脚本 Eclipse python
  • 基于python 的Pygame最小开发框架
    目录1.最小开发框架代码2.关键代码介绍sys和pygame模块初始化init()及设置屏幕大小、标题、颜色设置事件循环退出游戏1.最小开发框架代码 import sys  impo...
    99+
    2024-04-02
  • 教你如何基于python实现脚本加密
    这篇文章主要介绍了如何基于python实现脚本加密,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下from pathlib import Pathimport&...
    99+
    2023-06-02
  • 基于C# 的 WinForm 开发
    WinForm 是一种用于开发 Windows 应用程序的技术,可以使用 C# 语言进行开发。以下是基于 C# 的 WinForm ...
    99+
    2023-10-12
    c#
  • 基于Python和Selenium的大麦网自动抢票脚本
    自动化抢票的脚本,需通过Selenium库来实现自动化操作。(学习参考) # 导入必要的库from selenium import webdriverfrom selenium.webdriver.c...
    99+
    2023-08-31
    python selenium chrome
  • python开发之基于thread线程搜索本地文件的方法
    本文实例讲述了python开发之基于thread线程搜索本地文件的方法。分享给大家供大家参考,具体如下: 先来看看运行效果图: 利用多个线程处理搜索的问题,我们可以发现他很快.... 下面是代码部分: ...
    99+
    2022-06-04
    线程 本地文件 方法
  • Python的开发之路
    一、python入门  二、基本数据类型 三、输入与输出 四、基本运算符 五 、流程控制之if判断 六、流程控制之while循环 七、流程控制之for循环 八、数据类型与内置方法 九、文件的处理 十、字符编码 十一、函数 十二、模块 十...
    99+
    2023-01-30
    之路 Python
  • 基于python开发的股市行情看板
    个人博客: https://mypython.me 近期股市又骚动起来,回忆起昔日炒股经历,历历在目,悲惨经历让人黯然神伤,去年共投入4000元入市,最后仅剩1000多,无奈闭关修炼,忘记股市,全身心投入代码世界,享受代码带来的乐趣。近日...
    99+
    2023-01-30
    股市行情 看板 python
  • 基于Python实现一个春节倒计时脚本
    目录前言​环境安装效果展示代码展示补充前言​ 春节对于中国人民群众来说,是一个意义非凡的节日,它意味着一年的结束和新年的开始,很多人为了表达自己的期盼,都会进行倒计时。 &ldquo...
    99+
    2024-04-02
  • 基于Failed to load ApplicationContext异常的解决思路
    目录Failed to load ApplicationContext异常在使用spring连接数据库时出现了如下异常Failed to load ApplicationContex...
    99+
    2024-04-02
  • 基于JavaScript表单脚本的示例分析
    小编给大家分享一下基于JavaScript表单脚本的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!什么是表单?一个表单有...
    99+
    2024-04-02
  • 基于Python的Houdini插件开发过程详情
    本文以Python开发为例来进行说明,环境说明: (1) Python 3.x(我用的版本是 3.9 版本)(2)IDE开具 PyCharm(我用的版本是 PyCharm Commu...
    99+
    2024-04-02
  • 基于Python编写一个爆炸信息窗口脚本
    目录前言爆炸信息窗口设计思路模块准备删除好友警告源代码批量获取表情包前言 Hello!大家好,有好几天没有跟大家见面咯~不知道大家是否在等待《小玩意儿》专栏的更新呢 上一篇的文章【老...
    99+
    2024-04-02
  • 基于Python实现中秋佳节月饼抢购脚本
    目录申明前言原理安装 Selenium方式1方式2安装浏览器驱动下载配置环境变量代码开发测试注意 申明 本博客不提供任何服务器端程序,也不提供任何收费抢购软件。该博客仅用于学习sel...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作