介紹PLC可編程控制器密碼破解程序 <<版權聲明:本文由容源電子網(wǎng)(0u2438cq.cn)整理提供,部分內容來(lái)源于網(wǎng)絡(luò ),如有侵犯到你的權利請與我們聯(lián)系更正!
朋友拿回來(lái)個(gè)plc,他們工作上用那控制電器柜里的變頻器,里面要輸程序(通過(guò)串口com1),每次找人家都要收費,而且程序是加密地,沒(méi)密碼導不出來(lái),
我覺(jué)定來(lái)個(gè)破解,找了很久破解工具,都是要匯款才行,自力更生把,看了不久的vb,就來(lái)編個(gè)程序吧,
時(shí)間有限,經(jīng)歷有限,一個(gè)星期的測試,終于知道了破解方法。先說(shuō)下思路把:: <<版權聲明:本文由容源電子網(wǎng)(0u2438cq.cn)整理提供,部分內容來(lái)源于網(wǎng)絡(luò ),如有侵犯到你的權利請與我們聯(lián)系更正!
我是在臺達的plc上測試的,條件有限,沒(méi)有測試
種類(lèi),但方法差不多 <<版權聲明:本文由容源電子網(wǎng)(0u2438cq.cn)整理提供,部分內容來(lái)源于網(wǎng)絡(luò ),如有侵犯到你的權利請與我們聯(lián)系更正!
通過(guò)com1進(jìn)行串口通訊,當輸入密碼后pc向plc發(fā)出加密過(guò)的數據,plc返回數據進(jìn)行比對是否一致,錯誤則跳轉到錯誤提示,破解有兩個(gè)途徑,密碼比對是在pc端進(jìn)行的,
可以通過(guò)匯編把那個(gè)通信軟件改了當比對時(shí)跳轉導正確地址,但
程序太多的控件,找不到內存的跳轉地址(還是本人的水平問(wèn)題),但匯編發(fā)現大概是在0045210E 地址處,
這種方法不太可行,也請通過(guò)此法研究的朋友和我交流 <<版權聲明:本文由容源電子網(wǎng)(0u2438cq.cn)整理提供,部分內容來(lái)源于網(wǎng)絡(luò ),如有侵犯到你的權利請與我們聯(lián)系更正!
第二種方法也我試驗成功的,通過(guò)對返回數據的解密來(lái)得到密碼,我測試的工具是串口精靈,通過(guò)無(wú)數次的分析本人知道了加密的方式
例:隨便輸入密碼后收到的數據為
3A 30 31 30 33 30 32 34 34 35 35 36 31 0D 0A 3A 30 31 30 31 30 31 32
44 44 30 0D 0A 3A 30 31 30 33 30 34 33 31 33 31 33 31 33 31 33 34 0D 0A <<版權聲明:本文由容源電子網(wǎng)(0u2438cq.cn)整理提供,部分內容來(lái)源于網(wǎng)絡(luò ),如有侵犯到你的權利請與我們聯(lián)系更正!
可以看出有的規律,從紅色的3a即最后一個(gè),后數12位開(kāi)始,去兩個(gè)數為一組,取八組即33 31 33 31 33 31 33 31
是在hex
下,把這組數據按ASCII碼轉換為字符,得到31313131,再按hex----ASCII的方式轉換一次,得到明文密碼,1111,密碼不同,解不同,
這樣做太麻煩了,寫(xiě)個(gè)程序,用vb完成。我剛看了基本vb的書(shū),還不太熟悉程序還沒(méi)做完,只做了通信部分的代碼
我會(huì )盡快做完并在博客發(fā)布 <<版權聲明:本文由容源電子網(wǎng)(0u2438cq.cn)整理提供,部分內容來(lái)源于網(wǎng)絡(luò ),如有侵犯到你的權利請與我們聯(lián)系更正!
先在窗體中加入MSComm控件,在部件中引用,迷你版的vb
沒(méi)有,可以下載該控件并注冊,
Option Explicit’強制變量聲明
Private Sub Command1_Click()’按鈕單擊事件
MSComm1.PortOpen =ture ’關(guān)閉串口
MSComm1.CommPort = 1 ’設置串口為com1
MSComm1.Settings = "9600,n,8,1" ’通訊參數 波特率 奇偶校驗 數據位 停止位
MSComm1.InputMode = comInputModeBinary ’二進(jìn)制接收
MSComm1.InBufferCount = 0 ’清空接收緩沖區
MSComm1.RThreshold = 1 ’緩沖區中接收到一個(gè)字符,就產(chǎn)生一次OnComm事件
End Sub <<版權聲明:本文由容源電子網(wǎng)(0u2438cq.cn)整理提供,部分內容來(lái)源于網(wǎng)絡(luò ),如有侵犯到你的權利請與我們聯(lián)系更正!
Private Sub MSComm1_OnComm() ’有數據傳送時(shí)觸發(fā)
Dim w As Variant’定義變量
Dim a,b,c As Byte’定義字節數組
Select Case MSComm1.CommEvent ’’CommEvent屬性:返回最近的通訊事件或錯誤。通過(guò)對它具體屬性值的查詢(xún),我們就可以獲得通訊事件和通 訊錯誤的完整信息。當其值是comEvReceive時(shí)表示接收到數據。 <<版權聲明:本文由容源電子網(wǎng)(0u2438cq.cn)整理提供,部分內容來(lái)源于網(wǎng)絡(luò ),如有侵犯到你的權利請與我們聯(lián)系更正!
Case comEvReceive ’有接收事件
w = MSComm1.Input ’接收到的數據存放到indata里
a = AscB(indata) ’返回indata的值
MSComm1.InBufferCount = 0’ 清空接收緩沖區
End Select
End Sub <<版權聲明:本文由容源電子網(wǎng)(0u2438cq.cn)整理提供,部分內容來(lái)源于網(wǎng)絡(luò ),如有侵犯到你的權利請與我們聯(lián)系更正!
本文地址:http://0u2438cq.cn/dz/21/plc_85.shtml
本文標簽:
猜你感興趣:
無(wú)