PLC程序代碼如何混淆加密
在做項目工作當(dāng)中,出于一定的目的,比如使他人無法查看源碼或者不容易理清楚自己代碼或者保護(hù)知識產(chǎn)權(quán),可能需要對自己編寫的程序進(jìn)行一定加密或者混淆。就PLC程序代碼加密混淆實現(xiàn)方式探討(僅在西門子博途環(huán)境下的探討)
1、博途提供的“專有技術(shù)保護(hù)(Know-how protection)"功能實現(xiàn)。選擇需要加密的塊,右鍵點擊“專有保護(hù)技術(shù)"或者通過屬性->保護(hù)->專有技術(shù)保護(hù),在彈出的對話框里面輸入密碼并確認(rèn)即可。(如果有必要也可額外設(shè)置防拷貝保護(hù))
值得注意的是為了實現(xiàn)加密保護(hù)的作用,請設(shè)置數(shù)字、大小寫字母、特殊符號混用、長度至少8位的強(qiáng)密碼。否則可能會被暴力破解(比如設(shè)置6位純數(shù)字的弱密碼,僅有100萬種可能,利用視頻中的Openness工具可能1小時左右就被窮舉破解掉了)
2、使用STL或者SCL進(jìn)行編程 目前行業(yè)中還是有不少從業(yè)人員僅僅會使用梯形圖進(jìn)行編程,對STL以及SCL存在看不懂、不會寫等情況,對此可以將需要加密的程序用STL以及SCL進(jìn)行編寫,將程序進(jìn)行"淺入深出"化。尤其是STL的可讀性較差,在程序中大量使用指針、地址寄存器、間接尋址、循環(huán)跳轉(zhuǎn)情況下大部分人都會比較懵(以下代碼相較于梯形圖略難理解),使其直接望洋興嘆。
3、代碼混淆法降低可讀性 1)變量均使用地址尋址,而不是使用符號(博途自動生成類似tagXX變量除外)2)刪除必要的注釋、說明等(在對注釋無要求情況下)3)使用SCL編程的時候進(jìn)行格式混淆,將編寫好的程序,將變量名進(jìn)行重命名、并刪除縮進(jìn)換行等格式化的顯示方式(如下圖之前實現(xiàn)的手寫bitsum功能),使代碼的可讀性降低,從而起到對程序有一定的保護(hù)作用(需要開啟博途的寫保護(hù),否則可以直接選中代碼格式化)。4)程序中的變量名使用無實際意義的命名(比如_、__、abc之類)。5)梯形圖程序中多重取反(not),降低可讀性。
針對博途中對程序塊進(jìn)行知識產(chǎn)權(quán)保護(hù)的方法,不同方式有不同的利用場景,可以混合使用。比如法二可針對項目必須開放源代碼,方法一在可不開放源碼情況下使用,方法一還有個進(jìn)階實現(xiàn)方式,就是在低版本的博途中進(jìn)行加密,然后將程序升級到高版本的博途后就無法進(jì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)交換機(jī)
安森美將攜創(chuàng)新的智能圖像感知產(chǎn)品組合亮相Vision China(上海)2024