免責(zé)聲明:本貼僅適用于系統(tǒng)調(diào)試、忘記密碼及程序備份等;嚴(yán)禁非法盜取別人商業(yè)秘密。一切法律責(zé)任由使用者承擔(dān)!
信捷PLC的解密方法
信捷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ī)照片,
- 圖中最上方的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è)問題很簡單,密碼一般是放在內(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)然還有一些其他的漏洞,在此就不分享了。
最后給諸位分享一組萬能代碼:31 35 32 37 39 31 39 35 31 39 31 使用串口工具發(fā)送模式,輸入萬能代碼,然后在HEX/ASCII中切換至ASCII形式,將代碼發(fā)送即可。 - 信捷的PLC密碼保護(hù)形同虛設(shè),可以讀取EEPROM后,輕松的找到密碼,密碼在0758或者0858之后,只有6位。雖然也采用了二次加密,你看到的并不是真實(shí)的密碼,但是密碼算法簡單粗暴,略微有點(diǎn)密碼學(xué)知識(shí)的人一眼就能看出來。
最難的就是保密下載了。這在解密業(yè)界也是一大難題,迄今為止還沒有任何人能解決此問題。其難度在哪里呢?
據(jù)我個(gè)人的研究,信捷保密下載采用了KEY密匙加密法。怎么個(gè)解釋?保密下載后的文件是跟密碼保護(hù)不一樣的。保密下載后,cpu的系統(tǒng)存儲(chǔ)區(qū),會(huì)生成一個(gè)具體位數(shù),大小不知道的密匙key文件。這個(gè)KEY會(huì)和EEPROM中的芯片數(shù)據(jù)發(fā)生運(yùn)算,而得到CPU運(yùn)行的真正代碼,載入RAM。如果丟失了這個(gè)key,你初始化了plc,清空了PLC,就是你又還原了保存的EEPROM芯片文件,那也是無效的。為什么??KEY文件,鑰匙丟了怎么開鎖?怎么打開加密的數(shù)據(jù)呢?EEPROM的數(shù)據(jù)變成了無用的數(shù)據(jù),毫無用處了,沒了KEY誰都沒有辦法還原數(shù)據(jù)。
上面的說法是你猜測還是有證據(jù)?對(duì)證據(jù)才是最重要的,才是科學(xué)的根本。有的人問我信捷的PLC你能解密嗎?我說你的PLC加密了嗎?⊙▂⊙這個(gè)我還真不知道,我猜肯定加密了!呵呵,要命吧!搞技術(shù)靠猜測。入正題,那么你說你有什么證據(jù)證明CPU內(nèi)部藏有KEY密匙呢?你可以嘗試復(fù)制、拷貝、克隆、仿造一臺(tái)保密下載的信捷PLC,你不可能成功。有人會(huì)說我拷貝EEPROM芯片文件過去不就可以了嗎??你可以試試,PLC會(huì)報(bào)警,然而沒有保密下載,只有密碼保護(hù)的,你就可以克隆,并且不會(huì)報(bào)警,說明了什么問題?key密匙起作用了。這個(gè)key密匙并不在EEPROM芯片中,你無法獲取,他是存放在CPU內(nèi)部的系統(tǒng)存儲(chǔ)區(qū)的,如果你得到了這個(gè)KEY,問題就迎刃而解。這是解決保密下載的根本大法。我看了有人說保密下載分為兩種方式存放,一種是供編程軟件讀取的,一種是供CPU讀取的,保密下載只下載了供cpu讀取的而沒有下載供編程軟件讀取的,這是及其錯(cuò)誤的說法,根本不是那么回事。
綜上所述,解決信捷PLC保密下載的根本出路在于找出隱藏在CPU系統(tǒng)內(nèi)部的KEY密匙,找到了你就解決了,找不到,你再怎么折騰rom芯片都無用。信捷的PLC密碼保護(hù)形同虛設(shè),可以讀取EEPROM后,輕松的找到密碼,密碼在0758或者0858之后,只有6位。雖然也采用了二次加密,你看到的并不是真實(shí)的密碼,但是密碼算法簡單粗暴,略微有點(diǎn)密碼學(xué)知識(shí)的人一眼就能看出來。
最難的就是保密下載了。這在解密業(yè)界也是一大難題,迄今為止還沒有任何人能解決此問題。其難度在哪里呢?
據(jù)我個(gè)人的研究,信捷保密下載采用了KEY密匙加密法。怎么個(gè)解釋?保密下載后的文件是跟密碼保護(hù)不一樣的。保密下載后,cpu的系統(tǒng)存儲(chǔ)區(qū),會(huì)生成一個(gè)具體位數(shù),大小不知道的密匙key文件。這個(gè)KEY會(huì)和EEPROM中的芯片數(shù)據(jù)發(fā)生運(yùn)算,而得到CPU運(yùn)行的真正代碼,載入RAM。如果丟失了這個(gè)key,你初始化了plc,清空了PLC,就是你又還原了保存的EEPROM芯片文件,那也是無效的。為什么??KEY文件,鑰匙丟了怎么開鎖?怎么打開加密的數(shù)據(jù)呢?EEPROM的數(shù)據(jù)變成了無用的數(shù)據(jù),毫無用處了,沒了KEY誰都沒有辦法還原數(shù)據(jù)。
上面的說法是你猜測還是有證據(jù)?對(duì)證據(jù)才是最重要的,才是科學(xué)的根本。有的人問我信捷的PLC你能解密嗎?我說你的PLC加密了嗎?⊙▂⊙這個(gè)我還真不知道,我猜肯定加密了!呵呵,要命吧!搞技術(shù)靠猜測。入正題,那么你說你有什么證據(jù)證明CPU內(nèi)部藏有KEY密匙呢?你可以嘗試復(fù)制、拷貝、克隆、仿造一臺(tái)保密下載的信捷PLC,你不可能成功。有人會(huì)說我拷貝EEPROM芯片文件過去不就可以了嗎??你可以試試,PLC會(huì)報(bào)警,然而沒有保密下載,只有密碼保護(hù)的,你就可以克隆,并且不會(huì)報(bào)警,說明了什么問題?key密匙起作用了。這個(gè)key密匙并不在EEPROM芯片中,你無法獲取,他是存放在CPU內(nèi)部的系統(tǒng)存儲(chǔ)區(qū)的,如果你得到了這個(gè)KEY,問題就迎刃而解。這是解決保密下載的根本大法。我看了有人說保密下載分為兩種方式存放,一種是供編程軟件讀取的,一種是供CPU讀取的,保密下載只下載了供cpu讀取的而沒有下載供編程軟件讀取的,這是及其錯(cuò)誤的說法,根本不是那么回事。
綜上所述,解決信捷PLC保密下載的根本出路在于找出隱藏在CPU系統(tǒng)內(nèi)部的KEY密匙,找到了你就解決了,找不到,你再怎么折騰rom芯片都無用。
技術(shù)支持: 13925047020(微信同號(hào)),可協(xié)助上門調(diào)試!