news 2026/4/23 15:57:32

三菱FX5U的加密方案有点东西!这老哥整的授权系统直接把工业控制玩出了订阅制的感觉。咱们拆开看看这套ST代码的骚操作

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
三菱FX5U的加密方案有点东西!这老哥整的授权系统直接把工业控制玩出了订阅制的感觉。咱们拆开看看这套ST代码的骚操作

三菱FX Q FX5U PLC 程序加密,使用ST结构化文, 主要功能: 1、输入正确授权码(验证码)后可以延长PLC程序使用时间(可自行设置日期),最长分5期,外加一个永久授权!共6个授权码(验证码)。 2、当授权时间接近,到期前三天,触摸屏会每隔1小时弹出窗口,提示客户支付尾款或购买授权码!直至PLC系统锁机,同时触摸屏报警提示输出。 3、触摸屏与PLC通信中断PLC直接锁机!因为触摸屏使用宏指令写的与PLC通信程序只要更换触摸屏或通信中断Plc会停止工作! 4、PLC程序使用程序块软加密! 5、程序全部用ST语言编写,全部使用英文变量名,英文注释,(有中文注释应用中可以删除)。 6、本程序全部使用ST语言编写,可移植到三菱全系列Plc中功能不变!

先看授权验证的核心逻辑:

IF NOT bAuthorizationValid THEN FOR i := 1 TO 6 DO CASE i OF 1: sInputCode := "2025-12-31"; //永久授权 2..6: sInputCode := CONCAT("DLC",INT_TO_STRING(i)); END_CASE; IF sUserInput = sInputCode THEN CASE i OF 1: SetPermanentLicense(); 2..6: ExtendLicense(i-1); END_CASE; bAuthorizationValid := TRUE; EXIT; END_IF; END_FOR; END_IF;

这段验证逻辑藏着几个彩蛋:1号授权码是明牌日期格式的永久密钥,2-6号用DLC前缀+数字序列。有意思的是分期数直接对应case编号减一,这种设计移植到其他PLC时改数字范围就能调整分期数。

时间预警机制整得跟信用卡催款似的:

IF NOT bLicenseExpired AND (ExpireDate - CURRENT_DATE) <= 3 THEN IF TON_1H(IN:=TRUE, PT:=T#1H) THEN HMI_Popup("WARNING: License expires in 3 days!"); ResetTimer_1H(); END_IF; IF (ExpireDate <= CURRENT_DATE) THEN SystemLock(); HMI_Alarm(16#FF); END_IF; END_IF;

这个定时弹窗用了三菱的TON定时器块,每满1小时触发一次弹窗。注意16#FF的报警代码是自定义的紧急状态码,实际操作中可以配合HMI的报警列表做映射。

通信检测部分才是真狠招:

FUNCTION_BLOCK CommunicationWatchdog VAR tHeartbeat : TON := (PT:=T#30S); iMissCount : INT := 0; END_VAR tHeartbeat(IN:=NOT tHeartbeat.Q); IF tHeartbeat.Q THEN iMissCount := iMissCount + 1; IF iMissCount > 3 THEN EmergencyLock(); END_IF; ELSE iMissCount := 0; END_IF;

这个心跳检测FB块用30秒周期检测通讯状态,三次超时直接锁机。注意这里用了TON定时器的取反逻辑来实现类似看门狗的功能,比直接用TOF定时器更稳定。

三菱FX Q FX5U PLC 程序加密,使用ST结构化文, 主要功能: 1、输入正确授权码(验证码)后可以延长PLC程序使用时间(可自行设置日期),最长分5期,外加一个永久授权!共6个授权码(验证码)。 2、当授权时间接近,到期前三天,触摸屏会每隔1小时弹出窗口,提示客户支付尾款或购买授权码!直至PLC系统锁机,同时触摸屏报警提示输出。 3、触摸屏与PLC通信中断PLC直接锁机!因为触摸屏使用宏指令写的与PLC通信程序只要更换触摸屏或通信中断Plc会停止工作! 4、PLC程序使用程序块软加密! 5、程序全部用ST语言编写,全部使用英文变量名,英文注释,(有中文注释应用中可以删除)。 6、本程序全部使用ST语言编写,可移植到三菱全系列Plc中功能不变!

程序块的软加密玩得相当隐蔽:

//Region EncryptedBlock #IFDEF _DEBUG //调试模式逻辑 #ELSE //正式版代码 //这里插入垃圾代码混淆 TempVar := TempVar + 1; IF TempVar > 32767 THEN TempVar := -32768; END_IF; #ENDIF //EndRegion

这种预处理指令配合无效代码的方式,既能防止直接反编译又不会影响运行效率。注意TempVar的溢出处理是典型的迷惑手段,实际工程中可以换成更复杂的算法。

移植性设计体现在硬件抽象层:

FUNCTION SystemLock : BOOL VAR_INPUT ModelCode : STRING; END_VAR CASE ModelCode OF "FX5U": Y8000 := TRUE; "Q系列": Y1FF0 := TRUE; "FX3U": M8129 := TRUE; END_CASE;

通过设备型号参数切换锁机输出点,这个设计让核心逻辑不用改就能适配不同型号PLC。注意不同系列PLC的特殊继电器地址需要查手册确认。

这套方案最妙的是把商业逻辑和控制逻辑深度耦合,ST语言的优势在状态机实现上体现得淋漓尽致。不过要注意心跳检测的周期设置,太短会影响系统性能,太长则降低安全性,建议根据实际通讯质量调整超时参数。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 10:11:06

全栈开发指南:结合RetinaFace+CurricularFace与前端框架的完整项目实战

全栈开发指南&#xff1a;结合RetinaFaceCurricularFace与前端框架的完整项目实战 你是否曾想过&#xff0c;自己动手做一个能识别人脸身份的Web应用&#xff1f;比如上传一张照片&#xff0c;系统就能告诉你这是谁&#xff0c;甚至还能判断情绪、年龄。听起来很复杂&#xff…

作者头像 李华
网站建设 2026/4/23 10:11:15

基于Comsol有限元仿真的流体模块两相流水平集多物理场耦合研究

Comsol有限元仿真&#xff0c;流体模块&#xff0c;两相流—水平集 多物理场耦合仿真水杯里的油滴突然炸开&#xff0c;咖啡液面漂浮的奶泡缓缓旋转——这些生活中常见的流体现象背后&#xff0c;隐藏着让仿真工程师又爱又恨的界面追踪难题。在COMSOL里折腾水平集法仿两相流&am…

作者头像 李华
网站建设 2026/4/23 10:11:14

珲春推荐烤肉排名

珲春推荐烤肉排名&#xff0c;延炭乳酸菌烤肉榜上有名在珲春这座美食之城&#xff0c;烤肉占据着重要的美食地位。各种烤肉店琳琅满目&#xff0c;食客们常常为选择哪家而纠结。而在众多烤肉店中&#xff0c;延炭乳酸菌烤肉凭借其独特的魅力&#xff0c;在珲春推荐烤肉排名中脱…

作者头像 李华
网站建设 2026/4/23 10:12:19

Sonic参数详解:提升数字人视频质量的关键配置技巧

Sonic参数详解&#xff1a;提升数字人视频质量的关键配置技巧 在当前AIGC技术快速发展的背景下&#xff0c;语音与图像融合生成数字人视频的工作流正逐步成为内容创作的核心工具之一。该流程通过将一段语音音频与一张静态人物图像相结合&#xff0c;驱动人物面部实现精准的口型…

作者头像 李华
网站建设 2026/4/23 10:10:17

Qwen3-Embedding-0.6B代码审查:PR描述与变更内容一致性校验

Qwen3-Embedding-0.6B代码审查&#xff1a;PR描述与变更内容一致性校验 1. 背景与问题定义 在大型语言模型的持续迭代过程中&#xff0c;代码提交&#xff08;Pull Request, PR&#xff09;的准确性与完整性至关重要。特别是在涉及模型部署、接口调用和功能验证的关键路径上&…

作者头像 李华
网站建设 2026/4/23 10:13:59

手把手教你用OpenDataLab MinerU增强FastGPT知识库

手把手教你用OpenDataLab MinerU增强FastGPT知识库 1. 引言&#xff1a;为何需要增强FastGPT的知识库解析能力 在构建企业级AI问答系统时&#xff0c;高质量的知识输入是决定输出准确性的关键因素。FastGPT作为一款功能强大的知识库驱动型对话平台&#xff0c;其核心优势在于…

作者头像 李华