Skip to content
📌知识点小结
  • 编程就是用一种计算机能懂的语言,把解决问题的步骤写成指令。
  • 编程语言是人和计算机之间的“翻译层”:Python 对人友好、贴近自然语言,适合安全入门。
  • 写程序的核心是“把大问题拆成一步步小步骤”,再用语法表达出来。
  • 代码会被“解释器/编译器”翻译成机器能执行的动作。
  • 安全人写代码多为自动化:批量探测、处理数据、写 PoC,不要求成为职业开发,但要能读写脚本。
✅自测一下

0.23 编程是什么:用代码指挥计算机 ​

第〇篇【零基础预科】免费。从这一篇进入编程,别被"编程"两个字吓到,它的核心思想非常朴素。

一、编程的本质 ​

回忆 0.1:计算机是"听话但没常识"的加工厂。编程,就是用一种它能懂的语言,把"解决问题的步骤"一条条写清楚。

关键不在记语法,而在拆解:

  • 大问题:"判断这个网址有没有漏洞";
  • 拆成小步骤:① 连上目标 → ② 发一个特定请求 → ③ 看返回里有没有某个特征 → ④ 打印结果。

把这些步骤用编程语言写出来,就是程序。

你可能会问:编程和我在 Excel 里写公式、配置一个软件,有什么不一样? Excel 公式只能在表格这个框定场景里算数据,软件配置只能选别人给好的选项;编程是通用的——任何你能拆成步骤的事,都能让电脑做,不受现成功能限制。

还有个被问烂的问题:"我数学不好,能学编程吗?" 能。安全脚本用到的主要是逻辑(如果……就……、对每个目标重复做),不是高等数学;会加减、比较大小、判断真假就够起步了。真正的门槛是愿不愿意把问题想清楚,而不是数学分数。

再给你一个上手诀窍:先用中文大白话把步骤列出来(这叫"伪代码"),再逐句"翻译"成 Python。比如先写"对名单里的每个网址:发一个请求;如果返回里包含某个特征,就把它记下来"——逻辑想通了,剩下的只是查每句话对应什么语法。新手卡住,多半是想一步到位写出代码,而不是先把思路理清。而且这套"拆解 + 逻辑"是通用的,今天用 Python、明天换别的语言,思路完全一样,要重学的只是语法外壳。

二、编程语言是什么 ​

计算机底层只懂 0/1,人没法直接写。于是有了编程语言作为中间层:你写接近人类语言的代码,由解释器/编译器翻译成机器动作。

常见语言:

语言特点 / 用途
Python简洁、库多,安全脚本/PoC/数据处理首选
JavaScript浏览器前端、Node 后端
Java企业后端、Android,反序列化重灾区
C/C++底层、高性能
Go云原生、工具开发
BashLinux 命令脚本

你可能会问:表里这些语言,写出来的东西运行方式都一样吗? 大致分两类。解释型(Python、JavaScript、Bash):你写完直接交给解释器,它边读边执行,改一行马上能再跑,适合快速写小工具。编译型(C/C++、Go,以及 Java 的前半段):要先用编译器把整个程序"翻译/打包"成机器码或字节码文件,再运行,性能高但多一道工序。0.30 会专门讲两者区别,现在有个印象即可。这也是为什么 Python 你能 python hello.py 直接跑,而 Java 要先 javac 编译。

三、为什么从 Python 开始 ​

安全领域 Python 几乎是"第二语言":

  • 语法干净,同样逻辑代码量少;
  • 强大的库:发请求(requests)、网络、正则、加解密;
  • 海量 PoC、工具、教程都用 Python;
  • 你复现漏洞时运行的 detect.py 就是 Python 脚本。

本预科的编程概念用 Python 举例,你可以在自己电脑装好 Python 后亲手运行。

为了让你看到它不只是"打印一句话",看个有点安全味道的小例子(requests 是发 HTTP 请求的库,先读个感觉,不用现在全懂):

python
import requests

url = "http://example.com"
resp = requests.get(url, timeout=5)   # 向目标发一个 GET 请求
print("状态码:", resp.status_code)    # 200 表示正常可达

这几行就完成了"连上目标 → 发请求 → 拿到响应状态",正是前面拆解的前两步。再加上"对一批网址循环、判断返回特征",就是一个最简单的探测器——你复现漏洞用的 detect.py,骨架与此一模一样,只是判断的特征更具体。

你可能会问:我在 Windows 上已经有 PowerShell 了,为什么还要学 Python? PowerShell 很强、尤其适合管理 Windows,但 Python 跨平台——同一段脚本在 Windows、Linux、macOS 都能跑;安全 PoC 和第三方库的生态也最大(发请求、加解密、内网的 impacket 等),遇到问题能搜到的现成例子最多。两者不冲突,本课程主力用 Python。

另外别想着"背语法"。没有程序员背得出所有函数,都是记住大概、用到就查文档或搜索;你要练的是看懂和拆解,语法细节随时可查,用多了自然记住。一上来就逼自己背一堆关键字,反而容易劝退。真正该花精力的,是"把问题拆成步骤"这种思维——它一旦建立,换什么语言都快。

四、第一段代码 ​

新建一个 hello.py:

.py 文件毫不神秘,它就是一个纯文本文件,用记事本都能打开编辑(只是没有高亮和自动补全)。所谓"写代码",就是把文字按语法写进这个文本文件、再交给解释器运行而已。

python
print("Hello, security!")

在终端运行:

bash
python hello.py
# 输出:Hello, security!

print(...) 的作用是把括号里的内容显示出来——这是你和程序"对话"最基础的方式。它看着简陋,却是调试时最常用的手段:想知道程序跑到哪一步了、某个变量现在是什么值,就在关键位置插一句 print,跑一遍就一目了然。后面写 PoC、调脚本,八成的 bug 都是靠 print 一步步盯出来的。

你可能会问:我敲 python hello.py,提示找不到命令怎么办? 在 Linux/macOS 和部分 Windows 环境里,Python 3 的命令可能叫 python3 而不是 python,换成 python3 hello.py 即可;若仍提示找不到,说明还没装好 Python 或没加进系统 PATH(环境篇 2.x 会讲安装)。另外运行前确认终端当前目录就在 hello.py 所在文件夹,否则系统也找不到这个文件。

五、安全人为什么必须会一点编程 ​

  • 自动化:手工测 100 个目标不现实,几行脚本批量完成;
  • 写 PoC / 验证漏洞:把攻击步骤固化成可复现脚本;
  • 看懂漏洞原理:很多漏洞的触发逻辑就在代码里,读不懂代码就只能背 payload;
  • 改工具、处理数据、写报告:处处用得到。

目标不是让你成为架构师,而是做到"读得懂、改得动、写得出"。

算一笔具体的账:领导让你确认 200 个资产里哪些还开着某个高危端口。手工一个个测,每个一两分钟、还容易看花眼,大半天就没了;写个十几行的脚本循环跑,你去倒杯水,几分钟后结果整整齐齐存成文件,谁有问题一目了然。安全工作里这种对比天天发生——会编程的人把重复劳动交给机器,把时间花在真正需要判断的地方。这也是为什么本 Wiki 把"读得懂代码、写得出脚本"当作基本功,而不是程序员的专利。

再说"看懂代码"为什么是漏洞学习的分水岭。以命令注入为例,漏洞代码可能就一行:os.system("ping " + user_input)——它把用户输入直接拼进系统命令。读得懂,你立刻明白为什么输入 127.0.0.1; whoami 能多执行一条命令、又该在哪一步加过滤;读不懂,就只能死记"这种输入框塞个分号",换个位置、换种写法又不会了。本 Wiki 反复强调"懂本质",落到实处就是这种"对着代码说出为什么"的能力。

六、本篇小结 ​

  • 编程 = 用编程语言把解决问题的步骤写成指令。
  • 编程语言是人和机器的翻译层;Python 简洁库多,是安全入门首选。
  • 核心能力是把大问题拆成小步骤。
  • 安全上要能读写脚本、写 PoC、做自动化,目标是"懂、改、写"。

下一篇 0.24 看看一段代码由哪些基本"零件"组成。