鸡藕椒盐味
公司食堂最新出了一种小吃,叫鸡藕椒盐味汉堡,售价八块钱,为了促销,上面有一个验证码,输入后可以再换取一个汉堡。但是问题是每个验证码几乎都有错误,而且打印的时候倒了一下。小明买到了一个汉堡,准备还原验证码,因为一个吃不饱啊验证码如下:1100 1010 0000 ,而且打印的时候倒了一下。把答案哈希一下就可以提交了。(答案为正确值(不包括数字之间的空格)的32位md5值的小写形式) 注意:得到的 flag 请包上 flag{} 提交
解密
验证码:1100 1010 0000
倒一下:000001010011
再用MD5加密,还是不对
漏了一条:每个验证码几乎都有错误。
这题开始是没有丝毫思路的,然后就去看了大佬的WP:鸡藕椒盐味=奇偶校验位,汉堡的售价八块钱,想到校验方法的海明校验,数据为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 = n3n5n7n9n11
同理 r2 : 0 = n6n7n10^n11
r4 : 0 = n5n6n7^n12
r8 : 1 = n9n10n11^n12
根据上面4个式子可发现r8式子有问题计算结果不为1,则n9,n10,n11三位中有错,又上面3个式子已经校验的n10,n11无错所以排除,即n9出错!
最终数据改为000001011011
倒置后110110100000
再md5加密获取32位小写值
得到
d14084c7ceca6359eaac6df3c234dd3b
所以flag是
flag{d14084c7ceca6359eaac6df3c234dd3b}