加密PLC程序与AI解析
先分清缺失还是加密,再谈 AI 能扒出什么
最近手头一个罗克韦尔项目,对方交付的Add-On指令(AOI)全是锁着的——图标带把锁,点进去一片空白,只提示“需要许可证”。
做调试的人最怕这个:设备在车间等着跑,程序里的逻辑却像隔着一层毛玻璃。这篇文章不聊破解,就聊三件事——罗克韦尔过去怎么加密、现在怎么加密,以及 AI 到底能把加密程序里哪些东西解析出来。
📌 本文看点
01
先分清“缺失”还是“真加密”
02
sk.dat文件锁与CmStick硬件狗
03
AI能从加密程序里扒出什么
FIRST THINGS
先分清:你遇到的是“缺失”,还是“加密”
拿到一个打不开的组件,很多人第一反应是找破解。先别急,得先分清楚两种情况,处理方式完全不同。
文件缺失
AOI 或 UDT 是外部链接进来的,本体没在项目里。这种不是加密,补齐对应文件就能加载。
源密钥加密(sk.dat)
逻辑本体在项目里,只是被一把“钥匙”锁了,需要配套的 sk.dat 才能解开看。
!怎么区分 🕳
看能不能打开参数页、看交叉引用能不能列出接线关系。管脚还在、引用还全——那是加密;连定义都没有、一直报“找不到”——那是缺失。方向判断错了,后面全白忙。
SOURCE KEY
罗克韦尔过去怎么加密:sk.dat 这把“文件锁”
早年的 RSLogix5000 / Studio 5000 用源密钥保护(Source Key Protection)。你在Tools → Security → Configure Source Protection里生成一个密码,所有源密钥统一存到一个叫 sk.dat 的文件里。
给某个 routine 或 AOI 套上这把锁,别人打开项目只能看到只读,梯形图和结构化文本全都变成空白。关键点在于:sk.dat 是项目外单独的文件,它不在 ACD 或 L5X 里。
「想从加密的 ACD 里倒推出 sk.dat——做不到。密码只存哈希,是单向的。」
网上流传过所谓“万能钥匙”,只对很老的版本(V20 之前)的弱实现有效,新版全部封堵,GitHub 上也没有稳定可用的提取工具。
HARDWARE DONGLE
更硬的一层:CmStick 硬件加密狗
现在很多设备交付用的是基于许可证的源码保护,载体是 CmStick——德国威步(Wibu)的 CodeMeter 硬件加密狗。它不是锁文件,是锁硬件。
密钥存进内置的智能卡安全芯片,不出现在任何文件里,也复制不出来。老平台(ControlLogix 5570、CompactLogix 5370)连打开项目都要先插上带对应许可证的 CmStick,否则参数页都进不去。
这一层,连罗克韦尔自己都不能帮你恢复密钥。想绕过它去“看逻辑”,基本是死路。
THE KEY INSIGHT
反转来了:加密锁的是“逻辑”,锁不住“接口”
这是整篇文章最值钱的一句。罗克韦尔的源保护(不管 sk.dat 还是 CmStick)锁的都是 routine / AOI 内部的梯形图和结构化文本——也就是“它怎么算”。
但 AOI 的管脚定义、数据类型、输入输出方向、默认值、注释,以及控制器标签、交叉引用、HMI 绑定,全是明文,不在加密范围内。
为什么?因为加密的目的是防止你抄逻辑,不是防你接线。设备要跑起来,调用这个 AOI 时就必须把外部信号接对——接口是你接线的依据,罗克韦尔没理由、也没办法把它锁死。
「所以哪怕逻辑全黑,你照样能拿到完整的输入输出清单,知道这个黑盒接了什么传感器、驱动什么阀、给上位机传什么信号。」
AI ANALYZE
AI 能帮你把这扇门打开多少
这才是 AI 真正能落地的地方。它不是帮你破解加密,而是帮你把那些“没上锁的信息”快速整理成能用的东西。
acd-tools(Python 库)
能直接解析 ACD 二进制(支持固件 15–35),把控制器标签、UDT、AOI、Program 结构扒成 Python 对象,还能导出 L5X。
L5X / MCP 工具
把项目导出成 L5X 后,通过 MCP 服务器让 AI 直接读取 PLC 标签、UDT、routine、AOI 和交叉引用,用自然语言问它“这个 AOI 输入输出是什么”“这段程序调了哪些 tag”。
更进一步:替代开发
AI 可以照着接口清单,帮你重新写一个接口完全一致的 AOI 内部逻辑,替换掉加密块,编译不报参数不匹配。
一句话:AI 解不了锁,但能把锁以外的东西——接口、标签、依赖关系、调用链——成体系地扒出来,甚至照着接口重写内部逻辑。这对调试、逆向、替代开发都是实打实的价值。
FUTURE
未来,电气工程师的活儿会怎么变
别信“AI 要取代工程师”这种话,也别觉得它啥都干不了。现实是,AI 正在把工程师从两件苦差里解放出来:看懂别人的黑盒、补齐缺失的文档。
读程序不再是体力活。以前啃一个陌生 PLC 程序全靠人肉交叉引用,现在 AI 先扫一遍,把接口、依赖、报警逻辑、连锁条件讲给你听。
逆向和替代开发成本骤降。加密块锁了逻辑,接口却是开的,AI 照着接口重构,替代成本从“重写一遍”变成“搭个框架再填逻辑”。
但判断还得靠人。接口清单对不对、重写的逻辑符不符合工艺、现场能不能跑,最终要工程师拍板。硬件约束、安全连锁、工艺细节,AI 看不全。
💡 AI 不是替代工程师的“判断”,它替代的是工程师的“体力”。
THE END
写在最后
真正重要的,不是“AI 能不能破解加密程序”,而是它能不能把工程师从“看不懂就重写”的窘境里捞出来。加密锁住了逻辑,锁不住接口;AI 解不了锁,但能把接口和依赖讲清楚。
这层能力,才是它改变电气工程师工作方式的起点。
END
我是 厂哥,一个常年跟跨国设备调试打交道的电气工程师。
如果你觉得今天这篇有收获,欢迎 点赞、在看、转发 三连,我们下篇见。
这篇也在公众号发过。手机上读长文更舒服,网站里有参数表和可复制代码。
工友留言 0