西普CTF训练(programe部分分析)

本文详细介绍了西普CTF比赛中的编程部分,包括计算题的自动化解决、验证码识别与计算、矩阵数据的OCR识别及计算、算术题的求解和简单仿射变换的解密方法。通过JS、Python代码示例展示了如何应对各种挑战,涉及图像识别、自动化提交、数学计算等技术。
摘要由CSDN通过智能技术生成

1、计算题 http://ctf8.simplexue.com/jia/
页面在不断刷新,要求在3秒内提交答案,手工是无法在短时间内完成的,可以通过程序计算并自动提交。
可通过js,也可通过python,python稍微麻烦点。简便的是通过浏览器console口执行下列语句,自动计算并提交得到结果。
js代码如下,打开题目页面,F12在chome console口执行即可:

a=document.getElementsByName("my_expr")[0].innerHTML;
a=a.replace('x','*');//将x替换为*
a=a.replace('x','*');//替换2次
document.getElementsByName('pass_key')[0].value=eval(a);//执行并写入框中
document.getElementsByTagName('input')[1].click();//点击提交按钮

2、验证码识别计算 http://ctf8.simplexue.com/codeBMP/
压缩包中共9999个文件,每个文件都是一个4位数的验证码,要求用验证码数字乘以文件名数字得到的总和。
验证码识别可用tesseract-ocr,下载调用脚本pytesseract。
由于tesseract识别准确率很低,需要进行训练学习,学习方式详见http://blog.csdn.net/firehood_/article/details/8433077#
学习之后将生成的data拷到对应tesseract目录中,然后就可以运行了,计算结果是250686552492。
注意:有可能部分号码识别不准确,需要输出到文件中再拷贝到excel中核对,每个验证码均为四位数,若出现小于四位数或非数字,需要手动校正并重新计算。
python代码如下:

# -*- coding: utf-8 -*-
#识别验证码
try:
    from pytesseract import *
    from PIL import Image
    import os
    import time
    import random
except ImportError:
    print '模块导入错误,请使用pip安装,pytesseract依赖'
    raise SystemExit

def vcode(picname):
    "python验证码识别函数"
    image=Image.open(picname)
    filename='%d.tif'%(random.randint(10, 100)) #由于文件操作可能冲突,随机生成文件名,减少冲突概率
    image.save(filename)
    #time.sleep(0.01)
    image=Image.open(filename)
    im = image_to_string(image,'num',False,config="-psm 8")
    #time.sleep(0.01)
    #os.remove(filename)

    im = im.replace(' ', '')
    if im != '':
        return im
    else:
        return ''

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值