鸡藕椒盐味-BUUCTF

题目

鸡藕椒盐-奇偶校验,作者费心了。。

存储器校验

汉明码的组成

即数据里含有检测数,具有一位纠错能力,设欲检测的二进制代码为n位,为使其具有纠错能力,需增添k位的检测位,组成n+k位的代码为了能准确对错误定位以及指出代码没错,新增添的检测位数k应满足:

eg:若n=4,则k最小为3,检测位的位置为2^i(i=0,1,2,3......),也就是1,2,4位置为检测位。

检测分组,这里我是根据二进制来看检测分组,如果检测位数k=4,第一组的特征为“xxx1”,第二组特征为“xx1x”,第三组特征为“x1xx”,第四组特征为“1xxx”,这里的x取0或1,所以第一组就有(001、011、101、111)也就是1、3、5、7位置的数为第一组检测小组,而1就是检测位,以此类推。

第一组特征xxx1
第二组特征xx1x
第三组特征x1xx
第四组特征1xxx

x取0或1

检测的1小组包含的位置1,3,5,7,9,11,......
检测的2小组包含的位置2,3,6,7,10,11,14,15,.....
检测的3小组包含的位置4,5,6,7,12,13,14,15,......
检测的4小组包含的位置8,9,10,11,12,13,14,15,24,......

例如,欲传递信息为b1b2b3b4(n=4),根据上面的条件可得k=3,则检测位置为1,2,4,安排如下:

二进制序号1 2 3 4 5 6 7
名称c1 c2 b4 c4 b3 b2 b1

c为检测数

计算校验位值:

汉明码的纠错过程

当收到一串汉明码后,首先对其检测,看是否有出错的数据,这里定义一个新的检测位Pi(i=1,2,4,8,......)根据Pi的状态,便可直接指出错误的位置。Pi的计算如下:

如果P3P2P1为000,则没有出错,举个例子,如果为001,则出错位置在1,也就是第一个位置出错,因为是二进制,如果原数是0,出错了改成1就行了(这里算出P后,数值倒过来看,也就是P3P2P1)

解题

此题给我们的验证码为110010100000,其实就是12位的汉明码,又给了提示说汉堡售价八块,也就是数据有8位,那校验位就是4位了,位置就是1,2,4,8,因为这个数是倒过来的,所以验证码按正确的顺序倒着写就是000001010011,根据上面的汉明码纠错,可知P4P3P2P1=1001,也就是第9位出错,把第9位的0改成1就是000001011011,再倒回来就是110110100000,再使用md5加密一下就是d14084c7ceca6359eaac6df3c234dd3b,也就是flag!!!

小结:回顾一下计算机组成原理的存储器校验,挺好!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

余切66

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值