ppc_h4ckit-ctf-2016_Electronicon - PPC - 250 pts

记录一下,跟着题解自己完成了一遍

题目出处和解题方法:

h4ckit-ctf-2016_Electronicon - PPC - 250 pts

题目描述:

Description:

Belarus – Electronicon – PPC – 250 pts
EN: This task is one of the methods for the psychological attacks. It is intended for people who don’t have heart diseases and reached 18 years 

h4ck1t{flag.upper()}

 pain.txt用记事本打开,啥也看不出来,一坨大便,直接给干崩溃了:

 

 

用vscode打开,发现:

这么大的文件总共就十一行,可以看出一堆字符形状,读取不同字符的形状保存后用,当然不能人工读,python启动:

'''
Pod for Team Fourchette Bombe
'''
import codecs
f = codecs.open('pain.txt',encoding='utf-8')
flines = f.readlines()

length = 13
multiplier = 1
offset = multiplier*length

line = ''
for i in range(0,len(flines)):
	for j in range(0,length):
		line += flines[i][j+offset];
	line += '\n'
out = codecs.open('painPatterns/out','w', encoding='utf-8')
out.write(line)

 

可以依次得到所含字符的图案,然后再用pain.txt的每个图案与已有图案比对,依次输出字符,可以得到solve 

python代码如下(直解解析可得到十六进制串solve,hex解码存到slove中):

'''
Pod for Team Fourchette Bombe
'''
import codecs
f = codecs.open('pain.txt',encoding='utf-8')
flines = f.readlines()

chars = ('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f')

solve = ''

for i in range(0,len(flines[0]),13):
	for j in range(0,len(chars)):
		fp = codecs.open('./painPatterns/'+chars[j], encoding='utf-8')
		lines = fp.readlines() 
		Found = True
		for l in range(0,11):
			for c in range(0,13):
				if (flines[l][i+c] != lines[l][c]):
					Found = False;
					break;

			if not Found:
				break;
		if Found:
			solve += chars[j];
			break;

endf = open('solve','wb');
endf.write(bytes.fromhex(solve));

直接打开,一堆乱码:

用kali打开自动识别格式,JPG:

 

Flag: h4ck1t{1_L0V3_3P1C_F0NT$} 

 

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值