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