《CTF编程训练题------10000以内的加减法》要点:
本文介绍了CTF编程训练题------10000以内的加减法,希望对您有用。如果有疑问,可以联系我们。
实验君只是热爱CTF夺旗比赛,并不是意义上所谓的“黑客”,请粉丝们不要误会,那些@我帮忙盗账号,盗暗码、盗的图片的童鞋们,臣妾做不到啊.
不罗嗦,直接上标题:http://ctf8.shiyanbar.com/codeBMP/
今有一压缩包,其内图片不知几许(很多便是了).
【截图仅为一部门】
请君算出所有图片上的数与其文件名之乘积,所有乘积的和为KEY.
例:
文件名为1.bmp,图片上的数为:1234
文件名为5.bmp,图片上的数为:5678
……
文件名为233.bmp,图片上的数为:2345
key为:1234 x 1 + 5678 x 5 + ... + 2345 x 233 = ?
小编友情提示:PPC即编程类题目,题目涉及到程序编写、编程算法实现,当然PPC相比ACM来说,还是较为容易的.至于编程语言嘛,保举使用Python或Ruby来尝试.
“首先本标题的思路是对0到9取模,再根据规律进行比对即可''
取模
file = convert('C:\\Users\\lenovo\\Desktop\\bmp\\7.bmp')
box1 = (0,0,6,10)
box2 = (10,0,16,10)
box3 = (20,0,26,10)
box4 = (30,0,36,10)
im = file.crop(box4)
im.save('C:\\Users\\lenovo\\Desktop\\bmp\\model\\9.bmp')
'''
import Image
def convert(str1):
im = Image.open(str1) #实现对图片的加载
table = []
for i in range(256):
if i <140:
table.append(0)
else:
table.append(1)
im = im.convert('L') #实现对图片的黑白化
out = im.point(table,'1') #中值去噪,用值为140
return out
def cut(im): #对图片进行切割
box1 = (0,0,6,10)
box2 = (10,0,16,10)
box3 = (20,0,26,10)
box4 = (30,0,36,10)
im1 = im.crop(box1)
im2 = im.crop(box2)
im3 = im.crop(box3)
im4 = im.crop(box4)
return [im1,im2,im3,im4]
def print1(im): #将每个数模用的特征表现成元组的集合,每个数字都有不同的集合特征
width = im.size[0]
height = im.size[1]
load = im.load()
sss = []
for x in range(width):
for y in range(height):
sss.append(load[x,y])
#print sss
return sss
def characteristic_get(): #获得数模的特征
characteristic = []
for i in range(0,10):
out = convert('C:\\Users\\lenovo\\Desktop\\bmp\\model\\'+str(i)+'.bmp')
#out.point(table,'1')
characteristic.append(print1(out))
return characteristic
def ocr(str1,characteristic):
im = convert(str1) #去噪
imj= cut(im) #分割
result = ''
#print print1(imj[0])
#print characteristic[7]
for i in imj:
for hex in range(0,10):
if print1(i)==characteristic[hex]:
result+=str(hex)
break
return result
characteristic = characteristic_get()
path = 'C:\\Users\\lenovo\\Desktop\\bmp\\'
sum = 0
for i in range(1,10000):
sum+= i*int(ocr(path+str(i)+'.bmp',characteristic))
print sum
解题思路已经表达完毕.
CTF夺旗的朋友点击右上角存眷实验吧,希望不热爱CTF夺旗的朋友有们,也可以存眷实验吧,你们都是天才,看着看着就入门了.
感谢朋友们对实验吧的年夜力支 持. 实验吧官方粉丝群: 384182116 实验吧活动交流群:222359598
维易PHP学堂逐步分享更多《CTF编程训练题------10000以内的加减法》相关教程。欢迎交流
转载请注明本页网址:
http://www.vephp.com/jiaocheng/9118.html