PLC程序代碼如何混淆加密
在做項目工作當(dāng)中,出于一定的目的,比如使他人無法查看源碼或者不容易理清楚自己代碼或者保護知識產(chǎn)權(quán),可能需要對自己編寫的程序進行一定加密或者混淆。就PLC程序代碼加密混淆實現(xiàn)方式探討(僅在西門子博途環(huán)境下的探討)
1、博途提供的“專有技術(shù)保護(Know-how protection)"功能實現(xiàn)。選擇需要加密的塊,右鍵點擊“專有保護技術(shù)"或者通過屬性->保護->專有技術(shù)保護,在彈出的對話框里面輸入密碼并確認(rèn)即可。(如果有必要也可額外設(shè)置防拷貝保護)
值得注意的是為了實現(xiàn)加密保護的作用,請設(shè)置數(shù)字、大小寫字母、特殊符號混用、長度至少8位的強密碼。否則可能會被暴力破解(比如設(shè)置6位純數(shù)字的弱密碼,僅有100萬種可能,利用視頻中的Openness工具可能1小時左右就被窮舉破解掉了)
2、使用STL或者SCL進行編程 目前行業(yè)中還是有不少從業(yè)人員僅僅會使用梯形圖進行編程,對STL以及SCL存在看不懂、不會寫等情況,對此可以將需要加密的程序用STL以及SCL進行編寫,將程序進行"淺入深出"化。尤其是STL的可讀性較差,在程序中大量使用指針、地址寄存器、間接尋址、循環(huán)跳轉(zhuǎn)情況下大部分人都會比較懵(以下代碼相較于梯形圖略難理解),使其直接望洋興嘆。
3、代碼混淆法降低可讀性 1)變量均使用地址尋址,而不是使用符號(博途自動生成類似tagXX變量除外)2)刪除必要的注釋、說明等(在對注釋無要求情況下)3)使用SCL編程的時候進行格式混淆,將編寫好的程序,將變量名進行重命名、并刪除縮進換行等格式化的顯示方式(如下圖之前實現(xiàn)的手寫bitsum功能),使代碼的可讀性降低,從而起到對程序有一定的保護作用(需要開啟博途的寫保護,否則可以直接選中代碼格式化)。4)程序中的變量名使用無實際意義的命名(比如_、__、abc之類)。5)梯形圖程序中多重取反(not),降低可讀性。
針對博途中對程序塊進行知識產(chǎn)權(quán)保護的方法,不同方式有不同的利用場景,可以混合使用。比如法二可針對項目必須開放源代碼,方法一在可不開放源碼情況下使用,方法一還有個進階實現(xiàn)方式,就是在低版本的博途中進行加密,然后將程序升級到高版本的博途后就無法進行解密了(需要在原版本中解密,需要注意刪除升級記錄);方法三建議盡量不要使用,閱讀性實在太差,可能會挨打。
(請勿商用、非法使用,僅作為研究學(xué)習(xí)之用)。
提交
從農(nóng)場到餐桌,ABB解決方案助力全面推動啤酒生產(chǎn)行業(yè)發(fā)展
ABB推出全新在線節(jié)能計算器,幫助企業(yè)規(guī)劃節(jié)能增效路線
到2030年,我們能否將能源效率的年增長率提高兩倍?
Red Lion® 推出新款 N-Tron® NT116 非管理型 16 端口工業(yè)以太網(wǎng)交換機
安森美將攜創(chuàng)新的智能圖像感知產(chǎn)品組合亮相Vision China(上海)2024