在“实验吧”的做CTF题时遇到的一道题,地址在这里:http://ctf5.shiyanbar.com/misc/cidai.html

因为正在学python,做这道题的时候正好用python写个简单程序辅助做题,将学到的知识用入实战,巩固一下python知识

感觉收获挺大,故此写下这篇随笔记录下。

----------------------------------------------------------华丽的分割线--------------------------------------------------------------------------

1.看题

首先题目给出的编码只有字符 'o' 和下划线 '_' ,可以很容易联想到二进制

接着观察样码,共有8行刚好对应 'Beijing' 有8个字符,并且每行只有7个字符,若表示成二进制刚好符合ASCII编码。

于是可以确定每一行可以转成一个二进制再通过ASCII编码转成字符

那么问题就来了是o代表0,_代表1呢?

还是o代表1,_代表0呢?

所以我们需要通过样码来确定

2.敲代码

这么多的符号,要是手动一个一个改成0,1再查ASCII码改成字符肯定不现实

而最近正好在学python,于是正好用python写一个小程序来实现这些功能 来练练手

我敲的代码如下:

 #coding=UTF-8
filename='2.txt'
with open(filename,'r') as file:
lines=file.readlines()
n=len(lines)
i=0 # 将o_码转为二进制码并写入文档
for i in range(0,n):
lines[i].rstrip('\n')
lines[i]=lines[i].replace('o','')
lines[i]=lines[i].replace('_','')
with open(filename,'a') as file:
file.write('\n\n')
for line in lines:
file.write(line) # 网上扒的一个将二进制串转为字符串的函数
def decode(s):
return ''.join([chr(m) for m in [int(b, 2) for b in s.split(' ')]]) for i in range(0,n):
lines[i]=decode(lines[i]) # 将解码后的字符串写入文档
with open(filename,'a') as file:
file.write('\n\n')
for line in lines:
file.write(line)

(如果对于代码有更好的建议可以告诉我)

这里先假设 'o'-->0,'_'-->1

3.解码

将样码放进2.txt文档里,执行后

打开2.txt,结果最后一行乱码了,说明假设错误,应当是'0'-->1,'_'-->0

修改代码后

成功了,得到了我们想要的结果

然后将需要解码的那一段放进1.txt里,执行就能得到结果

4.总结:

虽然这个题本身是很简单的,解题过程也是很简单的,对于一些大佬来说是完全不起眼的小题。但是对于小菜鸟的我来说,通过最近正学的python辅助解题的这个过程很有意义的。在写python代码的过程中,遇到的一些坎,在百度的过程中,一方面了解了很多还不知道的知识,另一方面还熟悉了一些代码,比如数据类型的转换,文件操作等。

总之,学习需要一点一点地积累。

Where there is a will,there is a way!

实验吧“解码磁带”的write up的更多相关文章

  1. 实验吧CTF题库-安全杂项

    XDCTF misc200: 题目提示: 下载文件 用foremost分离文件 接下来用archpr 4.53进行明文攻击 先把00002700.zip中的readme.txt提取出来压缩成zip文件 ...

  2. Android毕业设计-微圈

    勤拂拭软件出品,必属精品 : 勤拂拭软件 去年做了一个类似于我的朋友圈的项目,主要功能就是用户可以实时发表自己的动态,好友可以评论点赞什么的,可以建群,聊天啊,拉黑啊,反正是一个不错的社交软件,包含服 ...

  3. Verilog HDL那些事_建模篇笔记(实验八:键盘解码)

    1.PS2接口与协议时序图 对于PS2的接口来说,需要额外关注的是PIN5与PIN1,一个是时钟,一个是数据.PS2协议对数据的移位是“CLOCK下降沿”有效,其CLOCK的频率通常在10KHz左右. ...

  4. 20172332 2017-2018-2 《程序设计与数据结构》Java哈夫曼编码实验--哈夫曼树的建立,编码与解码

    20172332 2017-2018-2 <程序设计与数据结构>Java哈夫曼编码实验--哈夫曼树的建立,编码与解码 哈夫曼树 1.路径和路径长度 在一棵树中,从一个结点往下可以达到的孩子 ...

  5. 基于STM32F1 的BASIC解码实验 vb basic 液晶显示执行过程及结果

    基于STM32F1 的BASIC解码实验 1.basic程序以文件形式存储 2.程序文件存储在sd卡 3.解释结果显示在液晶屏上 主函数部分 int main(void){ u16 i,j; dela ...

  6. 图像压缩编解码实验(DCT编码+量化+熵编码(哈夫曼编码))【MATLAB】

    课程要求 Assignment IV Transform + Quantization + Entropy Coding Input: an intra-frame or a residue pict ...

  7. 协议分析 - DHCP协议解码详解

    协议分析 - DHCP协议解码详解 [DHCP协议简介]         DHCP,全称是 Dynamic Host Configuration Protocol﹐中文名为动态主机配置协议,它的前身是 ...

  8. 【图像处理】第三次实验:JPEG图像压缩

    1.任务说明 将LENA图像用JPEG方式压缩. 2.算法原理 JPEG(Joint Photographic Experts Group)是一个由ISO和IEC两个组织机构联合组成的一个专家组,负责 ...

  9. [python基础]关于中文编码和解码那点事儿

    我们在用python处理中文的时候,或多或少会遇到这样一些错误 常见错误1: SyntaxError: Non-ASCII character '\xe4' in file C 常见错误2: Unic ...

随机推荐

  1. Linux shell脚本学习

    1.cgmod +x ./文件 获取执行权限,使脚本具有执行权限 2.  ./name.sh  执行脚本 ./为当前目录 直接使用name.sh系统会去PATH里面找name.sh,而PATH里只有/ ...

  2. 【SpringBoot】SpringBoot拦截器实战和 Servlet3.0自定义Filter、Listener

    =================6.SpringBoot拦截器实战和 Servlet3.0自定义Filter.Listener ============ 1.深入SpringBoot2.x过滤器Fi ...

  3. 安装win10 1703版本操作系统

    1.使用UltraISO 全功能单文件 9.5.3.2900刻录工具,刻录iso文件到U盘里 2.默认刻录之后,U盘分区格式变成了fat32,而fat32单个文件无法超过4GB 而1703版本里面的i ...

  4. jQuery基础(二)DOM

    DOM节点的创建 jQuery节点创建与属性的处理 创建元素节点: $("<div></div>") 创建为文本节点: $("<div> ...

  5. 1.1.20 Word不能保存问题

    1.进入如下目录:C:\用户(user)\Administrator\AppData\Roaming\Microsoft\Templates 2.找到Normal和NormalOld的两个文件,删除. ...

  6. Linux tmpwatch命令详解

    Linux tmpwatch命令 Linux tmpwatch命令用于删除暂存文件. 执行tmpwatch指令可删除不必要的暂存文件,您可以设置文件超期时间,单位以小时计算 用法: tmpwatch ...

  7. property用法

    用法一 class Test(object): def __init__(self): self.__Num = 100 def setNum(self,Num): print("---se ...

  8. solr6.4.1 搜索引擎(1)启动eclipse启动

    solr是一个java写的搜索引擎,所以支持java方式的eclipse调试. 本篇文章使用solr版本为6.4.1 一. 环境 solr 下载地址 http://archive.apache.org ...

  9. Excel函数匹配查找

    需求 例如:北京沃尔玛有限公司,由已知的沃尔玛缩写,将两者进行匹配. 函数 lookup() 第一个参数“Lookup_value”:是要查找的值:第二个参数“lookup_vector”:是要查找的 ...

  10. 转载--无弹窗APT渗透实验

    转载--无弹窗APT渗透实验 文章作者:亚信安全,转载自 FreeBuf.COM APT攻击方式花样繁多,我研究最近的流行的APT攻击方式,在本地搭建环境模拟一次简单的APT攻击,在模拟攻击过程中发现 ...