zoukankan      html  css  js  c++  java
  • CRC碰撞

    循环冗余效验(Cyclic Redundancy Check, CRC)
    是一种根据网络数据包或电脑文件等数据产生简短固定位数校验码的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误。它是利用除法及余数的原理来作错误侦测的。

    原理:

    循环冗余校验同其他差错检测方式一样,通过在要传输的k比特数据D后添加(n-k)比特冗余位(又称帧检验序列,Frame Check Sequence,FCS)F形成n比特的传输帧T,再将其发送出去。
    校验码格式 校验码格式
    特别的,循环冗余校验提供一个预先设定的(n-k+1)比特整数P,并且要求添加的(n-k)比特F满足:
    T mod P == 0 ……(1)
    T = 2n-kD + F …… (2)
    基于上述要求,实际应用时,发送方和接收方按以下方式通信:
    1、发送方和接收方在通信前,约定好预设整数P
    2.、发送方在发送前通过(1)和(2)式确定并填充F,然后发送。
    3、 接收方收到数据,进行 result = T mod P 运算,当且仅当result = 0时接收方认为没有差错。
    发送方在发送数据前需要确定填充的(n-k)比特F

      ——原理摘自百度百科

     
     xman Misc-1
    题目:
     
    1、特征
    • 一般有很多zip的压缩包,
    • 解压需要密码,且密码复杂,不可爆破
    • 每个包很小,仅几k
     
    2、思路
    由于文件很小只几个字节,可以对其中的内容进行穷举,穷举后计算crc并与原文件的crc码对比。
     
    3、writeup
    将压缩包解压发现有很多chunkX.zip文件,并且里面都有data.txt文件。解压需要密码,尝试爆破发现不成功。发现每个文件极小只几k,进行crc碰撞。
    脚本:
    #coding:utf-8
    import zipfile
    import string
    import binascii
     
    def CrackCrc(crc):
        for i in dic :
            for j in dic:
                for p in dic:
                    for q in dic:
                        s=i+j+p+q
                        if crc == (binascii.crc32(s) & 0xffffffff):
                            print s   
     
    def CrackZip():
        for I in range(54):
            file = 'chunk' + str(I) + '.zip'
            f = zipfile.ZipFile(file, 'r')
            GetCrc = f.getinfo('data.txt')
            crc = GetCrc.CRC
            #以上3行为获取压缩包CRC32值的步骤
            CrackCrc(crc)

    dic = string.ascii_letters + string.digits + '+/='
    CrackZip()

    碰撞得出每个文件的内容,如下:
     
    UEsDBBQDAQAAAJFy1kgWujyNLwAAACMAAAAIAAAAZmxhZy50eHT/xhoeSnjMRLuArw2FXUAIWn8UQblChs4AF1dAnT4nB5hs2SkR4fTfZZRB56Bp/FBLAQI/AxQDAQAAAJFy1kgWujyNLwAAACMAAAAIAAAAAAAAAAAAIIC0gQAAAABmbGFnLnR4dFBLBQYAAAAAAQABADYAAABVAAAAAAA=
    发现是base64解码,但解码出现乱码,勾选结果以16进制显示,并保存为zip格式。
     
    解压后还是要密码,用Ziperello爆破,得密码。
     
     
    flag{i_z1pp3d_a_zip_w1th_sum_zips}
     
     
  • 相关阅读:
    步步为营 .NET 设计模式学习笔记 十三、Bridge (桥接模式)
    步步为营 .NET 设计模式学习笔记 十五、Composite(组合模式)
    Web服务器及客户端软件推荐
    步步为营 .NET 代码重构学习笔记 二、提炼方法(Extract Method)
    步步为营 .NET 代码重构学习笔记 十
    步步为营 .NET 设计模式学习笔记 十、Builder(建造者模式)
    步步为营 .NET 代码重构学习笔记 八
    新浪微博的文字滚动更新效果
    几段javascript实现一个打字游戏效果
    jquery实现简单的手风琴效果
  • 原文地址:https://www.cnblogs.com/xdjun/p/9416064.html
Copyright © 2011-2022 走看看