故事的起因是这样的。班里总有那么几个“闲不住”的同学,最喜欢趁课间休息或者自习没人管的时候,偷偷把讲台上的教学一体机打开,公放一些奇奇怪怪、甚至是相当猎奇的视频和照片。
身为班里的“首席网管”(虽然是自封的),我深感自己有责任维护一下班级的“网络风气”。一开始,我写了个非常简陋的本地脚本 Boom V2.5,趁他们不注意塞进一体机里,然后通过同一网段下的局域网去触发恶搞弹窗,算是给他们一点小小的震撼。
但局域网的限制太大了,稍微换个网络环境直接抓瞎。如果说以前写的 Boom V2.5 充其量是个“自娱自乐”的局域网小玩具,那前几天闲着没事把它彻底重构出来的 Boom V3.0,可以说已经进化成了一套具备完整云端架构、军工级通讯安全,且极具压迫感的远程整蛊操控平台。
今天就来盘一盘,我是怎么把这个针对班级一体机的小脚本,一路“魔改”上云,以及这中间踩过的那些能让人当场砸键盘的“史诗级”天坑。
🎯 啥是 Boom V3.0?
简单来说,这是一个基于 Python 开发的分布式整蛊工具,现在它的结构分成了两截:
- 云端主控中心:部署在 Railway 云服务器上的高并发 WebSocket 服务端,自带一个极具黑客风的 Web 控制台。只要有个浏览器,我现在随时随地都能对线上的客户端发号施令,再也不用受限于校园局域网了。
- 受害者执行端:用 PyInstaller 强行压成的一个完全单文件的
.exe。纯净、无依赖。把它丢进一体机(或者同学的电脑)双击运行,就会像幽灵一样无痕潜伏。一连上服务器,就能对当前机器执行毁灭性的打击。
核心武器库大概有这些:
- 物理干扰:翻转屏幕、疯狂瞬移活动窗口、幽灵打字机。非常适合打断那些正在专心摸鱼看猎奇视频的人。
- 系统伪装:极其逼真的 Windows 假更新、蓝屏死机 (BSOD)、全屏勒索锁屏。直接让他们以为一体机被自己搞坏了,瞬间慌神。
- 精神打击:
- 终极 Rickroll:强开浏览器播放《Never Gonna Give You Up》,同时瞬间调用底层 API 连按 50 次“音量加”键,物理拉满音量,直接当场社死。
- 假系统通知轰炸:在右下角伪造极其逼真的 Windows 通知(比如“您的屏幕正在被共享”、“教导处监控已接入”),疯狂施加心理压迫。
🚀 一些技术上的“升维”
为了让这个平台配得上“大杀器”的名号,在技术底层也是下了一番狠功夫的。
1. 架构升维:抛弃局域网,拥抱 WebSocket C2 V2 时代最大的痛点就是只能在同一个局域网底下自嗨,只要他们把一体机断网或者连了热点,我就抓瞎了。V3 直接上了 WebSockets 全双工通信。受害者端加了指数退避重连算法(从 2 秒递增到 120 秒),就算网断了,只要一恢复,被控端就会像幽灵一样自动重新上线并连上我的云端服务器。
2. 安全加固:绝不让整蛊工具变成肉鸡 把这玩意儿丢到公网上,极其容易被各种扫描器嗅探。要是被别人拿去干坏事就麻烦了。为了防身,我给它套了几层装甲:
- HMAC-SHA256 动态签名:不光连上去要 Token,下发的每一条指令都必须带基于预共享密钥(PSK)的签名,别人想抓包伪造指令?门都没有。
- 防爆破机制:单 IP 连错 5 次 Token,直接拉黑 10 分钟。
- IP 白名单:只有在白名单里的 IP,才有资格登录控制台。其他人就算瞎猫碰上死耗子拿到了 Token,连进去也只能当“受害者”。
3. 打包工程化:告别玄学 以前往一体机里塞脚本,还要配环境,太容易穿帮。现在写了个 build_private.bat,把复杂的打包过程彻底傻瓜化。配置和密钥不再硬编码,而是编译前动态生成 temp_config.json 打进 EXE。外加 --noconsole 参数,双击后连个黑框都不会闪,完美潜伏。
💣 踩坑血泪史
牛皮吹完了,接下来就是在这期间踩过的几个能把人逼疯的坑。如果大家也折腾网络开发,一定对这些玄学 bug 感同身受。
坑 1:反向代理迷阵与真实 IP 幽灵
在搞 IP 防爆破的时候,发现不管谁连进来,服务端识别到的全都是 10.x.x.x 或者 172.x.x.x 这种内网 IP。结果就是防爆破一触发,把所有人全给封了。 原因:Railway 的底层是 Envoy 反向代理。Python 默认拿到的永远是代理服务器的 IP。 解法:去读 HTTP 头里的 X-Forwarded-For。但 Python websockets 库要拦握手请求很麻烦,如果直接覆盖旧的 header 字典,还会抛 MultipleValuesError。最后只能用精确捕获异常,del headers[...] 删干净再赋值,才把真实 IP 扒出来。
坑 2:消失的 0KB 脚本与双重回车符
Linux 和 Windows 混着开发时,我的 build_private.bat 到了 Windows 11 里突然报错“本电脑不支持”,文件大小还变成了 0KB。 原因:我在 Linux 下图省事用 sed 改 DOS 格式的代码,结果行尾被搞成了畸形的 \r\r\n。这玩意在 Linux 的文本编辑器里完全隐形,但 Windows 的 CMD 一读就当场脑溢血。 解法:老老实实用 sed -i 's/\r//g' 先把回车符全洗掉,再重新加规范的 \r\n。跨平台开发,换行符(CRLF vs LF)永远是万恶之源。
坑 3:NTFS 锁死玄学
在 Linux 下想改挂载的 Windows 盘里的代码,一直报“权限不够”或“只读文件系统”。 原因:Windows 11 的“快速启动”本质上是休眠,关机时会锁死 NTFS 分区的日志。Linux 为了怕把数据搞坏,直接拒绝提供写权限。 解法:Linux 终端执行 sudo ntfsfix /dev/sdX 强行把脏标记洗掉,重新挂载,世界终于清静了。
最后
从为了制裁班里放猎奇视频的同学而随手写下的几十行本地脚本,折腾成现在这个麻雀虽小五脏俱全的云端平台。整蛊其实只剩下一个外壳,真正爽的是背后架构设计和解决这些玄学 Bug 的过程。
如果大家也对开发类似的网络工具感兴趣,上面这些坑希望能帮你们少掉几根头发。不说了,我去班里盯着那一帮刺头,抓两个当小白鼠试试水了。

评论