我前幾年做設(shè)備用的plc是三菱fx2n,對fx2n的研究已經(jīng)很長時間了,已經(jīng)非常熟悉。雖然用了很多方法來做程序保護(hù),包括:
設(shè)置密碼;
設(shè)定通訊格式;
設(shè)置記憶性的繼電器作為密碼;
程序分二部分,先運(yùn)行一次預(yù)先程序,再輸入真正的軟件運(yùn)行;
讀取的plc程序(程序+內(nèi)存數(shù)據(jù))寫入新的plc,但一運(yùn)行就報(bào)告出錯;
程序大到6000-7000步,程序里面大部分是數(shù)字處理,使破解者難以讀懂程序等等。
因?yàn)橐姷骄W(wǎng)上有人(福建的)寫出幫人破解plc的過程里面提到的保護(hù)措施幾乎跟我所采用的一致,最后也不得不硬著頭皮分析了6000多步的程序,最終也破解了。所以我相信我做的設(shè)備可能已經(jīng)被人破解了。
三菱fx3u標(biāo)榜安全的加密方法,可以設(shè)置2級密碼及防止上傳等,所以本人比較感興趣。去年從國內(nèi)回來前,向好朋友阿干要了一個fx3u 16m
帶過來研究,因?yàn)?。我想試試究竟會不會被破解?
花了一個月左右的時間研究,當(dāng)然每個星期最多只有2天的休息時間來玩,已經(jīng)對fx3u的物理影像地址、監(jiān)控x,y,m,t,c,s位狀態(tài)地址、fx3u強(qiáng)制位地址、c0-c255當(dāng)前值、特殊數(shù)據(jù)d8000-d8511的地址、密碼處理過程、通訊口波特率設(shè)置,gppw軟件的通訊命令比較清楚,并用vb編寫了“fx3u系列plc專用測試程序2.1.0”方便進(jìn)行設(shè)備接線是否正確調(diào)試,也包含了保護(hù)狀態(tài)讀取和一級密碼處理,如圖2。
對于密碼的研究結(jié)果:三菱的編程軟件gppw對輸入的2級密碼進(jìn)行了加密運(yùn)算后再傳送到plc,所以就算用串口監(jiān)控軟件讀取的是加密后的數(shù)據(jù),加密算法不得而知。
對于通訊波特率的研究結(jié)果:plc 在上電時產(chǎn)生一個隨機(jī)數(shù)四個字節(jié)十六進(jìn)制樹存放在物理地址00ee8h上,gppw在通訊開始時先在9600波特率下讀取了plc的地址00ee8h起四個8位字節(jié)的內(nèi)容,經(jīng)過了專用的算法計(jì)算(現(xiàn)在未知算法),把計(jì)算結(jié)果發(fā)送到plc地址00eech起的四個8位字節(jié)中,plc確認(rèn)數(shù)值正確激活為:波特率可變模式,gppw再發(fā)送命令更改波特率。然而地址00ee8h的內(nèi)容每次啟動都是變化的,要想激活,這就需要知道計(jì)算的算法了。
我自己認(rèn)為無法破解上述兩個問題,去年5月份的時候就停止了研究了。阿干去年也跟我說過,拆機(jī)做些處理是可以破解的。
一年后的今天,有人在網(wǎng)上說出了破解方法,要做硬件處理,還不用拆機(jī)也可以,今天我就試一試看看是否真的可以破解。
運(yùn)行三菱gppw軟件先對fx3u plc進(jìn)行2級密碼+禁止所有在線操作,如圖3,圖4我設(shè)置的密碼分別是:11111111, 22222222
然后運(yùn)行我的軟件進(jìn)行查看,如圖5、圖6
然后plc斷電,按別人說的進(jìn)行plc硬件處理,過程不便在這里公開,再運(yùn)行我的軟件檢查,如圖7 。
保護(hù)狀態(tài)變?yōu)榱耍旱诙P(guān)健字未設(shè)置,可以讀取密碼,這時的密碼跟原始的密碼是不同的。
然后再運(yùn)行三菱編程gppw軟件進(jìn)行讀取plc,要求輸入密碼時僅輸入第一級密碼(上面的),真的可以將參數(shù)設(shè)置、程序、軟元件全部讀取。
fx3u plc真的被破解了。