zoukankan      html  css  js  c++  java
  • crypto_11/25

    BUUCTF_鸡藕椒盐味

    题目描述:公司食堂最新出了一种小吃,叫鸡藕椒盐味汉堡,售价八块钱,为了促销,上面有一个验证码,输入后可以再换取一个汉堡。但是问题是每个验证码几乎都有错误,而且打印的时候倒了一下。小明买到了一个汉堡,准备还原验证码,因为一个吃不饱啊验证码如下:1100 1010 0000 ,而且打印的时候倒了一下。把答案哈希一下就可以提交了。(答案为正确值(不包括数字之间的空格)的32位md5值的小写形式) 注意:得到的 flag 请包上 flag{} 提交

    今天刷题,刷到这道的时候完全没思路搜了wp,虽然都写了是海明校验码但是没写清楚到底怎么找到错误位的,so以我这种新手的角度去写一篇解题思路。

    鸡藕椒盐味=奇偶校验位,售价八块钱。想到校验方法的海明校验,数据为8位,校验位为4位。参考文章简单理解海明校验码,不懂得话多看几篇会有收获的。

    首先倒置数据得到:000001010011 其中第1位第2位第4位第8位的数据为校验码设为r1,r2,r4,r8列出表格如下

    1(r1)=0  
    2(r2)=0  
    3(n3) r2+r1
    4(r4)=0  
    5(n5) r4+r1
    6(n6) r4+r2
    7(n7) r4+r2+r1
    8(r8)=1  
    9(n9) r8+r1
    10(n10) r8+r2
    11(n11) r8+r2+r1
    12(n12) r8+r4

    将有r1的数据位异或

    校验位r1 :0 = n3^n5^n7^n9^n11

    同理    r2 :  0 = n6^n7^n10^n11

       r4 :  0 = n5^n6^n7^n12

       r8 :  1 = n9^n10^n11^n12

    根据上面4个式子可发现r8式子有问题计算结果不为1,则n9,n10,n11三位中有错,又上面3个式子已经校验的n10,n11无错所以排除,即n9出错

    最终数据改为000001011011  倒置后110110100000  再md5加密获取32位小写值

    在线md5加密

    python脚本md5加密:

    import hashlib
    c="110110100000"
    md=hashlib.md5(c.encode("utf8")).hexdigest()
    print(md)

    得到d14084c7ceca6359eaac6df3c234dd3b 套上flag提交

  • 相关阅读:
    人生苦短之我用Python篇(遍历、函数、类)
    Python基础篇
    OSPF 配置
    RIPng 知识要点
    RIP 知识要点
    Cisco DHCP 配置要点
    python读取mat文件
    theano提示:g++ not detected的解决办法
    Can Microsoft’s exFAT file system bridge the gap between OSes?
    matlab 大块注释和取消注释的快捷键
  • 原文地址:https://www.cnblogs.com/Te-mgl/p/14038522.html
Copyright © 2011-2022 走看看