信捷PLC的解密方法
信捷PLC的解密方法 — 轉載僅供參考
信捷PLC的解密具有一定的難度,很多人特別是新入門者,會覺得很難解。下面就分享一下筆者的一些經(jīng)驗,供大家參考。經(jīng)筆者試驗,信捷PLC在設計方面有幾個漏洞,可以用于PLC解密。
先說軟件方面的兩個漏洞:
第一, 在PLC已加密的情況下,如果最后一次PLC與電腦連接時,曾向PLC輸入密碼,在
退出軟件前PLC是在線狀態(tài)的,那么通過串口向PLC發(fā)送如下十六進制代碼: 先發(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
這時PLC就會直接返回11個字節(jié): 01 03 06 313233343536 C5 5C
在這11個字節(jié)中,前3字節(jié)是地址和命令代碼,最后2字節(jié)是CRC校驗的高字節(jié)和低字節(jié);從第4字節(jié)到第9字節(jié),這6位就是密碼了,可以直接對應ASCII碼表翻譯出來,如上面的31-36就是十進制的1-6,所以返回的密碼就是123456。
第二, 除了上面的漏洞,還有一個就是,可以通過試錯來得到,
信捷的密碼解除指令為: 01 03 40 0A 00 01 B1 CB
發(fā)出這個指令與01 01 74 02 00 01 47 FA
都會訪問密碼,不過后者在返回密碼后還會上傳程序,前者只是單純的解除密碼。 在發(fā)出這個指令后,再發(fā)如下指令 01 10 44 2C 00 03 06 * * * * * *# $ *表示十六進制的密碼,#表示CRC校驗的高字節(jié),$表示CRC校驗的低字節(jié),這串代碼需要用計算機自動發(fā)送,運氣好的情況下,很快會返回密碼。這個方法同樣適用于三菱等PLC。
再談談硬件方面的漏洞:
先發(fā)張圖看看,下面的圖是信捷XC3-24RT-E的PLC的拆機照片,
說說這個板子上的東西吧,下面介紹其中的芯片:
1. 圖中最上方的PLCC封裝的芯片,是PLC的控制芯片。我們知道,在軟件上PLC的組成
由系統(tǒng)程序和用戶程序組成。系統(tǒng)程序有的也稱自舉程序,用戶程序是用戶也就是PLC使用者編寫的程序。該塊芯片內(nèi)存放的,就是系統(tǒng)程序。
2. 圖中下方右側是一片單片機,它的作用是輔助主芯片進行系統(tǒng)方面的控制。
3. 圖中下方左側的一大一小兩片芯片是存儲用戶程序的內(nèi)存芯片,也就是說我們編寫的
PLC控制程序都是存放在這里面的。
4. 其他的芯片,包括驅動芯片,通信芯片,運放等等與我們破解無關,就不細述了。 在了解了以上內(nèi)容后,大家會有疑惑了,PLC程序我們知道在哪里了,問題是密碼在哪里呀?其實這個問題很簡單,密碼一般是放在內(nèi)存中的,當然也有存放在主控芯片中的。但是無論哪種情況,主控芯片在初始化掃描程序的時候,一定會掃描自身的某個寄存器,這個寄存器存放的是一個標志,即程序有無加密的標志。如果該寄存器被置位(表示程序已加密),那么在運行上位機軟件登錄時就調(diào)用密碼輸入程序,反之則不進行密碼輸入程序的調(diào)用,直接調(diào)用用戶程序。因此,一切的玄機都在這個神奇的寄存器中!
我們在無法改變這個特殊寄存器的值的情況下怎么辦呢?怎么才能繞過密碼讀取程序呢?或者直接得到密碼呢? 方法有兩個:一,更換控制芯片,內(nèi)存芯片不變,這時PLC的程序就可以直接讀出來了;二,更換內(nèi)存芯片,將內(nèi)存芯片更換到另一塊沒有密碼的板子上,亦可以直接讀出程序。 以上就是此次介紹的利用漏洞破解信捷PLC密碼的全部方法了! 除了以上的,當然還有一些其他的漏洞,在此就不分享了。
最后給諸位分享一組萬能代碼:51 51 31 35 30 35 39 37 39 31 36 33 32 使用串口工具發(fā)送模式,輸入萬能代碼,然后在HEX/ASCII中切換至ASCII形式,將代碼發(fā)送即可。
技術需要交流才能進步,望諸位不吝門戶之見,坦誠交流。