781 个 Kali 工具 2053 条命令装进一个 20MB 的 exe我开源了 Kali ToolKithello大家好我是Malcode一个专注于网安以及开发的人。用 Kali 的人都懂一个痛点工具实在太多了。Kali 官方收录了七百多个工具装完系统面对一长串名字——nmap、metasploit 这些熟面孔之外还有大量你听都没听过的东西。每次想找个趁手的工具要么去官网翻工具列表要么现搜博客网上搜出来的答案质量参差不齐很多还是好几年前的旧文。我就想能不能把这些工具整理成一个可以本地查的百科全书不要联网不要装依赖双击就能用中文说明连命令示例都给你准备好。折腾了几个月这个项目终于能拿出来见人了——Kali ToolKit一个把 781 个 Kali 工具、2053 条命令示例打包进单个 exe 的离线查询工具。全部代码开源MIT 协议。GitHub 地址https://github.com/sheyunyang/kali-toolkit觉得有用欢迎点个 Star这对独立开发者真的很重要。一、它到底是个什么东西一句话概括Kali Linux 工具百科全书 · 离线极客版。下载一个约 20MB 的KaliToolKit.exe双击运行无需安装、无需联网你就有了一部可以全文搜索的 Kali 工具手册。它收录了781 个工具覆盖信息收集、漏洞分析、Web 应用、密码攻击、无线攻击、逆向工程、取证、报告等 8 大分类2053 条命令示例每条都带中文说明和使用场景点击即可复制到剪贴板中英文混合搜索支持按工具名、描述、命令片段模糊匹配300ms 防抖️标签与关联工具每个工具有功能标签详情页还会推荐常搭配使用的其他工具暗色/亮色双主题右上角一键切换自动更新后台检查 GitHub Releases发现新版本一键自更新SHA-256 校验保证安全打开程序先是一段约 8 秒的开机动画——黑底、青色终端风字体算是给极客的一点仪式感嫌长点击任意处就能跳过。主界面左侧是搜索框和工具列表右侧是工具详情中英文描述、所属分类、官方地址、man 手册页以及可以直接复制的命令示例。它适合谁正在学渗透的新手每个工具是干嘛的一目了然、经常需要查命令的老手比开浏览器搜快得多、以及不装 Kali 但想了解安全工具的人比如 Windows 用户。二、技术选型怎么简单怎么来这个项目我想控制复杂度所以没有上 Electron 那种重方案。最终的技术栈是这样层选型理由前端Vue 3 原生 CSS单文件 HTML 就能跑不构建不打包后端FastAPI SQLitePython 一把梭SQLite 单文件数据库免安装免配置桌面壳pywebview用系统自带 WebView 渲染页面比 Electron 轻量一个数量级打包PyInstaller打成单 exe用户拿到直接双击数据Kali 官网爬取 DeepSeek AI 翻译官网工具列表是权威来源AI 负责批量翻译前后端通信就是最朴素的 HTTPpywebview 启动一个 uvicorn 线程跑 FastAPI前端 fetch127.0.0.1的接口。没有 WebSocket没有鉴权——本地工具不搞那些花活。真·离线所有依赖本地打包市面上很多号称离线的工具打开一看前端还在从 CDN 加载 Vue 和字体断网直接白屏。这个项目从第一天就把所有第三方依赖——Vue 3、Font Awesome 图标、JetBrains Mono 字体——全部下载到本地目录一起打包并且做了字体裁剪去掉用不到的 ttf 回退和非拉丁语系子集vendor 目录控制在 600KB 以内。断网、内网、虚拟机里照跑不误。后端聚合查询毫秒级响应FastAPI 部分不到 200 行数据库五张表CREATETABLEIFNOTEXISTStools(...);-- 工具本体CREATETABLEIFNOTEXISTScommands(...);-- 命令示例CREATETABLEIFNOTEXISTStags(...);-- 标签CREATETABLEIFNOTEXISTStool_tags(...);-- 工具-标签多对多CREATETABLEIFNOTEXISTSrelations(...);-- 常搭配使用关联接口设计上有两个刻意为之的取舍列表与详情分离。/api/search只返回摘要名字、分类、两行描述、标签/api/tool/{id}返回完整详情。选中工具时才拉详情列表响应从潜在几 MB降到 54KB。批量聚合消灭 N1。tags、relations、commands 用WHERE tool_id IN (...)一次查出再分组不管结果集多大固定就是 4 条 SQL。实测成绩接口响应大小耗时/api/search?qnmap8 KB9 ms/api/search100 条摘要54 KB31 ms/api/tool/1详情1 KB5 ms781 条数据的体量毫秒级响应完全够用。这里还有个反面教材schema 里原本建了 FTS5 全文索引表和三个同步触发器结果发现 LIKE 查询毫秒级就返回FTS5 反而要处理中文分词的额外复杂度——白建了。性能优化要对着真实数据量做这个道理值得刻在显示器边框上。死代码已经删掉同时给高频查询字段补了四个索引。启动链路健康检查代替赌运气这类桌面工具的经典 bug 是后端没起来前端就白屏。常见的写法是time.sleep(2.5)赌后端两秒内启动赌输了用户看白屏赌赢了用户干等。Kali ToolKit 的流程是先 bind 一个 0 端口拿到系统分配的空闲端口彻底告别用户机器 8000 端口被占导致静默失败后台线程启动 uvicorn每 200ms 轮询一次健康接口拿到 200立刻打开主窗口——后端多快起来窗口就多快出现前端通过?api_port端口号拿到端口。file://页面支持 query string这是个少有人用但完全合法的技巧。前端一个 HTML 文件frontend/index.html不到 900 行CSS 全部手写。暗色主题用 CSS 变量定义亮色模式加一个body.light-mode类覆盖变量就完事:root{--bg-primary:#0a0e17;--accent-cyan:#00f0ff;--border-glow:rgba(0,240,255,0.15);}body.light-mode{--bg-primary:#f1f5f9;--border-glow:rgba(124,58,237,0.2);}细节上有几个我觉得做得还不错的地方搜索结果变化时如果当前选中的工具已经不在列表里会自动选中第一个结果保证右侧详情区永远有内容后端连不上时顶部状态灯显示API 离线每 10 秒自动重连检测搜索框 300ms 防抖不会每敲一个字母就打一次后端。三、数据从哪来爬虫 AI 翻译的流水线这是整个项目最重的部分数据质量直接决定工具的可用性。Kali 官网的工具页面是权威来源但它的结构不太规整——有些工具有独立详情页有些只有列表里的一行简介。爬虫分两步走先抓 sitemap 拿到全部工具列表再逐个抓详情页。中间产物是好几份 JSON命名从raw、cleaned、enriched到final一看就知道是反复清洗过的。原始数据拿到后有两个大问题一是描述全是英文。七百多个工具的简介靠人肉翻译不现实我接了 DeepSeek API 做批量翻译每批 20 条、间隔限速支持断点续传——跑到一半中断也不用从头再来。翻译质量比想象中好术语基本不用人工改秘诀是给了一条约束 prompt“保留 SQL注入、XSS、Payload、C2、ARP 这类专业术语不要过度意译。”二是数据脏。抓下来的 HTML 里混着标签、多余的空白、重复条目还有些工具的详情页根本不存在。清洗脚本前后跑了好多轮中间用抽查脚本核验数据完整性最终写进 SQLite 前还给常见工具补充了命令模板的中文说明全库 2053 条。整套流水线跑下来scripts 目录里堆了二十多个脚本。说实话看着乱但每一步都留有中间产物哪一环出问题都能单独重跑——这种笨办法在数据处理上反而是最稳的。四、自动更新一个安全工具的自我修养自动更新是这个版本的招牌功能之一后台线程每 15 分钟查一次 GitHub Releases发现新版本就在后台静默下载前端弹横幅提示进度用户点立即重启完成升级。核心难点在自替换——Windows 上运行中的 exe 是被锁定的没法直接覆盖自己。解法是一个经典的 bat 脚本跳板:wait ping 127.0.0.1 -n 2 nul copy /y __NEW__ __OLD__ nul 21 if errorlevel 1 goto wait start __OLD__ del %~f0主程序生成这个脚本后先关闭所有窗口、再os._exit(0)立即退出释放文件锁bat 循环尝试复制成功后重启新 exe 再自删除。两个容易忽略的细节bat 要按GBK编码写入否则中文路径乱码复制失败退出前要先销毁 pywebview 窗口否则界面僵死。然后是整个功能里我最看重的安全设计SHA-256 强制校验。很多软件的自动更新是下载完直接装没有任何完整性验证。想清楚这个攻击面后背发凉这是一个安全工具用户全是渗透测试从业者如果发布账号被盗或者下载链路被劫持等于给所有用户推送一个官方认证的木马。所以发布流程里除了 exe还必须上传一份SHA256SUMS.txt就是certutil -hashfile的输出。客户端下载完成后必须比对哈希校验不过直接拒绝安装文件删除、状态置错。成本只是发布时多一行命令安全性天差地别。安全行业有句话trust but verify。自己的更新通道必须 verify。五、踩过的坑1. PyInstaller 打包后路径全崩。开发时一切正常打成 exe 就找不到数据库了。排查半天才发现 frozen 状态下资源解压到了sys._MEIPASS临时目录defget_base_dir():ifgetattr(sys,frozen,False):returnsys._MEIPASSelse:returnos.path.dirname(os.path.abspath(__file__))打包类项目第一次发布前一定要做完整的干净环境测试别在自己开发机上测完就发。2. PyInstaller 的datas逐个文件声明漏一个就白屏。vendor 目录、数据库、schema 都要显式列进build.spec更好的做法是目录整体引入(frontend/vendor, frontend/vendor)。3. 杀软误报。单文件 exe 加 PyInstaller 几乎是杀软误报的标配组合。这个没有技术解只能在 README 里老实写明“如被杀软误杀请添加信任”。4. 隐式全局变量。copyText()里用了隐式全局eventChrome 系内核碰巧能跑但这是标准外行为换个内核就是运行时错误。现在显式传$event参数。这类问题静态看不出来只有规范审查能抓到。六、路线图当前版本基础功能完整781 个工具、8 大分类、中英文搜索、2053 条带中文说明的命令示例、真离线、一键安全更新。接下来计划v0.3.0— 工具收藏 搜索历史LocalStorage 就能做不引后端状态v0.4.0— 标签数据完善用 AI 流水线为全部 781 个工具生成标签和常搭配工具关联数据v1.0.0— 全平台支持Linux/macOS 打包链路 增量更新七、最后的废话做这个项目最初的动机其实很单纯自己查命令的时候嫌麻烦。做完之后发现它对新手的价值可能更大——网络安全这行入门最难的不是技术是知道有什么工具可用。希望 Kali ToolKit 能帮更多人跨过这道坎。照例放免责声明本项目仅供授权的网络安全测试和教育使用使用者需遵守当地法律法规不得用于非法用途作者不对任何滥用行为负责。如果你在找一款离线的 Kali 工具速查手册不妨下载试试。有 bug 或者想加功能GitHub Issues 见。再废话一下我个人觉得我自治的开机动画非常nice欢迎评鉴并给予灵感评论区讨论~相关链接GitHub 仓库https://github.com/sheyunyang/kali-toolkit下载地址https://github.com/sheyunyang/kali-toolkit/releasesKali 官方工具列表https://www.kali.org/tools/项目代码MIT License · 作者Malcode