攻防世界_Crypto_sherlock

攻防世界刷题记录Crypto篇



前言

继续高手进阶区题目~sherlock
咦?夏洛克?
下载题目附件得到的是一个内容很长很长的txt文件,大体看了看就是很常规的英语文章,不过有一些突然大写的字母。感觉可能是需要提取出来什么吧,一看别人写的wp确实是要先筛出来文章里的大写字母。在这里顺便学到了如何在命令行里筛选出文件内容,好在mac和Linux命令可以通用呀。


解题步骤

1.筛选出文中的大写字母

先把题目附件改名为sherlock.txt,在该文件路径下打开终端,输入如下命令:

cat sherlock.txt | grep -o '[A-Z]' | tr -d '\n'

形如“命令A | 命令B”的这种Linux命令是把A执行的结果作为B的输入,所以这行完整命令的执行过程是将sherlock.txt的文件内容筛选出大写字母再去掉换行显示出来。(个人理解,如有错误欢迎指出)
这行命令也是从别人的wp学来的,好像还看见过更复杂的命令,只要能解题就先怎么简单怎么来吧!
得到的结果如下图所示,观察发现全都是ZERO和ONE这两个单词,所以想到下一步把它们转换成用数字0和1显示。
筛选出大写字母的结果

2.借助Python处理字符串

打开Python交互式编程,将ZERO和ONE转换成0和1显示出来:
写Python代码做字符转换
因为只涉及到两个单词,所以就两种情况用if…else语句即可,关键代码很简单:

i=0
while i<len(s):
    if(s[i] == 'Z'):
        print(0,end='')
        i+=4
    else:
        print(1,end='')
        i+=3   

以0和1显示后,想到借助在线网页工具做一下进制转换,转成16进制比较好用Python恢复成bytes。比较喜欢用的网站在这:http://www.hiencode.com/借助工具做进制转换

然后复制出来16进制数,放到Python的bytes.fromhex中得到flag啦!
拿到flag的字符串

bytes.fromhex('424954534354467b683164335f316e5f706c34316e5f353137337d')

总结

有时候会懒得去搜索去学新东西,比如暂时还不知道在Python里是不是直接就能做进制转换,只要能解决问题,就想到啥用啥了。继续学习吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值