密码学---easy_hash

题目出处:首页 - Bugku CTF

✨打开题目有两个文件

✨打开flag.py后开始分析所给的代码

python 复制代码
import hashlib  
# 导入 hashlib 模块,用于计算哈希值
from multiprocessing import Pool  
# 从 multiprocessing 模块导入 Pool 类,用于多进程处理


def compute_md5(char):  
    # 定义一个函数 compute_md5,接受一个字符作为参数
    md5_flag = hashlib.md5(char.encode())  
    # 将字符编码为字节并计算其 MD5 哈希值
    return md5_flag.hexdigest()  
    # 返回 MD5 哈希值的十六进制表示(hexdigest)


if __name__ == '__main__':
    with open('flag', 'r') as flag_file:  
        # 以只读模式打开名为 'flag' 的文件
        content = flag_file.read()  
        # 读取文件内容
        chars = list(content)  
        # 将文件内容转换为字符列表

        with Pool() as pool:  
            # 创建一个进程池
            md5_results = pool.map(compute_md5, chars)  
            # 并行计算每个字符的 MD5 哈希值

        with open('output', 'w') as output_file:  
            # 以写入模式打开名为 'output' 的文件
            for result in md5_results:  
                # 遍历每个计算出的 MD5 结果
                output_file.write(result + '\n')  
                # 将结果写入输出文件,每个结果一行

✨到这我的想法肯定是将代码运行,将给的output文件里面的每一行序列进行计算md5的值,最后得到flag,但是遇到的问题是没有flag文件,代码现在是无法运行的。

✨然后,我自己创建一个叫flag的文件,代码运行没有报错,现在要做的就是看怎样获取flag文件里面的内容。(做到后面才知道,这个脚本只是告诉你加密的过程)

✨新发现,output里面给的序列,我将每一行分别进行md5解密

Go 复制代码
8fa14cdd754f91cc6554c9e71929cce7    f
2db95e8e1a9267b7a1188556b2013b33    l
0cc175b9c0f1b6a831c399e269772661    a
b2f5ff47436671b6e533d8dc3614845d    g
f95b70fdc3088560732a5ac135644506    {
61e9c06ea9a85a5088a499df6458d276    W
e1671797c52e15f763380b45e841ec32    e
c4ca4238a0b923820dcc509a6f75849b    1
4a8a08f09d37b73795649038408b5f33    c
cfcd208495d565ef66e7dff9f98764da    0
6f8f57715090da2632453988d9a1501b    m
e1671797c52e15f763380b45e841ec32    e
b14a7b8059d9c055954c92674ce60032    _
e358efa489f58062f10dd7316b65649e    t
cfcd208495d565ef66e7dff9f98764da    0
b14a7b8059d9c055954c92674ce60032    _
e358efa489f58062f10dd7316b65649e    t
2510c39011c5be704182423e3a695e91    h
e1671797c52e15f763380b45e841ec32    e
b14a7b8059d9c055954c92674ce60032    _
f1290186a5d0b1ceab27f4e77c0c5d68    w
cfcd208495d565ef66e7dff9f98764da    0
4b43b0aee35624cd95b910189b3dc231    r
c4ca4238a0b923820dcc509a6f75849b    1
8277e0910d750195b448797616e091ad    d
b14a7b8059d9c055954c92674ce60032    _
cfcd208495d565ef66e7dff9f98764da    0
8fa14cdd754f91cc6554c9e71929cce7    f
b14a7b8059d9c055954c92674ce60032    _
6f8f57715090da2632453988d9a1501b    m
8277e0910d750195b448797616e091ad    d
e4da3b7fbbce2345d7772b0674a318d5    5
cbb184dd8e05c9709e5dcaedaa0495cf    }

✨发现了flag{We1c0me_t0_the_w0r1d_0f_md5},注意:就是1和0

相关推荐
深圳市快瞳科技有限公司21 分钟前
小场景大市场:猫狗识别算法在宠物智能设备中的应用
算法·计算机视觉·宠物
liulilittle44 分钟前
OPENPPP2 —— IP标准校验和算法深度剖析:从原理到SSE2优化实现
网络·c++·网络协议·tcp/ip·算法·ip·通信
superlls3 小时前
(算法 哈希表)【LeetCode 349】两个数组的交集 思路笔记自留
java·数据结构·算法
田里的水稻3 小时前
C++_队列编码实例,从末端添加对象,同时把头部的对象剔除掉,中的队列长度为设置长度NUM_OBJ
java·c++·算法
纪元A梦4 小时前
贪心算法应用:保险理赔调度问题详解
算法·贪心算法
Jayden_Ruan5 小时前
C++逆向输出一个字符串(三)
开发语言·c++·算法
点云SLAM5 小时前
C++ 常见面试题汇总
java·开发语言·c++·算法·面试·内存管理
叙白冲冲6 小时前
哈希算法以及面试答法
算法·面试·哈希算法
YuTaoShao7 小时前
【LeetCode 每日一题】1277. 统计全为 1 的正方形子矩阵
算法·leetcode·矩阵
古译汉书7 小时前
嵌入式铁头山羊stm32-ADC实现定时器触发的注入序列的单通道转换-Day26
开发语言·数据结构·stm32·单片机·嵌入式硬件·算法