• 2022网鼎杯crypto——crypto091


    题目描述

    小A鼓起勇气向女神索要电话号码,但女神一定要考考他。女神说她最近刚看了一篇发表于安全顶会USENIX Security 2021的论文,论文发现苹果AirDrop隔空投送功能的漏洞,该漏洞可以向陌生人泄露AirDrop发起者或接收者的电话号码和电子邮箱。小A经过一番努力,获得了女神手机在AirDrop时传输的手机号哈希值,但再往下就不会了,你能继续帮助他吗?小A只记得女神手机号是170号段首批放号的联通号码。
    Hash:c22a563acc2a587afbfaaaa6d67bc6e628872b00bd7e998873881f7c6fdc62fc
    flag格式:flag{13位电话号码(纯数字,含国家代码)}

    解题过程

    由题,并查阅资料,得以下信息:

    • 该hash为sha256
      在这里插入图片描述
    • 根据当时的官方新闻,该号码前6位应为861709在这里插入图片描述
    • 题目为091,可推测号码前7位应为8617091

    代码实现

    解法1:

    '''
    Author: 白银
    Date: 2022-08-26 10:13:46
    LastEditTime: 2022-08-26 10:22:48
    LastEditors: 白银
    Description: 将号码分为前七后六,字符串拼接,后六范围为[000000, 999999],由于诸如`000000`的方式会被当成0处理,极大增加耗时,故选择为每一位单独遍历,这也导致低效
    '''
    
    import hashlib
    
    # sha256加密
    def jiami(byte):
        hash = hashlib.sha256()
        hash.update(bytes(byte, encoding='utf-8'))
        # print(hash.hexdigest())
    
        return hash.hexdigest()
    
    # 枚举爆破
    def enum(res, known):
        for i3 in range(0, 10):
            for i4 in range(0, 10):
                for i5 in range(0, 10):
                    for i6 in range(0, 10):
                        for i7 in range(0, 10):
                            for i8 in range(0, 10):
                                if jiami(known + str(i3) + str(i4) + str(i5) + str(i6) + str(i7) + str(i8)) == res:
                                    key = known + str(i3) + str(i4) + str(i5) + str(i6) + str(i7) + str(i8)
                                    # break
                                    return key
    
    
    if __name__ == "__main__":
        print('flag{' + enum('c22a563acc2a587afbfaaaa6d67bc6e628872b00bd7e998873881f7c6fdc62fc', '8617091') + '}')
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    解法2:

    '''
    Author: HSC-spmonkey
    Description: 简单粗暴高效,直接按13位整数爆破
    '''
    
    import hashlib
    
    sha256 = 'c22a563acc2a587afbfaaaa6d67bc6e628872b00bd7e998873881f7c6fdc62fc'
    
    for i in range(8617091000000, 8617100000000):
        hash = hashlib.sha256(str(i).encode('utf-8')).hexdigest()
    
        if hash == sha256:
            print(i)
            break
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    结果

    得到flag:flag{8617091733716}

  • 相关阅读:
    对DataFrame各行列累乘:prod()函数
    Electron 调试node_internal代码*
    Flutter 5 大本地数据库解决方案
    python+java音乐播放器系统nodejs+vue+elementui。
    机器学习概述
    容器化 | 一文搞定镜像构建方式选型
    这是不是你们都在找的免费又好用的配音网站?
    【SLAM-建图】Ubuntu18.04安装cartographer记录
    AOP获取通知以及实际应用
    Linux 并发与竞争(二)
  • 原文地址:https://blog.csdn.net/weixin_45770420/article/details/126554769