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提交

 

上一篇:Frsky X9D Plus遥控器和 Frisky R8 Pro接收机对频


下一篇:Vue中绑定值与字符串拼接以及结合三目表达式实现是否为空判定的使用