五种西门子PLC程序加密方法,最后一种很难破
大家都知道,很多品牌PLC的程序都可以通过软件解密,那么一旦解密后程序就非常透明的显示在了别人的眼中,而将设备卖给别人又将PLC程序整个锁死的话又不切实际,甲方会无法维护;而保密和维权更是中国市场经久不衰的话题,其实德国的工程师从来不会给自己的程序整体加密,而是使用其他方式,既不影响发生故障时的诊断,又可以保护自己的核心机密。今天给大家介绍一下这些方式,供大家参考。
一、使用西门子安全PLC或者博途的KNOWHOW功能西门子安全PLC作为西门子主打安全功能的一款产品,它的性能毋庸置疑,而且安全PLC的程序块加密后无法破解;可以很好的保护核心。而博途PLC作为西门子的最新产品,其版权保护也是它的主要功能之一,KNOWHOW功能是软硬件双重加密,不加密的块可以正常监控,没有密码的话甚至无法下载到其他PLC;因此使用博途的KNOWHOW功能既可以将程序交给甲方方便维护,又可以保护自己的核心程序不被窃取。
二、采用高级语言编写部分重要的工艺程序西门子除了最基础的LAD梯形图编程,FBD功能块编程和STL语句表编程还有很多其他的方式,比如说PCS7的CFC,SFC; 除此之外还有SCL,S7-GRAPH等等。对于这些语言,一般的工控人员很难全部精通,因此仿制难度大大提升,因此非常关键的工艺程序可以由这些语言编写,也可以很好的保护自己的核心。
1.编程方式的采用
a)采用模块化的程序结构,采用符号名,参数化来编写子程序块
b)尽量采用背景数据块和多重背景的数据传递方式
c)多采用间接寻址的编程方式
d)复杂系统的控制程序尤其是一些带有顺序控制或配方控制的程序,可以考虑采用数据编程的方式,即通过数据的变化来改变系统的控制逻辑或控制顺序。
用户应该尽量采用以上几种高级层次的编程方式,这样编出来的程序中嵌入系统的保护加密程序,才不容易被发现而仿制。
2.主动保护方法
a)利用系统的时钟
b)利用程序卡或者CPU的ID号和序列号
c)利用EEPROM的反写入功能,及一些需要设置的内存保持功能 d)利用系统提供的累时器功能
e)在用户程序的数据块中设置密码
f)软件上设置逻辑陷阱
g)可以反向利用自己在编程时犯的错误
3.被动保护方法
a)在内存容量利用许可的条件下,不要删除被认为是无用的程序
b)在数据块里留下开发者的标识,以便于将来遭到侵权时可以取证
4.应用反窃取技术的注意事项
a)在用户程序中嵌入保护程序要显得自然一些,不能很突兀的加出一段程序来,代码要尽量精简,变量符号名应与被嵌入程序段的变量保持一致
b)往往一种保护加密手段是不够的,应该多种方法并用,并且这些保护程序一旦激活后对系统造成的后果也应该尽量不同,造成所谓的“地雷效应”,从而增加程序被窃取的难度,时间与成本,短时间内让抄袭者束手无策,
c)保护好程序的原代码,如果需要交付程序的,在不影响用户对设备维护的前提下,应对交付的程序做适当的技术处理,如删除部分符号名,采用上载的程序或数据块
d)做好严格的测试,以避免保护程序的不完善引起的误动作而带来的不必要的麻烦,同时也能降低售后服务的的费用。
三、使用通讯功能
在实际应用中,往往会遇到一些系统间需要数据交换的问题(多个PLC之间,PLC与第三方仪表之间),无论是西门子产品之间还是西门子产品与第三方产品之间,建议使用通讯的方案来代替模拟量或开关量之间的信号互连的方案。对于前者,仿制者只能看见一条硬件的通讯线,至于有多少数据是如何通过通讯交换的,仿制者必须要花精力研究具体的用户程序才能搞清楚;而对于后者,开发者是省心省力了,仿制者也是一目了然,尽收眼底。
对于一些变频器或者伺服电机等的程序设计,一般有多种方式,可以线路直接控制还可以通讯控制,那么使用通讯的方式的话会使得程序增加了仿制的难度,比如说PLC对于伺服驱动器的控制有多种,简单一些的可以是脉冲直接控制或者模拟量控制,这种方式就容易仿制,如果换成通讯控制,则会使得程序复杂很多,加上仿制者如果对报文不熟悉,很难去仿制。
有时候控制系统会由多个子控制系统构成,由此形成多CPU加人机界面的网络,西门子S7-200产品常见的是PPI网络,S7-300400产品常见的是MPI网络,通常是人机界面与CPU之间的数据交换,而我们也可在CPU的用户程序中添加一些无须组态的S7基本通讯功能(S7-200可用NETRNETW指令,S7-300400可以用X_PUTX_GET指令),定时或不定时地在CPU之间进行少量数据交换,通过这些数据实现子系统控制逻辑的互锁。对于这样的系统,仿制者要分析某一子系统的程序也不是件十分容易事情。
四、采用面板类型的人机界面
尽量在自动化系统中使用面板类型的人机界面来代替单一的按钮指示灯,很多人机界面没有源程序的话只有备份和恢复功能,完全可以实现维护功能还保密了HMI这一层的程序,而对于一个PLC系统而言,即使拥有了源程序但是缺失了HMI部分的标记也是很难仿制的。
而且开发者可以在面板的画面上加上明显的厂家标识和联系方式等信息,仿制者就不能原样照抄。
如果就使得如果仿制者想要复制程序的话,就必须重新编写操作面板的程序甚至于PLC的程序,而开发者则可利用面板和PLC数据接口的一些特殊功能区(如西门子面板的区域指针,或VB脚本)来控制PLC的程序执行。这样的PLC程序在没有HMI源程序的情况下只能靠猜测和在线监视来获取PLC内部变量的变化逻辑,费时费力,极大的增加了仿制抄袭的难度。
五、采用非标准的人机界面
德国工程师都愿意使用这种方式。在中国,大多数工程师都愿意使用WINCC,INTOUCH或者组态王等等,但其实除了这些软件,还有一种更加高大上的编写方式,那就是利用VB自己写程序,而对于软件与PLC的接口,大家可以选择LIBNODAVE或者其他库等,这种方式写出来的人机界面有着很多好处,首先没有版权问题,因为VB软件是免费的,而且对于WINDOW系统的升级来说只需要简单的添加几个文件即可实现,不像WINCC那样,如果window升级了,需要大量修改文件。
一般人都无法修改,更别提仿制了;没有很好的计算机编程功底的话就不敢轻易修改,而仅仅有计算机功底又没有PLC或者工艺基础的话也是无法更改的。
↓↓↓下载进入西门子、三菱PLC学习平台
给PLC程序加密,操作步骤分为这四个
很多工程师在写完PLC程序的时候,习惯性的添加密码,因为这样可以防止不懂程序的人进入PLC,破坏程序,还可以防止别有用心的人盗窃自己的劳动成果,下面我就三菱PLC举例,设置密码,和解除密码操作!
下面介绍如何添加密码:
第一步:打开WORKS 2软件,
第二步,单击 新建 ,新建一个项目
第三步,单击在线工具,口令和关键字 设置,
第四步 打开对话框以后:
1.,密码类型有两种,一个是16位,字母加数字,输入16位就行,2.个是8位,字母加数字,够8位就行,纯字母,纯数字,都行
3.,密码要连续输入两边才行,两次都要一样
4.,单击执行 下一步,如果出现以下提示,有两种方法解决
(1)种方案
(2)种方案
最后一步:显示 完成
下面介绍 如何取消密码:
此时密码 就已经解除了
在这里,要注意一点 就是,PLC在stop以后,要及时的run,否则PLC不会工作!当然这里介绍的只是单纯的硬件加密,还有软件加密。后续我会陆续推出相应的技术文章!
喜欢工控的朋友可以关注我,每日更新技术文章,一起学习,一起讨论!
相关问答
发那科plc加密方法?
发那科PLC加密方法是通过在PLC芯片内部嵌入加密算法,对PLC程序进行加密保护。该加密方法采用各种加密技术,如对称加密、非对称加密和哈希加密等,同时结合硬件...
三菱PLC程序怎么加密?
三菱PLC程序的密码设置:在编程软件GX-DEVELOPER中,在“在线”菜单下有一个关键字登录,输入的关键字就是密码。要求设置的密码为8位,可以为0~9的数字或是A~F...
三菱plc不能达到stop状态怎么给程序加密?
要给三菱PLC程序加密,可以采用密码保护功能或者加密技术来限制访问和修改程序。通过设置读写权限密码,只有经过授权的人员才能对程序进行操作或修改。同时,可...
基恩士plc怎么加密?
要对基恩士PLC进行加密,可以采取以下步骤:首先,确保PLC的固件和软件是最新版本,以弥补任何已知的安全漏洞。其次,使用强密码保护PLC的访问权限,包括管理...
西门子1200PLC如何加密?
西门子1200PLC的加密可以通过几种方法实现。首先,您可以使用安全向导进行PLC安全设置。自TIAPortalV17起,新增了安全向导用于帮助客户快速进行安全相关的设...
请问用欧姆龙编程器怎么给plc加密-ZOL问答
主要看你的组态软件是否有相应PLC的驱动程序,如果有的话可以直接用232转485卡然后通过线连接相应的PLC即可~~有用(0)回复我没用过欧姆龙的PLC,但是有些PLC的...
西门子PLC怎么加密码程序加密就是不让别人读?
S7-200的在程序里面有保护选项,设置密码就可以了,S7-300/400的需要在硬件的属性里面加密的。S7-200的在程序里面有保护选项,设置密码就可以了,S7-300/400的需...
plc加密原理?
加密是出于对数据和程序的保护,在数据和信息的传输中采用加密技术对所需要保护的数据或者信息进行适当的处理,包括一定的规律进行计算。目的是使数据和信息不...
西门子PLC程序密码可以解除吗?
西门子PLC程序密码可以解除,但需要具备一定的专业知识和技术。需要使用特定的解密软件或者破解工具,通过逆向工程等方法来解除密码保护。然而,需要注意的是,...
plc加密了会怎样啊?
plc加密了以后如果不能正确解密,那么很有可能不能使用plc系统,或者造成plc损坏。这是一种保护自己利益的做法。另外,设备完成后一般不需要进行程序的修改,但...