从零到一:我写了一个网络安全嗅探器

一个在校生的三周实战复盘——Python + Scapy + 机器学习 + 无人机协议。


为什么要写这个工具

我是信息安全技术应用专业的学生,方向是低空经济安全。学校里理论课很多,但真正"动手造东西"的机会很少。三周前我决定用 Python 从零写一个网络安全嗅探分析工具,逼自己把网络协议、安全检测、工程化能力全部打通。

结果:10 个模块、1200+ 行代码、1 个可执行文件。


这个工具能做什么

一条命令,三件事并行:
  netsniff.exe -c 200

  ├── 抓包分析    → 识别 TCP/UDP/IPv4/IPv6,统计 Top IP 和端口
  ├── 安全检测    → DNS 隧道 / ARP 欺骗 / 明文密码泄露
  └── HTML 报告   → 暗色仪表盘,浏览器直接打开

技术架构

unified_scanner.py          ← 主入口
  ├── 抓包层   [Scapy + BPF 内核过滤]
  ├── 检测层
  │     ├── 规则引擎    → DNS隧道 / ARP欺骗 / 明文密码
  │     ├── ML 引擎     → 孤立森林异常检测
  │     └── MAVLink引擎 → 无人机协议解析
  └── 输出层
        ├── HTML 报告   → 可视化仪表盘
        └── JSON 导出   → 离线分析

每个引擎独立运行、互不阻塞,检测结果汇总到一份报告里。


三周学习路径

第一周:从零到可用的嗅探器

Day 1:装 Python、装 Npcap、跑通第一个 sniff()。抓到 10 个包,看着终端里 Ether / IP / TCP / HTTPS 的输出,第一次感受到"我能看见网络了"。

Day 2-3:加端口识别、协议识别、Counter 统计。开始理解 pkt[IP].srcpkt[TCP].sport 的区别——一个是找人,一个是找门。

Day 4-5:引入 argparse 命令行参数,支持 BPF 过滤。然后加了 JSON 导出——抓包保存下来,离线也能分析。

Day 6-7:写了三个检测规则。DNS 隧道检测是最先触发的——用 EDNS 扩展的正常 DNS 包超过了 512 字节,模型标记为可疑。理解了检测不等于攻击——误报是安全工具的第一课。

第二周:从工具到平台

Day 8:引入机器学习。IsolationForest 不需要标注数据,靠统计分布判断异常。从规则到 ML,思维方式的转变——不再是"我知道这个坏",而是"这个跟大多数不一样"。

Day 9:用 Python 字符串拼接动态生成 HTML 报告。CSS 写了一个暗色仪表盘,浏览器打开很像个正规产品。

Day 10:性能测试。四种模式(回调/批量/BPF/异步)对比,发现瓶颈不是代码而是网络本身——33 包/秒,家里路由器的上限。

Day 11-12:MAVLink 协议。这是跟专业方向直接挂钩的部分。解析了 15 种消息类型——HEARTBEAT 心跳、GPS 坐标、飞行指令——并标注了每种消息的安全攻击面。

第三周:工程化和收尾

Day 14:YAML 配置文件系统。命令行参数现在可以覆盖 config.yaml 默认值——正经项目该有的样子。

Day 15:写英文 README。逼自己用技术英语描述自己的项目。122 个技术英语词汇积累。

Day 16:PyInstaller 打包。一个 14MB 的 .exe,发给没装 Python 的同学双击就能跑。

Day 17:安全审计。发现了自己代码里的 XSS 漏洞——包数据直接拼进 HTML 没转义。学安全的写安全工具,自己的代码先被审了一遍。


踩过的坑

  1. Npcap 缺失:Scapy 抓包一直警告 No libpcap provider。装 Npcap 时勾了 WinPcap 兼容模式才解决。

  2. DNS 误报:512 字节阈值在 EDNS 时代已经偏保守。真实环境中需要结合查询频率、域名熵值做二次判断。


学到了什么

技术层面

  • TCP/IP 协议栈从纸上到了手上——每个包的 Ether→IP→TCP→Raw 结构亲自拆过
  • Python 从"会写循环"到"能拆分模块、用类、调 sklearn"
  • 安全检测的两种范式:规则驱动 vs 数据驱动

思维层面

  • 做比想重要。第一天只抓了 10 个包,但跑起来的那一刻比看一周教程都管用
  • 误报不是 bug,是检测的常态。安全工具的挑战不在于发现异常,而在于区分真异常和噪声
  • 写完代码只是第一步。文档、打包、安全审计——这些才是工程

英语层面

三周积累了 151 个技术英语词汇,从 sniffIsolation ForestMAVLink heartbeat


代码开源

Gitee: https://gitee.com/OX—jie/netsniff

netsniff/
  unified_scanner.py    # 主程序
  detector.py           # 规则检测引擎
  ml_detector.py        # ML 检测引擎
  mavlink_tool.py       # MAVLink 协议解析
  reporter.py           # HTML 报告生成
  exporter.py           # JSON 导出
  config.yaml           # 配置文件
  README.md             # 英文文档

下一步

  • 接入真实无人机 SITL 仿真,实测 MAVLink 通信
  • 学习 C 语言,为 scapy 底层理解打基础
  • 把这个工具用到毕业设计中

写于 2026 年 6 月,信息安全技术应用专业在校生

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐