Python CRC32 爆破算法

发布于 2021-12-25 22:40:02 字数 1105 浏览 930 评论 0

# -*- coding: utf-8 -*-

import binascii
import time

# 设定需要爆破的 CRC32 值
crcNum = {0x53A610F4, 0x0F9C4BBD, 0x0AAE6F9E}
# 设定CRC32的长度
crcLen = 5
# 设定ASCII码起始值
startASCII = 65
# 设定ASCII码结束值
endASCII = 91
# 设定爆破记录起始时间
startTime = time.perf_counter()

def checkCRC32(txt):
    """
    检测CRC32是否匹配
    """
    if binascii.crc32(txt.encode()) in crcNum:
        print("CRC32 of {} is-> 0x{:02X}".format(txt, binascii.crc32(txt.encode())))

def splicing(txt,num):
    """
    拼接CRC32测试值
    """
    num += 1
    tmp = txt
    for j in range(startASCII,endASCII):
        tmp += chr(j)
        if num == crcLen:
            checkCRC32(tmp)
        else:
            splicing(tmp,num)
        tmp = txt

def main():
    """
    主入口
    """
    for i in range(startASCII, endASCII):
        num = 1
        txt = chr(i)
        splicing(txt, num)
    endTime = time.perf_counter()
    print("用时: %f s" % (endTime - startTime))

if startASCII >= endASCII or startASCII < 0 or endASCII > 127:
    print("请检查代码设置的ASCII码起始值与初始值!")
else:
    main()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文