現(xiàn)在市場上主流的PLC,都帶有加密功能,作用就是給你的PLC加上密碼,沒有密碼就不能上載程序,以此來保護(hù)你的知識產(chǎn)權(quán),防止別人盜用、篡改你的程序。
另外,還有的PLC編程軟件可以對子程序、程序庫等進(jìn)行加密(例如西門子的S7-200系列),這樣別人可以使用你編寫好的庫或子程序而無法看到內(nèi)容。這樣可以保護(hù)你的關(guān)鍵算法或流程。
有矛就有盾??催^電視劇《暗算》嗎?有加密就有解密。
因此,PLC破解,一種就是指對PLC進(jìn)行解密,讀出里面的程序;一種是指對電腦里面的工程文件、子程序庫等進(jìn)行破解,使其可以顯示,可以修改等。
為啥要破解呢?歸納下來,下面幾種情況比較多:
1、自己的密碼忘了
2、學(xué)習(xí)別人的程序,增加自己的編程水平
3、設(shè)備需要維護(hù),原來的工程師走了
4、因為種種原因,PLC里面有軟件陷阱
5、設(shè)備廠家的PLC加了密,過了保修期廠家又不負(fù)責(zé)
6、了解設(shè)備的工作原理,了解工藝,仿造設(shè)備
7、“拿來主義”,直接復(fù)制別人的產(chǎn)品
……
對于第1種情況,沒啥說的。
對于第2種情況,是討論比較多的。
對于第7種情況,肯定是在道德上要進(jìn)行譴責(zé)的。
對于其他情況,可能需要具體問題具體分析。
一些從事自動化方面工作的技術(shù)人員想進(jìn)行PLC破解,通過學(xué)習(xí)別人程序的編程方法。這種做法的意義有多大呢?看懂別人的程序,可能比自己編制一個新的程序更累,尤其是程序比較大,而且沒什么注釋的時候(通過破解PLC讀出得來的程序,多半沒有注釋,沒有變量名稱)。
下面是一個網(wǎng)友寫的關(guān)于PLC破解的文章,挺有道理的,引用如下:
“我曾經(jīng)設(shè)計一個龍門刨床的項目,采用三菱F140MRPLC,編寫了一個程序,一名維護(hù)的技術(shù)人員不是很好的了解龍門刨床的設(shè)備工藝,而是癡迷于了解我的程序,我告訴他,你應(yīng)該好好的了解設(shè)備的狀況和工藝,熟悉電氣圖紙,發(fā)現(xiàn)設(shè)備的運(yùn)行狀況中哪些方面還沒有滿足工藝的要求(也就是程序的不足),自己編寫一個,無從下手時看看資料或者問問我,我保證他三、四個月徹底了解PLC,貴在實踐。到那時,廢掉我的程序。
而他卻熱衷于了解我的程序的每一步,問來問去已達(dá)四年多,至今未能掌握,面對設(shè)備、面對PLC仍然茫然無從下手,四年意味著一個大學(xué)畢業(yè),意味著一個研究生,甚至一個博士。而他連一個小小的PLC都沒畢業(yè)。而F系列PLC早已淘汰的快無影無蹤了。如果僅從了解別人的程序而熱衷于PLC破解,這個實例,已經(jīng)告訴你,你已走進(jìn)誤區(qū),成為一些商家和一些網(wǎng)站的靶子。
何謂PLC程序,不過是你設(shè)計工程項目的工藝而已,有工藝要求才可能有程序,程序只是設(shè)備工藝的具體反應(yīng),了解了工藝要求也就等于了解了程序。編程不過是個規(guī)則,要你用這個規(guī)則把設(shè)備工藝寫出來,因此你重要是了解設(shè)備的工藝和具體使用PLC品牌的功能。當(dāng)你充分了解了設(shè)備工藝,設(shè)計完電氣圖紙,你的設(shè)計任務(wù)可以說基本完成了,剩下的就是看看PLC編程規(guī)則,把程序?qū)懗鰜?,把工藝寫出來?/p>
記?。≠F在實踐!我在上學(xué)時,PLC功課是滿分,對梯形圖、語句非常了解,也在課本上看過很多程序,可我當(dāng)?shù)谝淮蚊鎸υO(shè)計時,卻不知道如何下手,當(dāng)把我的程序(問題很多)輸進(jìn)去并執(zhí)行時,也就短短的一兩天,我的感覺是PLC不過如此,海闊天空的感覺,沒有不會的,只有不做的。
我的一個朋友告訴我,他在工廠里,一些設(shè)備被一些早進(jìn)廠的人把持著,PLC加了密,也不讓看程序(程序也不是他們編的),以此壓著他們,想讓他們水平超不過他們,我告訴他,他們不過是個永遠(yuǎn)長不大的丑陋小人(現(xiàn)在國有企業(yè)比比皆是),莫做他們的繼承者,也不要學(xué)他們的德性,這種人是最脆弱、是最沒水平的,好好了解一下工藝,了解一下設(shè)備的運(yùn)行狀況。自己編一編,不懂問問學(xué)學(xué),這才是他們最怕的?!?/p>
說那么多,只是想告訴大家,破解有其存在的合理性,但不要癡迷于此,更不要用這個來做違法、違背道德的事。
我所知道和掌握的S7-200系列PLC的破解方法主要有“軟的”和“硬的”兩種方法。
先說說“來軟的”:西門子的S7-200系列PLC留有“后門”,可以直接通過串口電纜(PC/PPI)來讀出其中的PLC密碼和POU密碼(子程序和庫密碼),方法和讀取PLC的內(nèi)部寄存器基本類似。讀出來的密碼是經(jīng)過位邏輯處理的,經(jīng)過運(yùn)算可以得到密碼。
再說說“來硬的”:S7-200系列PLC的內(nèi)部電路板上有一個EEPROM芯片,里面保存有PLC的密碼。可以通過I2C接口(一種電路接口)讀出EEPROM內(nèi)容,分析得出密碼。
據(jù)說最新版本的S7-200系列PLC硬件電路有些不同,軟件也有改動,破解可能困難一些。
另外,國內(nèi)有幾家“山寨版”的S7-200系列PLC,據(jù)廠家宣傳說和西門子的是完全兼容的。但大部分廠家只有擴(kuò)展模塊,沒有CPU單元。有CPU單元的目前據(jù)我所知有兩家。一家在上海,叫正航,一家在深圳,叫合信。兩種產(chǎn)品我都用過,也都嘗試過破解。
合信的“來軟的”、“來硬的”都“招了”。正航的“來軟的”算出來是亂碼,剛開始以為是計算方法不同,后來折騰了很久,最終我發(fā)現(xiàn)不管什么密碼和PLC給出的亂碼是沒有任何關(guān)聯(lián)的。軟的不行就來硬的。拆機(jī)后找到EEPROM芯片,讀出BIN文件分析,和“來軟的”一樣,算出來仍然是亂碼。看來正航的加密和西門子還是不同。