对我而言,技术入门是从成为一名脚本小子开始的。那时,我开始接触各类工具,尤其是在参与 CTF 竞赛以及进行攻防操作时所需的工具。这些开箱即用的工具着实为我们节省了不少精力。随着使用的深入,我对它们也有了更深刻的认识。
我将这些工具分为两类:一类是由使用需求直接催生的工匠型工具;另一类则是间接产生的创造型工具。创造型工具的制作门槛极高,通常是由某个领域的顶尖人才所打造,其效果也十分显著。不过,我们日常接触到的大多是工匠型工具,这类工具并未运用特别复杂的技术,为了满足需求,将繁琐的操作简单化。
我想强调的是,工具并非只有高精尖人才才能创造。我们可以把一些低劳动力消耗的工作脚本化,如果这种需求得到大众的认可,那这个工具无疑会受到广泛赞同。
但一个工具不被大众所需求,就意味着它不是好工具吗?答案显然是否定的。如果一个工具是为满足自身需求而制作,并且成功解决了自己面临的问题,那么对自己而言,它就是一个好工具。即便大众对此并无感,但自己有需求,换个角度看,这就是一种个性化定制。这种情况不仅适用于自己,对于客户来说也是如此。
举个例子,前段时间我自行开发了一款一键黑屏软件。不少师傅觉得它和“Win + L”组合键的功能一样,属于重复造轮子。但实际上,我开发这款软件是为了省去在黑屏不休眠和笔记本合上黑屏休眠这两种模式之间来回设置的麻烦。也许在别人看来这有些多此一举,但对我而言,它切实解决了一个小问题,尽管在契合大众需求方面并不成功,但培养了我会为了问题而去找办法解决的思维。
接下来,我想和大家分享一下我是如何想到要写工具的。时间回溯到大学二年级,那时我觉得课余时间比较充裕,便萌生了去参加一些面试的想法,主要目的是想了解一下安全领域的面试到底都考些什么内容。我先大致研究了一番招聘要求,但俗话说“百闻不如一见”,于是我直接投递了简历,并参加了几场面试。我的初衷很单纯,就是想找出那些自己答不上来的问题,以此明确自己的知识短板。
在面试过程中,抛开一些理论八股文,“你有没有自己开发工具的经验?”这个问题反复被面试官提及。也就是在那个时候,我意识到自己在开发项目,尤其是工具开发方面的经验严重不足。于是,我开始反向思考面试官提出这个问题的意图,如果我是面试官,我希望通过这个问题了解面试者哪些方面的情况呢?经过一番思索,我总结出以下几点:其一,考察面试者是否具备主动解决问题的技术能力;其二,了解面试者的解决问题思维逻辑;最后,团队协作能力
有了这样的认知后,我便抽空开始着手准备工具开发。一开始,我认为一个像样的工具得有图形用户界面(GUI),这样看起来才够专业、有格调。然而,我并不具备编写 GUI 的能力。考虑到自己对 Python 语言比较熟悉,我决定从 Python 入手,还去了解了诸如 Tkinter 之类的组件包。但实际操作起来,我发现这并不容易,我写出来的界面实在是惨不忍睹。
就在我感到有些沮丧的时候,人工智能的浪潮席卷而来,确切地说,是我真正开始接触并使用 AI 了。一个月10元接入api接口网页版的GPT - 4 的出现为我带来了转机,它可以根据我的需求生成合适的 UI 布局,并构建简单的框架。我至今仍清晰地记得,我开发的第一个工具是一个 URL 去重工具。在进行信息搜集时,我从 FOFA、Quake、Hunter 等平台以及子域名爆破过程中收集到大量域名,其中存在严重的重复问题。起初,我还四处寻找专门的去重工具,后来才发现,用 Python 的 set 集合就能轻松解决这个核心问题。有了核心代码后,我就像一个建筑师开始“建造房子”一样,把脚本交给 GPT,让它为我生成 GUI,就这样,我的第一个工具诞生了。现在想来,将这个简单的去重功能做成 GUI 确实有些多此一举,但它对我而言意义非凡,它引导我迈出了学习工具开发的第一步。对于很多同行来说,大家可能并非从开发起步,也很少接触 Python 的 GUI 编程,如果让我们去 B 站从头到尾看教程学习,难免会感到心累。我也是如此,于是我通过分析这个去重工具的代码,逐渐了解了一些基本的组件构成,正是从那时起,我学会了利用 AI 辅助学习。
随着我对工具功能需求的不断升级,我发现仅依靠网页版的 GPT - 4 已经无法满足我的要求了。就在这时,我接触到了 Cursor 这款应用。使用 Cursor 之后,我的开发效率得到了极大提升,就好比从之前每天跑到东边打水再到西边去喝的低效模式,转变为直接在水源处取水饮用。Cursor 的代码编写能力非常强大,与传统的 AI 相比,它生成的 GUI 界面不再是单调的大白框,而是更加炫酷、美观。我依旧采用之前学习的方法,通过阅读 Cursor 生成的代码来提升自己的能力。如果说之前 GPT - 4 就像搞中老师引导我入门代码学习,那么 Cursor 就如同大学老师,还是能直接到家教学的。或许有人会问,既然是通过阅读代码学习,为什么不直接去 GitHub 上找大佬们写的代码呢?他们的代码肯定比 AI 写得好。关于这个问题,我后面会给出建议。但在学习初期,如果有一个能够根据你的需求编写代码的“老师”,就相当于接受定制化教学,这样的学习效率显然会更高。
最后,我想和大家分享一些实际案例。最近,由于 DeepSeek 的出现,AI 审计代码又一次成为热门话题。我看到有公众号发布了一款 AI 审计工具,便去查看了它的源码。此前我也研究过 AI 审计相关内容,但一直不知道如何统一处理杂乱无章的 AI 输出结果。查看源码后,我发现原来可以使用 Prompt 进行统一指令设置,这让我对 Prompt 的使用有了新的认识,原来它可以是很长的一段话。不过,我在代码中并没有找到实现多文件联动审计的功能,于是我开始对这款工具进行评测,也想借此为一些同样好奇的同行介绍一下相关情况:
首先声明这不是一个批评文章,因为其工具开源且不盈利,且给我了一些启发思路,为了避免明指是何项目引发误会,我接入了其审计的代码,保留了核心功能,在此界面上进行了二次创造进行评测,帮助很多感兴趣的师傅们介绍下。https://github.com/LiChaser/AI_searchhttps://github.com/LiChaser/Hack_box