news 2026/6/24 3:40:52

三菱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/6/19 9:34:21

FSMN VAD输出JSON时间戳,方便对接后续处理流程

FSMN VAD输出JSON时间戳&#xff0c;方便对接后续处理流程 1. 引言&#xff1a;语音活动检测在实际工程中的核心价值 在语音识别、会议记录、电话质检等智能音频处理系统中&#xff0c;语音活动检测&#xff08;Voice Activity Detection, VAD&#xff09; 是不可或缺的前置环…

作者头像 李华
网站建设 2026/6/15 6:04:58

珲春本地人去的烤肉

珲春本地人青睐的延炭乳酸菌烤肉在珲春&#xff0c;烤肉是当地美食文化的重要组成部分。珲春本地人对于烤肉有着独特的品味和偏好&#xff0c;而延炭乳酸菌烤肉则是深受他们喜爱的一家店。健康理念独具魅力延炭乳酸菌烤肉主打健康概念&#xff0c;采用乳酸菌腌制肉类&#xff0…

作者头像 李华
网站建设 2026/6/18 1:55:15

NewBie-image-Exp0.1艺术创作案例:赛博朋克风格图像生成教程

NewBie-image-Exp0.1艺术创作案例&#xff1a;赛博朋克风格图像生成教程 1. 引言 随着生成式AI技术的快速发展&#xff0c;高质量动漫图像生成已成为内容创作者和研究者关注的核心方向之一。NewBie-image-Exp0.1作为基于Next-DiT架构的3.5B参数大模型&#xff0c;在画质表现、…

作者头像 李华
网站建设 2026/6/10 0:34:36

基于MATLAB的雷达与AIS航迹融合处理实现

一、系统架构设计 #mermaid-svg-ImWyxvVwjIwy8MbW{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-ImWyxvVw…

作者头像 李华
网站建设 2026/6/17 7:15:23

USB3.0传输延迟匹配设计:从零实现等长布线

USB3.0等长布线实战&#xff1a;如何让高速信号“步调一致”你有没有遇到过这样的情况&#xff1f;硬件做出来了&#xff0c;上电也正常&#xff0c;但USB3.0就是连不上——设备时而识别、时而不识别&#xff0c;抓包一看满屏重传&#xff0c;眼图闭合得像一条缝。别急着换芯片…

作者头像 李华