前言
声明:本人纯小白无任何经验。以下纯属个人见解不代表任何组织。
前几天打了下CTF(红帽杯)的线上赛,不得不说,高手云集。我也是真的菜,签到即退场。第二天去做ISCC的练武题在做杂项的时候发现一些问题都是需要自己动手(先动脑)做的。工具是死的,题和人都是活的。
二次声明:由于本人真的很菜,就写这一个题的过程了
50分最基础了。
解题思路:题目里说Scatter百度一下去
是个函数,那么提前知道应该是要用到了。
打开题目:
看特征三个一组加上刚才百度查到的散点图函数,应该是三维图像(我这里因为嫌找工具麻烦,而且也是想锻炼自己python能力就想自己写一个了)
python编写:先在网上查找scatter函数里面都有什么参数。了解到的有颜色,坐标等等。
因为这个函数比较简单就没有找相似的例子直接开始写了(使用时需要在pycharm中安装MATLAB这个库)
初生牛犊不怕虎,就硬写。。。。。。。然后就出不来东西,也检查不出来错。只好去网上找相似的看,去用吸星大法吸取经验。
Python中scatter函数参数及用法详解_python_脚本之家 (jb51.net)
https://www.jb51.net/article/127806.htm
这个里面写的是二维的坐标,我借鉴之后换成我的三维图像终于成了
并且只需要稍微拖一下角度
python代码如下:(很简单的几行代码,如果是200分的题400分的题,要自己写的话,估计是一项大工程了)
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
lis = [1,3,1,1.25,3,1,1.5,3,1,1.75,3,1,2,3,1,2,2.75,1,2,2.5,1,2,2.25,1,2,2,1,2,1.75,1,2,1.5,1,1,2.25,1,1.25,2.25,1,1.5,2.25,1,1.75,2.25,1,1,1.5,1,1.25,1.5,1,1.5,1.5,1,1.75,1.5,1,3,3,1,3.25,3,1,3.5,3,1,3.75,3,1,4,3,1,3.25,2.25,1,3.5,2.25,1,3.75,2.25,1,4,2.25,1,4,2,1,4,1.75,1,4,1.5,1,3,1.5,1,3.25,1.5,1,3.5,1.5,1,3.75,1.5,1,3,1.75,1,3,2,1,3,2.25,1,3,2.5,1,3,2.75,1,5,3,1,5.25,3,1,5.5,3,1,5.75,3,1,6,3,1,6,2.25,1,6,2,1,6,1.75,1,6,1.5,1,5.75,1.5,1,5.5,1.5,1,5.25,1.5,1,5,1.5,1,5,2.25,1,5.25,2.25,1,5.5,2.25,1,5.75,2.25,1,5,2.5,1,5,2.75,1,7,3,1,7.25,3,1,7.5,3,1,7.75,3,1,8,3,1,8,2.75,1,8,2.5,1,8,2.25,1,8,2,1,8,1.75,1,8,1.5,1,9,3,1,9.25,3,1,9.5,3,1,9.75,3,1,10,3,1,10,2.75,1,10,2.5,1,10,2.25,1,9.75,2.25,1,9.5,2.25,1,9.25,2.25,1,9,2.25,1,9,2,1,9,1.75,1,9,1.5,1,9.25,1.5,1,9.5,1.5,1,9.75,1.5,1,10,1.5,1,11,3,1,11.25,3,1,11.5,3,1,11.75,3,1,12,3,1,12,2.75,1,12,2.5,1,12,2.25,1,12,2,1,12,1.75,1,12,1.5,1,11.75,1.5,1,11.5,1.5,1,11.25,1.5,1,11,1.5,1,11,1.75,1,11,2,1,11,2.25,1,11,2.5,1,11,2.75,1,11.25,2.25,1,11.5,2.25,1,11.75,2.25,1]
x = lis[0::3]
y = lis[1::3]
z = lis[2::3] #把题目里的坐标分别列表里,遍历给x,y,z。
fig = plt.figure()
ax = plt.figure().add_subplot(111, projection = '3d') #111图中画3D图
ax.set_title('sandianjiemi') #题目
ax.set_xlabel('X zhou') #轴
ax.set_ylabel('Y zhou')
ax.set_zlabel('Z zhou')
ax.scatter(x,y,z,c = 'r',marker = '.') #坐标 颜色 图形
plt.legend('x1') # 设置图标
plt.show() # 将排列好的显示出来
注:lis的数据都是逗号隔开当然不是一个个换掉的,文本编辑器里自带替换功能噻!
总结:这个小题很简单,但以我看来(个人观点)难题的解题过程也是会用到的这些基本功能。想象一下,不联网的比赛中,如果你只会用工具,而此时工具掉链子了,难道就只能退赛?
需要的功能大多可以自己编写脚本实现。(大佬勿喷)而且许多题中也需要能看懂一些不常见的代码。这也是很重要的噻!。。。。。。。现阶段的我以为,扎实的python能力对CTF的解题是一个很好的辅助,诸君有任何高见都可以来指导在下,超级欢迎!!!(我是小白!!我是小白!!我是小白!!)