資料下載
三菱 PLC 解密
閱讀:11094 發(fā)布時間:2012-6-28提 供 商 | 上海維特銳實業(yè)發(fā)展有限公司 | 資料大小 | 1.9MB |
---|---|---|---|
資料圖片 | 下載次數(shù) | 3102次 | |
資料類型 | WORD 文檔 | 瀏覽次數(shù) | 11094次 |
免費下載 | 點擊下載 |
我是從2010年5月26日開始研究FX3U解密,查遍網(wǎng)絡找不到只言半語,看來FX3U解密沒人研究,或者研究的人怕人家學,竟然找不到一丁點有用的信息??磥碇挥锌孔粤Ω恕?雖然目前已經研究成功了FX3U解密,免拆機的,讀出正確程序和參數(shù),包括禁止上載的問題也能讀出正確程序和參數(shù)。但我還是想把當時研究解密的過程整理出來,供有興趣的朋友參考,我這里所講的過程也是我實踐研究的過程,這當中也難免要走彎路的。但zui終是要通往成功的大道的。
其實 沒必要搞得這么神秘,PLC解密沒那么復雜。
1、三菱 PLC FX3U 用的編程軟件必須采用GX Developer8.10以上的版本,我是從網(wǎng)上下載個GX Developer Version8.52E就可以支持FX3U的編程。啟動GX Developer,從幫助菜單就可以看到編程軟件的版本號,如下圖所示。
從工程菜單,創(chuàng)建新工程,PLC系列中選擇FXCPU,PLC類型中選FX3U(C)就可以對FX3U進行編程的各種操作。
2、FX3U的加密方法是:打開GX Developer 后從菜單 "在線—》登錄關鍵字—》新建登錄,改變....."進入,顯示如下界面:
FX3U可以設置兩個密碼,即關鍵字和第2關鍵字,每個有8個字符(字符只能是0-F共16個16進制的字符),這樣說明如果兩個關鍵字都設定的話密碼總共有16個字符。這樣可以組合多少種密碼呢,即16^16=18446744073709551616.這是個天文數(shù)字,有人想要用窮舉法解密,那是不可能的。
3、首先隨便編個測試程序,不加密,兩個關鍵字都不設定,寫入FX3U,然后用FXWIN軟件選取FX2N型號讀出程式,竟然能讀出正確的程序來。相信三菱FX PLC的FXWIN程軟件大家應該很熟悉了。界面如下所示:
用自編的FX三菱解密軟件連線顯示,F(xiàn)X3U PLC竟然顯示成FX2N版本號為2.41,說明FX3U是FX2N的版本。
4、繼續(xù)測試,用 GX Developer 只設定第1關鍵字,第2關鍵字為空。
用自編的FX三菱解密軟件(可解FX0N、1N、2N、1S、FX2),進行解密。竟然解出密碼來。按FX2N型號進行下載也能下載程序,說明當只設一個關鍵字的時候,F(xiàn)X3U加密機制和FX2N的是一模一樣的。
CP1H解密 FX3U解密 FX3G解密 FPX解密 CP1E解密 CJ1M解密 CP1Eusb口解密 MT6000解密 MT8000解密 GOT1000解密
看看我的FX解密軟件:
5、繼續(xù)測試,用 GX Developer 同時設定第1關鍵字,第2關鍵字。
這時用老的解密軟件解不出來了,用老的編程軟件FXGP-WIN-C,企圖讀入程序,顯示通信錯誤。
6、看來只有祭出法寶了,那就是PLC解密通用的法寶串口監(jiān)控軟件。
先啟用串口監(jiān)控軟件,設置好開始監(jiān)控,然后運行編程軟件。注意順序要搞對喔。
從菜單-》在線-》傳輸設置,進入傳輸設置界面,然后“按通信測試”鍵,顯示CPU類型為FX3U,通信成功。
此時從串口監(jiān)控到的數(shù)據(jù)是:
# Time Function Data ( Hex )
1 [00000000] IRP_MJ_CREATE Port Opened - Gppw.exe
2 [00000000] IOCTL_SERIAL_SET_BAUD_RATE Baud Rate: 115200
3 [00000000] IOCTL_SERIAL_SET_LINE_CONTROL StopBits: 1, Parity: Even, DataBits: 7
4 [00000001] IRP_MJ_WRITE Length: 0001, Data: 05
5 [00000002] IRP_MJ_READ Length: 0001, Data: 06
6 [00000002] IRP_MJ_WRITE Length: 0011, Data: 02 30 30 45 30 32 30 32 03 36 43
7 [00000003] IRP_MJ_READ Length: 0001, Data: 02
8 [00000003] IRP_MJ_READ Length: 0001, Data: 42
9 [00000003] IRP_MJ_READ Length: 0001, Data: 31
10 [00000003] IRP_MJ_READ Length: 0001, Data: 35
11 [00000003] IRP_MJ_READ Length: 0001, Data: 45
12 [00000003] IRP_MJ_READ Length: 0001, Data: 03
13 [00000003] IRP_MJ_READ Length: 0001, Data: 46
14 [00000003] IRP_MJ_READ Length: 0001, Data: 30
15 [00000004] IRP_MJ_WRITE Length: 0011, Data: 02 30 30 45 43 41 30 32 03 38 45
16 [00000004] IRP_MJ_READ Length: 0001, Data: 02
17 [00000004] IRP_MJ_READ Length: 0001, Data: 37
18 [00000004] IRP_MJ_READ Length: 0001, Data: 31
19 [00000004] IRP_MJ_READ Length: 0001, Data: 33
20 [00000004] IRP_MJ_READ Length: 0001, Data: 46
21 [00000004] IRP_MJ_READ Length: 0001, Data: 03
22 [00000004] IRP_MJ_READ Length: 0001, Data: 45
23 [00000004] IRP_MJ_READ Length: 0001, Data: 34
24 [00000005] IRP_MJ_WRITE Length: 0011, Data: 02 30 30 45 30 32 30 32 03 36 43
25 [00000006] IRP_MJ_READ Length: 0001, Data: 02
26 [00000006] IRP_MJ_READ Length: 0001, Data: 42
27 [00000006] IRP_MJ_READ Length: 0001, Data: 31
28 [00000006] IRP_MJ_READ Length: 0001, Data: 35
29 [00000006] IRP_MJ_READ Length: 0001, Data: 45
30 [00000006] IRP_MJ_READ Length: 0001, Data: 03
31 [00000006] IRP_MJ_READ Length: 0001, Data: 46
32 [00000006] IRP_MJ_READ Length: 0001, Data: 30
33 [00000006] IRP_MJ_WRITE Length: 0011, Data: 02 30 30 45 43 41 30 32 03 38 45
34 [00000007] IRP_MJ_READ Length: 0001, Data: 02
35 [00000007] IRP_MJ_READ Length: 0001, Data: 37
36 [00000007] IRP_MJ_READ Length: 0001, Data: 31
37 [00000007] IRP_MJ_READ Length: 0001, Data: 33
38 [00000007] IRP_MJ_READ Length: 0001, Data: 46
39 [00000007] IRP_MJ_READ Length: 0001, Data: 03
40 [00000007] IRP_MJ_READ Length: 0001, Data: 45
41 [00000007] IRP_MJ_READ Length: 0001, Data: 34
42 [00000015] IRP_MJ_CLOSE Port Closed
2 [00000000] IOCTL_SERIAL_SET_BAUD_RATE Baud Rate: 115200
3 [00000000] IOCTL_SERIAL_SET_LINE_CONTROL StopBits: 1, Parity: Even, DataBits: 7
4 [00000001] IRP_MJ_WRITE Length: 0001, Data: 05
5 [00000002] IRP_MJ_READ Length: 0001, Data: 06
6 [00000002] IRP_MJ_WRITE Length: 0011, Data: 02 30 30 45 30 32 30 32 03 36 43
7 [00000003] IRP_MJ_READ Length: 0001, Data: 02
8 [00000003] IRP_MJ_READ Length: 0001, Data: 42
9 [00000003] IRP_MJ_READ Length: 0001, Data: 31
10 [00000003] IRP_MJ_READ Length: 0001, Data: 35
11 [00000003] IRP_MJ_READ Length: 0001, Data: 45
12 [00000003] IRP_MJ_READ Length: 0001, Data: 03
13 [00000003] IRP_MJ_READ Length: 0001, Data: 46
14 [00000003] IRP_MJ_READ Length: 0001, Data: 30
15 [00000004] IRP_MJ_WRITE Length: 0011, Data: 02 30 30 45 43 41 30 32 03 38 45
16 [00000004] IRP_MJ_READ Length: 0001, Data: 02
17 [00000004] IRP_MJ_READ Length: 0001, Data: 37
18 [00000004] IRP_MJ_READ Length: 0001, Data: 31
19 [00000004] IRP_MJ_READ Length: 0001, Data: 33
20 [00000004] IRP_MJ_READ Length: 0001, Data: 46
21 [00000004] IRP_MJ_READ Length: 0001, Data: 03
22 [00000004] IRP_MJ_READ Length: 0001, Data: 45
23 [00000004] IRP_MJ_READ Length: 0001, Data: 34
24 [00000005] IRP_MJ_WRITE Length: 0011, Data: 02 30 30 45 30 32 30 32 03 36 43
25 [00000006] IRP_MJ_READ Length: 0001, Data: 02
26 [00000006] IRP_MJ_READ Length: 0001, Data: 42
27 [00000006] IRP_MJ_READ Length: 0001, Data: 31
28 [00000006] IRP_MJ_READ Length: 0001, Data: 35
29 [00000006] IRP_MJ_READ Length: 0001, Data: 45
30 [00000006] IRP_MJ_READ Length: 0001, Data: 03
31 [00000006] IRP_MJ_READ Length: 0001, Data: 46
32 [00000006] IRP_MJ_READ Length: 0001, Data: 30
33 [00000006] IRP_MJ_WRITE Length: 0011, Data: 02 30 30 45 43 41 30 32 03 38 45
34 [00000007] IRP_MJ_READ Length: 0001, Data: 02
35 [00000007] IRP_MJ_READ Length: 0001, Data: 37
36 [00000007] IRP_MJ_READ Length: 0001, Data: 31
37 [00000007] IRP_MJ_READ Length: 0001, Data: 33
38 [00000007] IRP_MJ_READ Length: 0001, Data: 46
39 [00000007] IRP_MJ_READ Length: 0001, Data: 03
40 [00000007] IRP_MJ_READ Length: 0001, Data: 45
41 [00000007] IRP_MJ_READ Length: 0001, Data: 34
42 [00000015] IRP_MJ_CLOSE Port Closed
開始花大量時間來分析這些數(shù)據(jù)吧。
上述 從串口監(jiān)控到的數(shù)據(jù)是十六進制的數(shù)據(jù),還真不好看,先轉換成ASC碼,就好看多了。
# Time Function Data ( String )
1 [00000000] IRP_MJ_CREATE Port Opened - Gppw.exe
2 [00000000] IOCTL_SERIAL_SET_BAUD_RATE Baud Rate: 115200
3 [00000000] IOCTL_SERIAL_SET_LINE_CONTROL StopBits: 1, Parity: Even, DataBits: 7
4 [00000001] IRP_MJ_WRITE Length: 0001, Data:
5 [00000002] IRP_MJ_READ Length: 0001, Data:
6 [00000002] IRP_MJ_WRITE Length: 0011, Data: 00E02026C
7 [00000003] IRP_MJ_READ Length: 0001, Data:
8 [00000003] IRP_MJ_READ Length: 0001, Data: B
9 [00000003] IRP_MJ_READ Length: 0001, Data: 1
10 [00000003] IRP_MJ_READ Length: 0001, Data: 5
11 [00000003] IRP_MJ_READ Length: 0001, Data: E
12 [00000003] IRP_MJ_READ Length: 0001, Data:
13 [00000003] IRP_MJ_READ Length: 0001, Data: F
14 [00000003] IRP_MJ_READ Length: 0001, Data: 0
15 [00000004] IRP_MJ_WRITE Length: 0011, Data: 00ECA028E
16 [00000004] IRP_MJ_READ Length: 0001, Data:
17 [00000004] IRP_MJ_READ Length: 0001, Data: 7
18 [00000004] IRP_MJ_READ Length: 0001, Data: 1
19 [00000004] IRP_MJ_READ Length: 0001, Data: 3
20 [00000004] IRP_MJ_READ Length: 0001, Data: F
21 [00000004] IRP_MJ_READ Length: 0001, Data:
22 [00000004] IRP_MJ_READ Length: 0001, Data: E
23 [00000004] IRP_MJ_READ Length: 0001, Data: 4
24 [00000005] IRP_MJ_WRITE Length: 0011, Data: 00E02026C
25 [00000006] IRP_MJ_READ Length: 0001, Data:
26 [00000006] IRP_MJ_READ Length: 0001, Data: B
27 [00000006] IRP_MJ_READ Length: 0001, Data: 1
28 [00000006] IRP_MJ_READ Length: 0001, Data: 5
29 [00000006] IRP_MJ_READ Length: 0001, Data: E
30 [00000006] IRP_MJ_READ Length: 0001, Data:
31 [00000006] IRP_MJ_READ Length: 0001, Data: F
32 [00000006] IRP_MJ_READ Length: 0001, Data: 0
33 [00000006] IRP_MJ_WRITE Length: 0011, Data: 00ECA028E
34 [00000007] IRP_MJ_READ Length: 0001, Data:
35 [00000007] IRP_MJ_READ Length: 0001, Data: 7
36 [00000007] IRP_MJ_READ Length: 0001, Data: 1
37 [00000007] IRP_MJ_READ Length: 0001, Data: 3
38 [00000007] IRP_MJ_READ Length: 0001, Data: F
39 [00000007] IRP_MJ_READ Length: 0001, Data:
40 [00000007] IRP_MJ_READ Length: 0001, Data: E
41 [00000007] IRP_MJ_READ Length: 0001, Data: 4
42 [00000015] IRP_MJ_CLOSE Port Closed
2 [00000000] IOCTL_SERIAL_SET_BAUD_RATE Baud Rate: 115200
3 [00000000] IOCTL_SERIAL_SET_LINE_CONTROL StopBits: 1, Parity: Even, DataBits: 7
4 [00000001] IRP_MJ_WRITE Length: 0001, Data:
5 [00000002] IRP_MJ_READ Length: 0001, Data:
6 [00000002] IRP_MJ_WRITE Length: 0011, Data: 00E02026C
7 [00000003] IRP_MJ_READ Length: 0001, Data:
8 [00000003] IRP_MJ_READ Length: 0001, Data: B
9 [00000003] IRP_MJ_READ Length: 0001, Data: 1
10 [00000003] IRP_MJ_READ Length: 0001, Data: 5
11 [00000003] IRP_MJ_READ Length: 0001, Data: E
12 [00000003] IRP_MJ_READ Length: 0001, Data:
13 [00000003] IRP_MJ_READ Length: 0001, Data: F
14 [00000003] IRP_MJ_READ Length: 0001, Data: 0
15 [00000004] IRP_MJ_WRITE Length: 0011, Data: 00ECA028E
16 [00000004] IRP_MJ_READ Length: 0001, Data:
17 [00000004] IRP_MJ_READ Length: 0001, Data: 7
18 [00000004] IRP_MJ_READ Length: 0001, Data: 1
19 [00000004] IRP_MJ_READ Length: 0001, Data: 3
20 [00000004] IRP_MJ_READ Length: 0001, Data: F
21 [00000004] IRP_MJ_READ Length: 0001, Data:
22 [00000004] IRP_MJ_READ Length: 0001, Data: E
23 [00000004] IRP_MJ_READ Length: 0001, Data: 4
24 [00000005] IRP_MJ_WRITE Length: 0011, Data: 00E02026C
25 [00000006] IRP_MJ_READ Length: 0001, Data:
26 [00000006] IRP_MJ_READ Length: 0001, Data: B
27 [00000006] IRP_MJ_READ Length: 0001, Data: 1
28 [00000006] IRP_MJ_READ Length: 0001, Data: 5
29 [00000006] IRP_MJ_READ Length: 0001, Data: E
30 [00000006] IRP_MJ_READ Length: 0001, Data:
31 [00000006] IRP_MJ_READ Length: 0001, Data: F
32 [00000006] IRP_MJ_READ Length: 0001, Data: 0
33 [00000006] IRP_MJ_WRITE Length: 0011, Data: 00ECA028E
34 [00000007] IRP_MJ_READ Length: 0001, Data:
35 [00000007] IRP_MJ_READ Length: 0001, Data: 7
36 [00000007] IRP_MJ_READ Length: 0001, Data: 1
37 [00000007] IRP_MJ_READ Length: 0001, Data: 3
38 [00000007] IRP_MJ_READ Length: 0001, Data: F
39 [00000007] IRP_MJ_READ Length: 0001, Data:
40 [00000007] IRP_MJ_READ Length: 0001, Data: E
41 [00000007] IRP_MJ_READ Length: 0001, Data: 4
42 [00000015] IRP_MJ_CLOSE Port Closed
從上面數(shù)據(jù)看到,其實只有四個回合的數(shù)據(jù)通信,其中還有兩個回合是一模一樣的重復的數(shù)據(jù)。
分析如下:
電腦發(fā):00E0202 ’查詢D8001的值
PLC回:B15E ‘回復為5EB1,回復的數(shù)據(jù)高位在后、低位在前,所以要對調個位,
5EB1轉為10進數(shù)據(jù)值為:24241,24表示PLC型號FX2N或3U,241表示版本號
電腦發(fā):00ECA02碼 ’查詢D8101的值
PLC回:713F ‘回復為3F71轉為10進數(shù)據(jù)值為:16241,16表示PLC型號為FX3U,241表示版本號
以上這一大段數(shù)據(jù)也就是編程軟件查詢一下PLC的型號,以便接下來按相應的通迅協(xié)議進行通迅。
7、接下來就編個簡單的程序,從PLC上載程序,對上載過程的數(shù)據(jù)交換進行監(jiān)控,現(xiàn)抄錄如下:
一次完整的FX3U上載程序的數(shù)據(jù)
這上面我標明了通迅協(xié)議的注釋,明眼人一看就明白
PLC上載參數(shù)和上載程序采用的命令協(xié)議是什么。
這上載參數(shù)與程序的過程中有一大段是先讀取D區(qū)的數(shù)據(jù),關于這些D區(qū)數(shù)據(jù)的意思在GX-D里有說明,我也整理出來,有助于大家理解這些參數(shù)的意義。
|
到了這一步,我停了好長一段時間沒有研究,因為解密有時是要靠靈感的,沒有靈感是沒辦法找到解密方法的。資料請瀏覽:http://www.200plc.cn
經過大概半年左右,有個解密的同行,一起再探討此事時說能不能用我們當時解松下FPX的方法試一下FX3U,于是又是幾個不眠之夜,終于搞定了,可以上載程序和參數(shù),可是當時只能是拆機。但是靈感一旦涌現(xiàn),就會像泉水一樣*,一個又一個的設想,一次又一次的測試,終于搞定FX3U解密。程序、參數(shù)、內存全部OK。
上面的通迅數(shù)據(jù)中好好研究就有解密的命令喔。
上面的通迅數(shù)據(jù)中好好研究就有解密的命令喔。
CP1H解密 FX3U解密 FX3G解密 FPX解密 CP1E解密 CJ1M解密 CP1Eusb口解密 MT6000解密 MT8000解密 GOT1000解密
NEW CP1H CP1E CP1L解密:全國CP1H解密直讀密碼 所以不存在V1.2版本的功能塊被刪的問題 是目前zui安全的解密方式。網(wǎng)上目前還沒有查到能直讀密碼的。
NEW FX3U FX3UC FX3G解密:通過協(xié)議解FX3U系列PLC密碼 免拆機 可以在機臺上直接解密 安全可靠 也是當前PLC解密界比較好的解密方法。包括的禁止上傳的解密。
NEW FPX FPG解密:能原始算出密碼 解決禁止上載的問題保證不破壞原程序和內存(FP-X,F(xiàn)PG等,包括禁止上載)。
NEW 臺達EH2 ES2解密 臺達EH2 ES2等高加密產品
NEW Koyo(光洋)解密 光洋SH SH1 SM SM1 SN SZ SU SR DL-305 DL-05 DL-06系列PLC 解密。
NEW 艾默生PLC解密 EC10 EC20系列等
NEW 歐姆龍PLC解密 CQM1H CJ1M CJ1G CJ1H CS1D CS1G CS1H CP1L CP1H CP1E解密
NEW 松下GT高加密屏 GT-01 GT-32等
NEW 三菱GOT1000解密 GOT1000全系列解密
NEW 維綸通觸摸屏解密MT6000解密 MT8000解密 MT6056解密 MT6070解密 MT8070解密 MT6100解密 MT8100解密 MT8104解密人機界面解密
NEW 三菱Q系列解密Q00,Q01,Q00J,Q02,Q02H,Q06H,12H等
歐姆龍CP1H解密、CP1E USB口解密以及OMRON CP系列PLC加密方式的交流 歐姆龍CP1H解密、CP1E解密用232口進行的早就是已經是公開的秘密,USB口的解密現(xiàn)在還是鳳毛麟角,從網(wǎng)上有人號稱“國內*USB解密“,到我今天能用USB口解密僅用14天時間,一開始我想從*那了解相關情況,遇到的都是技術封鎖,經過充分研究后,我現(xiàn)在透露,其實USB解密與232解密是一模一樣的原理。USB發(fā)送的命令其實在232口解密研究時,我就研究過,大家先看看下面這個多年前我寫的的一個軟件界面,用于時序恢復的。 因為多年前研究的sysway協(xié)議與ToolBus協(xié)議在我的軟件里早就有了,校驗,命令格式,早就熟悉了,現(xiàn)在一看USB口是同樣的道理,都沒有太大變化就不在活下。下面上個USB口數(shù)據(jù)的截圖,內行的工控人士一看就明白了。 USB傳送的數(shù)據(jù): 下圖是關于OMRON USB口的參數(shù)說明的截圖: 有了上面參數(shù),你再研究一下USB原理關于URB、IRP、BLUK/INT 、STAK、SUBMIT_URB的說明。 當然還是離不開下面這個軟件: 只要你弄清楚這些,那么USB接口解密你就不在話下了。 CP1H、CJM1、232口解密并直讀密碼,是我較早發(fā)布的,還找不到其他有人聲稱直讀密碼,現(xiàn)在,只有USB口的PLC我先試了不要密碼的解密方法已成功了,同樣也能讀出密碼,讀出密碼有什么好處呢,一是可能繞過功能塊,解密安全可靠,另外,當你有多臺同一個編程員編的程序,那么密碼相同的可能性是80%,同時觸摸屏的密碼也往往和PLC一樣。這樣搞定一臺就等于搞定全部。何樂而不為呢。 zui近經常有初學者在網(wǎng)上詢問關于如何對OMRON CP、CJ、CS系列PLC程序加密保護的問題,下面就這個問題,我們以CP1H為例共同來探討一下,其他型號是一樣的道理的。 首先,一個PLC的加密程度,以及破解的難易程度,已經在一定程度影響到PLC銷售的*了,特別是近幾年這個現(xiàn)象越來越明顯了,特別是小型機的銷售的影響,所以幾大PLC品牌廠商也在玩起加密的貓捉老鼠游戲來了,比如這個CP1系統(tǒng)的PLC能加多少種密碼呢,細細數(shù)來有5個級別的加密。而且加密的復雜程度比當年CPM系列產品成幾何級別的增加。 我們再來看看這5個級別的加密是什么呢,在CXP編程軟件中這5種加密稱為UM密、任務密,功能塊密,禁止傳送程到儲存卡,禁止覆蓋,其中前三個加密方式是采用密碼加密,后兩個加密是采用標志加密的。下面分析一下這5種密的作用以及如何操作,對一個已加密的PLC我們判定加密情況的方法。 OMRON PLC編程軟件目前要數(shù)CXP功能zui全,也是國內工控人用的zui多的軟件,在這軟件之前,我是從當年LLS編程軟件用起的,到后來SSS編程軟件,這是一個中文的界面了,再來就是CPT可能就好多人知曉了,這當中還有用過SYSWIN編程軟件,是從歐洲老外那得到了,功能比國內流行的CPT好,再來就是這個CXP,CXP的全稱是CX-Programer,我用到的目前版本是9.2,有沒有再高版本我不曉的了。 閑話少說,啟動CXP吧! 下面這個界面大家肯定很熟悉,這是直接點擊一個CXP文件,CXP就直接關連打開到這個界面,我這里是打開了一個叫N多段速cp1h.cxp文件。默認情況下CXP左邊這個窗口稱工作區(qū),右邊這個窗口我不曉得,就叫它工作子區(qū),下面的那個窗口叫輸出。 在工作區(qū)窗口里有個新工程,新工程下面有個新PLC1,右擊新PLC1,有個彈出菜單,彈出菜單zui下面有個"屬性(o)"菜單。單擊"屬性(o)"菜單,在PLC屬性界面,選擇“保護”選項卡,我們來到了加密設置的地方。如下圖。 在這里你可以設UM讀取密碼,密碼設置是8個字符,字符可以是0-9,a-z,A-Z。 任務讀保護密碼,同樣密碼設置是8個字符,字符可以是0-9,a-z,A-Z。 禁止存入內存卡和從PLC傳送程序,可以選擇V或不選擇。 禁止覆蓋受保護程序,可以選擇V或不選擇。 看下圖,是全部選擇加密的zui高等級了。 設定好退出,必須按按CXP軟件中工具欄PLC設置 保護到PLC還有如下幾項細節(jié)必須注意。 1、設置密碼有離線和在線兩個情況。 離線狀態(tài)下,執(zhí)行 ,這時是保護程序的任務密,只在保護電腦里的文件,并沒有保護到PLC里,離線狀態(tài)下,按下 CPX程序中有加任務保護的程序段就被鎖保護起來,看不到程序圖了。沒有任務保護的程序段就不加鎖。如下圖所示 為什么有的程序加鎖有的不加鎖呢,這是在CP、CJ、CS這些新型OMRON PLC中引入了任務的概念。 我們一起來看看CP1的編程手冊上怎么講的: 在 CP1 中,可以將程序按功能、控制對象、工序、等進行劃分,分割為稱為「任務」的執(zhí)行單位,可將用戶程序結構化。因此具有以下優(yōu)點。 1 .可將程序分割由多人共同開發(fā)。 2 .可將程序作為模塊實現(xiàn)標準化。 3 .提高總體的響應性能。 4 .修正 · 調試更加簡便。 5 .程序的內務處理變得容易。 6 .用戶程序的理解變得容易。 CP1系列PLCzui大能管理 288 個任務程序。 其中周期執(zhí)行任務32個(NO.0-31) ,中斷任務256個(NO.0-255) CPU 單元對周期執(zhí)行任務按其編號由小到大的順序執(zhí)行。當發(fā)生中斷原因時,中止該任務的執(zhí)行改而執(zhí)行中斷任務。之后再執(zhí)行被中止的任務。 上例中新程序1(00)就是周期執(zhí)行任務0也叫循環(huán)任務0,新程序2(01)就是循環(huán)任務1, 如果要對任務加密保護就必須右擊該程序名—》屬性—》保護—》選定任務讀保護,對于沒有選定任務讀保護的程序,當在離線執(zhí)行 時,該程序就不加鎖,選定任務讀保護的程序,該程序就加鎖。加鎖后程序就看不到。同時PLC屬性—》保護中的任務密也就成星號。保存后再打開,也看不到具體的任務密。 在線狀態(tài)下,執(zhí)行 ,這時保護PLC內部程序的UM密和任務密,UM密是首先被激發(fā)的,任務密加載前提條件是PLC里面的任務必須有選定任務讀保護,也就是下載過任務讀保護的任務,如果下載的是沒有選定任務讀保護,那么在線狀態(tài)下,執(zhí)行 ,將提示無法加密任務密,必須重新下載有任務保護的程序。 2、UM密碼和任務密zui多可以設8位字符,包括0-9的數(shù)字,a-Z,26個字母分大小寫不一樣,加載了UM密,PLC里面的程序就被保護,沒有解除密碼,PLC程序將無法上載。加載了任務密后,PLC程序即使上載了,也會在程序中顯示加鎖狀態(tài),不能看到程序。 3、設置禁止存入內存卡和從PLC傳送程序和禁止覆蓋受保護程序,必須程序重新傳送到PLC一次,才能生效。 關于禁止存入內存卡和從PLC傳送程序說明, 經常有人問內存卡什么樣,什么型號,裝在哪里呢。 OMRON儲存卡型號是:CP1W-ME05M 什么樣子,我上個圖,你就明白了。 CP1W-ME05M是容量為8M的儲存卡。 如果沒有勾選“禁止存入內存卡”,那么PLC的程序可以傳送到儲存卡里備份,當PLC已經設置了UM密、任務密,傳送到儲存卡里的程序同樣會有UM密、任務密,如果勾選設置“禁止存入內存卡”,那么PLC的程序就不可以傳送到卡里備份。 關于禁止覆蓋受保護程序說明, 如果沒有勾選“禁止覆蓋受保護程序”,那么如果想清除PLC的程序,可以從PLC的菜單選擇清除PLC,或者傳送一個空白程序到PLC中, 當勾選“禁止覆蓋受保護程序”,同時PLC又有UM密、任務密時,沒有解除密碼前就清除不了PLC里的程序,想用一個新的程序覆蓋也不行,就是禁止寫入的意思。 當采用這種“禁止覆蓋受保護程序”時,如果你忘記了密碼,又沒有空白的儲存卡,那就非常非常麻煩了,你就是想把程序清空都難。這時只有一個辦法,突然靈感一動想起密碼,哈哈, 用儲存卡清除禁止覆蓋受保護程序,是把儲存卡里的程序在PLC通電一瞬間傳入覆蓋PLC程序,當然原程序就變沒有了,儲存卡里的程序是空白的,這樣就清除了,如果儲存卡里的程序是有密碼的和禁止覆蓋,那么傳送后仍舊是禁止覆蓋和加密的。 還有一種選擇就是能夠對禁止覆蓋的PLC程序進行恢復,如果你想得到加密的密碼,同樣我們能幫你找到,至于方法嘛,我們的方法是的,解密軟件也是的,不會輕易傳播,請您見諒,我們只提供單次解密的服務。對于V1。2版本的功能塊也不會影響。 功能塊密又是怎能回事呢, 首先,我們要理解什么是功能塊,功能塊就相當于我們編程中的函數(shù),在功能塊中定義好輸入輸出和變量,然后通過功能塊編程,使的功能塊具有一定的功能,在主程序中,就按需要在多處調用功能塊,使之產生同樣的功能,當然象函數(shù)可以給定變量不同的值,產生的輸出就不同。 功能塊具有很好的移植性能,為了保護功能塊的程序,可以單獨對每個功能塊加密,密碼是4個字符,加了密的功能塊,就看不到功能塊程序了。 下面談談,對于一個加密了的CP1 PLC如何判斷是加了那些密碼呢,CP1H操作說明書是這樣說的: 我總結如下,你查一下A99的值,對照下面說明就一目了然。 A99說明: A99= 0001表示有UM密 0002表示有任務密 0003表示有UM密+任務密 0004表示有禁止覆蓋 0005表示有UM密+禁止覆蓋 0006表示有任務密+禁止覆蓋 0007表示有UM密+任務密+禁止覆蓋 0008表示有禁止向卡傳送 0009表示有UM密+禁止向卡傳送 000A表示有任務密+禁止向卡傳送 000B表示有UM密+任務密+禁止向卡傳送 000C表示有禁止覆蓋+禁止向卡傳送 000D表示有UM密+禁止覆蓋+禁止向卡傳送 000E表示有任務密+禁止覆蓋+禁止向卡傳送 000F表示有UM密+任務密+禁止覆蓋+禁止向卡傳送 100X:X是參考上述的說明,zui高位為1表示不允許解除UM密 200X:zui高位為2表示不允許解除TK密 300X:zui高位為3表示不允許解除UM+TK密 |