西普CTF訓練(programe部分分析)
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 ''
def ListFilesToTxt(dir,wildcard,recursion):
file1 = open('test1.txt','w')
exts = wildcard.split(" ")
files = os.listdir(dir)
num=0
datasum=0
for name in files:
fullname=os.path.join(dir,name)
if(os.path.isdir(fullname) & recursion):
1#ListFilesToTxt(fullname,wildcard,recursion)#遞迴呼叫
else:
for ext in exts:
if(name.endswith(ext)):
#print fullname#file.write(name + "\n")
filedata=int(name[0:name.find('.bmp')])
codedata=int(vcode(fullname))
datasum+=filedata*codedata
str1='%d:%d:%d:%s'%(num,codedata,datasum,name)
print str1
file1.write(str1+'\n')
num+=1
break
file1.close()
return datasum
try:
dir="script\\python\\bmp"#path
wildcard = ".bmp .jpg"
print ListFilesToTxt(dir,wildcard, 1)
except KeyboardInterrupt:
raise SystemExit('爺,按您的吩咐,已成功退出!')
3、考考你的程式功底 http://ctf1.simplexue.com/program/1/
題目給了一個圖片,是一個20*20的矩陣,首先要進行OCR識別,提取出來資料來。推薦用www.newocr.com/來識別提取資料,提取後要修改一下,主要是部分4識別為1了,手動核對修改一下。
計算方法是沿著每行、每列、每個對角線來進行查詢計算,得到結果
70600674
[12, 6]
最大乘積結果為70600674,得到KEY:[email protected]#!!
python程式碼如下:
# -*- coding: utf-8 -*-
f=open(u'num.txt','r')
"填充資料到矩陣中"
matrix=[[0 for i in range(20)] for j in range(20)]
row=0
for cl in f:
xx=cl.split(' ')
col=0
for inn in xx:
matrix[row][col]=int(inn)
col+=1
row+=1
tmpNum=0#計算值
tmpm=[0,0]#對應的行列起始位置
"行"
for rows in range(20):
for cols in range(17):
tmp=1;
for dd in range(4):
tmp*=matrix[rows][cols+dd]
if tmp>tmpNum:
tmpNum=tmp
tmpm=[rows,cols]
"列"
for cols in range(20):
for rows in range(17):
tmp=1;
for dd in range(4):
tmp*=matrix[rows+dd][cols]
if tmp>tmpNum:
tmpNum=tmp
tmpm=[rows,cols]
"對角線1"
for xjj in range(-16,16,1):#
if xjj<=0:
rowst=0
colst=0-xjj
else:
rowst=xjj
colst=0
while True:
rowst+=1
colst+=1
if rowst>16 or colst>16:
break
tmp=1
for dd in range(4):
tmp*=matrix[rowst+dd][colst+dd]
if tmp>tmpNum:
tmpNum=tmp
tmpm=[rowst,colst]
"對角線2:逆對角線"
for xjj in range(-16,16,1):
if xjj<=0:
rowst=0
colst=19+xjj
else:
rowst=xjj
colst=19
while True:
rowst+=1
colst-=1
if rowst>16 or colst<3:
break
tmp=1
for dd in range(4):
tmp*=matrix[rowst+dd][colst-dd]
if tmp>tmpNum:
tmpNum=tmp
tmpm=[rowst,colst]
print tmpNum #列印最大值結果
print tmpm #列印所在的行和列
4、算術題:http://ctf1.simplexue.com/program/2/
題目比較明確,只需填10個數,搜尋即可,滿足條件:10個數各不相同。
經過搜尋找到最大的串為6531031914842725,輸入後得到key:IL0V3Pr0Gr4ming_###)
程式碼比較簡單,基本是迴圈,判斷,跑出的數複製到excel排個序即可,圖中每個數位置如下圖:
python程式碼如下:
def printnum(a,b,c,d,e,f,g,h,i,j):
tmp=a
tmp=min(a,d,f,g,j)
if tmp==a:
print '%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d'%(a,b,c,d,c,e,f,e,h,g,h,i,j,i,b)
elif tmp==d:
print '%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d'%(d,c,e,f,e,h,g,h,i,j,i,b,a,b,c)
elif tmp==f:
print '%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d'%(f,e,h,g,h,i,j,i,b,a,b,c,d,c,e)
elif tmp==g:
print '%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d'%(g,h,i,j,i,b,a,b,c,d,c,e,f,e,h)
elif tmp==j:
print '%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d'%(j,i,b,a,b,c,d,c,e,f,e,h,g,h,i)
for a in range(1,11,1):
for b in range(1,11,1):
if b==a:
continue
for c in range(1,11,1):
if c in [a,b]:
continue
for d in range(1,11,1):
if d in [a,b,c]:
continue
for e in range(1,11,1):
if e in [a,b,c,d]:
continue
for f in range(1,11,1):
if f in [a,b,c,d,e]:
continue
for g in range(1,11,1):
if g in [a,b,c,d,e,f]:
continue
for h in range(1,11,1):
if h in [a,b,c,d,e,f,g]:
continue
for i in range(1,11,1):
if i in [a,b,c,d,e,f,g,h]:
continue
for j in range(1,11,1):
if j in [a,b,c,d,e,f,g,h,i]:
continue
if a+b+c==d+c+e==f+e+h==g+h+i==j+i+b:
printnum(a,b,c,d,e,f,g,h,i,j)
function fff(a,b)
{
var dic={};
for(i=0;i<26;i++)
{
dic[String.fromCharCode((a*i+b)%26+97)]=String.fromCharCode(i+97);
}
return dic;
}
pwd="xztiofwhf";
pwd_dic=fff(5,11);
str="";
for(j=0;j<pwd.length;j++)
{
str+=pwd_dic[pwd[j]];
}
console.warn(str);
相關推薦
西普CTF訓練(programe部分分析)
1、計算題 http://ctf8.simplexue.com/jia/ 頁面在不斷重新整理,要求在3秒內提交答案,手工是無法在短時間內完成的,可以通過程式計算並自動提交。 可通過js,也可通過py
西普CTF訓練(溢位)
void main() { asm( "_start:\n\t" "jmp test1\n\t" "test2:\n\t" "pop %ebx\n\t" "m
西普CTF部分題目(解密)
1、simple algorithm 題目地址:http://www.simplexue.com/ctf/examctfdetail/737 題目給了一個py指令碼和一個密文檔案,py指令碼將明文轉換為密文,現在需要將密文檔案中的密文解密得到明文。 加密演
PCA (主成分分析)詳解 (寫給初學者) 結合matlab(轉載)
整數 變量 行為 保持 sum osc 入參 函數 data 一、簡介 PCA(Principal Components Analysis)即主成分分析,是圖像處理中經常用到的降維方法,大家知道,我們在處理有關數字圖像處理方面的問題時,比如經常用的圖像的查詢
對於同一套應用程序如何發布一個體驗版(有部分功能)完整版(有完整功能)
service() () ogr com 完整 fine adk testin generic 最近項目中,先做一個版本給用戶(普通用戶作為體驗使用)。之後再有一個完整功能版。 #define OFFLINE using System; using System.
vue 實現 ios 原生picker 效果(實現思路分析)
sta 效果 cursor touchend orm dex tex sub alt 以前最早實現了一個類似的時間選擇插件,但是適用範圍太窄,索性最近要把這個實現方式發布出來,就重寫了一個高復用的vue組件。 支持安卓4.0以上,safari 7以上 效果預覽 gitHu
算法分析| 集1(漸近分析)
style 獲得 判斷 永遠 算法 大小為n 大於 set 讓我 為什麽分析算法性能? 應該照顧好許多重要的事情,如用戶友好,模塊化,安全性,可維護性等。為什麽要擔心性能? 對此的答案很簡單,只有我們有表現,才能有上述所有的東西。 比如我們如果表現像貨幣,我們可以買
算法分析| 第4集(循環分析)
使用 hms other == tle 評估 選擇排序 文章 font 我們在之前的帖子中討論了漸近分析, 最差,平均和最佳案例 還有漸近符號。 在這篇文章中,討論了使用簡單示例分析叠代程序。 1)O(1):如果一個函數(或一組語句)不包含循環,遞歸和調用任何其他非常
建庫建表學習心得(知識點誤點分析)
.cn 分析 說明 log courses 應該 code 主健 字符類型 建庫建表知識點(下列舉例)、 建庫: CREATE DATABASE EduBase2017 ON (NAME=‘Datefile_1‘ ,FILEN
Go語言Context(設計及分析)
sin 循環 elf 處理請求 val pri inter text ont context簡單概述:Go服務器的每個請求都有自己的goroutine,而有的請求為了提高性能,會經常啟動額外的goroutine處理請求,當該請求被取消或超時,該請求上的所有goroutine
[python] 詞雲:wordcloud包的安裝、使用、原理(源碼分析)、中文詞雲生成、代碼重寫
possible 渲染 alias com 表達 問題 compute ural pty 詞雲,又稱文字雲、標簽雲,是對文本數據中出現頻率較高的“關鍵詞”在視覺上的突出呈現,形成關鍵詞的渲染形成類似雲一樣的彩色圖片,從而一眼就可以領略文本數據的主要表
getParameter和getAttribute區別(超詳細分析)
list 共享 ava 多個 設置 png 過程 技術分享 對象 getParameter和getAttribute區別(超詳細分析) (一)對getParameter過程,如下圖: (二)對getAttribute過程,如下圖 兩者區別: ①getPa
網站分析參數(實例分析)SimilarWeb插件參數
err arw 初步 流量 nth ffi alt lec 翻譯 閑來無事,看小米官網的時候,點開了之前安裝的similar web插件,對於網站分析也挺感興趣,借著這個插件工具,就初步了解一下網站分析相關。 那麽這些指標是什麽意思呢? SimilarWeb R
小專案(文字資料分析)--新聞分類任務
1.資料 import pandas as pd import jieba #資料(一小部分的新聞資料) df_news = pd.read_table('val.txt',names=['category','theme','URL','content'],encoding='ut
西電計算機學院(原軟體學院)軟體工程考研複試
①:進行一個自我介紹(中文或英文),若英文水平好的建議用英文,這樣更能引起老師對你的注意。 ②:介紹完成後,在你的前面有五張紙條,上面分別是五段專業英語文章,你去隨便抽一張,抽到以後,先大
Springboot使用Jsp模板檢視開發web應用(含問題分析)
最近有個springcloud專案,所有服務返回的資訊是json字串,現在需要對專案進行改造,使用jsp頁面返回服務呼叫結果。開發工具為Idea。 先來看一下專案結構(只展示涉及到的部分,如果你的專案中沒有對應資料夾,需要新建資料夾): ├── src │ ├── main │
ElasticSearch權威指南學習(對映和分析)
概念 對映(mapping)機制用於進行欄位型別確認,將每個欄位匹配為一種確定的資料型別(string, number, booleans, date等)。+ 分析(analysis)機制用於進行全文文字(Full Text)的分詞,以建立供搜尋用的反向索引。 資料型別差異 在索引中
讓你不再害怕指標的應用-全程模擬+註解(第二部分陣列)
讓你不再害怕指標的應用-全程模擬+註解(第二部分:陣列)(持續更新) 寫此文章一是為了分享,二是為了溫習! 預計包含的內容為:變數如int 、陣列 、結構體 、列舉 、聯合體、(這個自己也在瞭解)。 軟體:CODE::Blocks &n
python-相互轉換(和部分功能)知識整理
#!/usr/bin/env python# -*- coding:utf-8 -*-# __author__:anxu.qi# Date:2018/11/19## mer = ["電腦","滑鼠","U盤","CPU","硬碟"]# for i in mer:# print(i)# print("
九度oj 專題整理(模擬部分4)
1070請參見模擬1部分 題目1068:球的半徑和體積 double型別表示的範圍比float和long long大,所以我多用double,注意PI定義 #include <iostream> #include <string> #include <