信捷PLC的解密方法 — 轉(zhuǎn)載僅供參考
信捷PLC的解密具有一定的難度,很多人特別是新入門者,會(huì)覺得很難解。下面就分享一下筆者的一些經(jīng)驗(yàn),供大家參考。經(jīng)筆者試驗(yàn),信捷PLC在設(shè)計(jì)方面有幾個(gè)漏洞,可以用于PLC解密。
先說軟件方面的兩個(gè)漏洞:
第一, 在PLC已加密的情況下,如果最后一次PLC與電腦連接時(shí),曾向PLC輸入密碼,在
退出軟件前PLC是在線狀態(tài)的,那么通過串口向PLC發(fā)送如下十六進(jìn)制代碼: 先發(fā),
01 01 74 02 00 01 47 FA
再發(fā),
01 03 44 54 00 01 D1 2A 最后發(fā),
01 03 44 0A 00 03 31 39
這時(shí)PLC就會(huì)直接返回11個(gè)字節(jié): 01 03 06 313233343536 C5 5C
在這11個(gè)字節(jié)中,前3字節(jié)是地址和命令代碼,最后2字節(jié)是CRC校驗(yàn)的高字節(jié)和低字節(jié);從第4字節(jié)到第9字節(jié),這6位就是密碼了,可以直接對(duì)應(yīng)ASCII碼表翻譯出來,如上面的31-36就是十進(jìn)制的1-6,所以返回的密碼就是123456。
第二, 除了上面的漏洞,還有一個(gè)就是,可以通過試錯(cuò)來得到,
信捷的密碼解除指令為: 01 03 40 0A 00 01 B1 CB
發(fā)出這個(gè)指令與01 01 74 02 00 01 47 FA
都會(huì)訪問密碼,不過后者在返回密碼后還會(huì)上傳程序,前者只是單純的解除密碼。 在發(fā)出這個(gè)指令后,再發(fā)如下指令 01 10 44 2C 00 03 06 * * * * * *# $ *表示十六進(jìn)制的密碼,#表示CRC校驗(yàn)的高字節(jié),$表示CRC校驗(yàn)的低字節(jié),這串代碼需要用計(jì)算機(jī)自動(dòng)發(fā)送,運(yùn)氣好的情況下,很快會(huì)返回密碼。這個(gè)方法同樣適用于三菱等PLC。
再談?wù)動(dòng)布矫娴穆┒矗?nbsp;
先發(fā)張圖看看,下面的圖是信捷XC3-24RT-E的PLC的拆機(jī)照片,

說說這個(gè)板子上的東西吧,下面介紹其中的芯片:
1. 圖中最上方的PLCC封裝的芯片,是PLC的控制芯片。我們知道,在軟件上PLC的組成
由系統(tǒng)程序和用戶程序組成。系統(tǒng)程序有的也稱自舉程序,用戶程序是用戶也就是PLC使用者編寫的程序。該塊芯片內(nèi)存放的,就是系統(tǒng)程序。
2. 圖中下方右側(cè)是一片單片機(jī),它的作用是輔助主芯片進(jìn)行系統(tǒng)方面的控制。
3. 圖中下方左側(cè)的一大一小兩片芯片是存儲(chǔ)用戶程序的內(nèi)存芯片,也就是說我們編寫的
PLC控制程序都是存放在這里面的。
4. 其他的芯片,包括驅(qū)動(dòng)芯片,通信芯片,運(yùn)放等等與我們破解無關(guān),就不細(xì)述了。 在了解了以上內(nèi)容后,大家會(huì)有疑惑了,PLC程序我們知道在哪里了,問題是密碼在哪里呀?其實(shí)這個(gè)問題很簡(jiǎn)單,密碼一般是放在內(nèi)存中的,當(dāng)然也有存放在主控芯片中的。但是無論哪種情況,主控芯片在初始化掃描程序的時(shí)候,一定會(huì)掃描自身的某個(gè)寄存器,這個(gè)寄存器存放的是一個(gè)標(biāo)志,即程序有無加密的標(biāo)志。如果該寄存器被置位(表示程序已加密),那么在運(yùn)行上位機(jī)軟件登錄時(shí)就調(diào)用密碼輸入程序,反之則不進(jìn)行密碼輸入程序的調(diào)用,直接調(diào)用用戶程序。因此,一切的玄機(jī)都在這個(gè)神奇的寄存器中!
我們?cè)跓o法改變這個(gè)特殊寄存器的值的情況下怎么辦呢?怎么才能繞過密碼讀取程序呢?或者直接得到密碼呢? 方法有兩個(gè):一,更換控制芯片,內(nèi)存芯片不變,這時(shí)PLC的程序就可以直接讀出來了;二,更換內(nèi)存芯片,將內(nèi)存芯片更換到另一塊沒有密碼的板子上,亦可以直接讀出程序。 以上就是此次介紹的利用漏洞破解信捷PLC密碼的全部方法了! 除了以上的,當(dāng)然還有一些其他的漏洞,在此就不分享了。
最后給諸位分享一組萬能代碼:51 51 31 35 30 35 39 37 39 31 36 33 32 使用串口工具發(fā)送模式,輸入萬能代碼,然后在HEX/ASCII中切換至ASCII形式,將代碼發(fā)送即可。
技術(shù)需要交流才能進(jìn)步,望諸位不吝門戶之見,坦誠(chéng)交流。
與"信捷PLC的解密方法"相關(guān)內(nèi)容