攻防世界 misc 新手区 掀桌子

这个题啊…

一看这么长一串我在想是不是md5

一套发现直接不符合,于是顺便研究了一下md5的格式:

md5是会生成一个128位(二进制)的密文,但是由于二进制太长,所以一般用32个16进制数来表示,而有的时候我们会看到md5是16位数的,这是在原本32位数上节选了9-24位的部分。

在这里插入图片描述
好不扯远了。

一看不是md5,开始猜想是不是其他的加密方式,看了几种常见的加密好像都不是…

于是查阅资料(指百度查这道题的wp…

发现居然这个里面所有的数都是16进制的。

立马考虑把两位数化为一个字节,用ascii码编码。

上代码!

flag = ''
s='c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2'
l = len(s)//2
for i in range(l):
    flag += chr(int(s[i*2:(i+1)*2], 16))
print(flag, end='')

可惜,这得到的都是啥啊,瞬间傻眼了

Èé¬ ÆòåóèÄïç¡ Ôèå æìáç éóº èêúãùäêúâêäãêëúëãõçéóäãèêùêóâäæò

继续查阅资料(指继续看别人的wp

惊!发现原来这个是ascii码的扩展部分!

这个时候就体现出基础的重要性了!

来看一下ascii码

ASCII码表大致可以分三部分组成:
一:ASCII非打印控制字符

二:ASCII打印字符

三:扩展ASCII打印字符

附上ascii码表:
在这里插入图片描述
在这里插入图片描述
一般来说,我们使用的都是7位的ascii码,即0-127,而128-255则是扩展的一些其他符号。

根据观察我们发现

Èé¬ ÆòåóèÄïç¡ Ôèå æìáç éóº èêúãùäêúâêäãêëúëãõçéóäãèêùêóâäæò

得到的这一串很明显是128-255部分的。

于是我们考虑对得到的ascii码进行取余操作

改代码!

flag = ''
s='c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2'
l = len(s)//2
for i in range(l):
    flag += chr(int(s[i*2:(i+1)*2], 16) % 128)
print(flag, end='')

ok答案就出来了~

这个题其实本身不难,不过由于我对密码不敏感以及对ASCII码和md5的不了解导致这题没有头绪,所以这题也是收获满满!

本文系作者原创,若有错误恳请斧正,不胜感激。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值