通信電源通常被稱為通信系統(tǒng)的心臟,其工作不正常,將造成通信系統(tǒng)故障,甚至導(dǎo)致整個系統(tǒng)癱瘓。因此,為保證整個通信系統(tǒng)的暢通,節(jié)約人力成本和能源損耗,通信電源監(jiān)控系統(tǒng)應(yīng)運(yùn)而生。通信電源監(jiān)控系統(tǒng)對分布的通信電源設(shè)備和空調(diào)機(jī)房進(jìn)行遙測、遙信和遙控,能實(shí)時監(jiān)視和顯示其運(yùn)行參數(shù),并自動監(jiān)測和處理系統(tǒng)內(nèi)各種設(shè)備的故障。
鑒于國外發(fā)達(dá)國家通信電源監(jiān)控系統(tǒng)的研發(fā)工作較早且產(chǎn)品成熟,我國相關(guān)研究工作通常是先借鑒國外的經(jīng)驗(yàn),然后研發(fā)具有自主知識產(chǎn)權(quán)的系統(tǒng)。其中,最關(guān)鍵的問題就是通信協(xié)議的破解。一般的破解思路是通過不斷試探,截獲通信信息,分析其規(guī)律性,進(jìn)而推測得到通信協(xié)議,然后按此協(xié)議發(fā)送指令進(jìn)行驗(yàn)證。這種方法具有一定的盲目性,工作量較大,而且具有一定的局限性。
文中在破解美國Power-One通信電源監(jiān)控系統(tǒng)時,以數(shù)據(jù)鏈路層通信協(xié)議的一般格式為指導(dǎo),結(jié)合監(jiān)控系統(tǒng)生成的各種文件,通過合理的邏輯推理和分析,破解通信規(guī)約和通信命令,并利用破解的通信命令直接對電源系統(tǒng)實(shí)施監(jiān)控,實(shí)際驗(yàn)證其正確性。這種方法,準(zhǔn)確性高、通用性強(qiáng),而且節(jié)省時間和精力。
1 通信協(xié)議解析
1.1 解析思路
通信協(xié)議(Communication Protoco1)是兩個實(shí)體完成通信或服務(wù)所必須遵循的規(guī)則和約定。協(xié)議定義了數(shù)據(jù)單元使用的格式,信息單元應(yīng)該包含的信息與含義,連接方式,信息發(fā)送和接收的時序,從而確保網(wǎng)絡(luò)中數(shù)據(jù)順利地傳送到確定的地方。以下對Power-One通信電源監(jiān)控系統(tǒng)所采用的通信協(xié)議進(jìn)行破解。
PowCom是一個基于Windows的通信軟件,用于實(shí)現(xiàn)對Power-One的AC/DC電源變換系統(tǒng)的監(jiān)控。破解時,運(yùn)行上位機(jī)軟件PowCom,并利用串口監(jiān)聽工具,截獲Power-One通信電源監(jiān)控系統(tǒng)上位機(jī)(PC)與下位機(jī)(即電源控制模塊PCU)之間的通信信息,即捕獲下行(PC→PCU)和上行(PCU→PC)數(shù)據(jù)幀。對于截獲的上下行數(shù)據(jù)幀,首先根據(jù)高級數(shù)據(jù)鏈路控制規(guī)程HDLC幀結(jié)構(gòu)如圖1所示,推理出對通信協(xié)議的格式和各種功能命令;然后根據(jù)菜單界面和監(jiān)控系統(tǒng)生成的各種文件,如配置文件(.pcg)、參數(shù)文件(.prm)、測試文件(.tst)和告警歷史文件等,推理出各種功能命令中數(shù)據(jù)字段的格式。
1.2 協(xié)議破解
基于上述思路,就可以進(jìn)行具體的解析。
首先,將Power-One通信電源監(jiān)控系統(tǒng)上位機(jī)(PC)通過串口Com1與PCU相連,運(yùn)行上位機(jī)軟件PowCom,選擇通信(Communication)菜單下的菜單項(xiàng)端口設(shè)置(Port Setup),選擇COM1口,波特率9 600 bit·s-1,如圖2所示,然后選擇該菜單下的菜單項(xiàng)Direct直接通信(Communicat ion)實(shí)現(xiàn)與PCU連接如圖3所示。注意,通信采用10 bit異步方式:起始位1 bit,數(shù)據(jù)位8 bit,停止位1bil,無校驗(yàn),波特率9 600 bit·s-1,必須與PCU設(shè)置相同。
依次選擇PowCom各個菜單下的各種監(jiān)控功能,包括通信(Communication),如圖3所示;監(jiān)控(Supervision),如圖4所示;使用工具(Uti lities),如圖5所示,菜單下的各種監(jiān)控功能。參照圖1的一般格式,分析用SUDT SerialTrace Monitor截獲的上下行數(shù)據(jù)幀,推斷通信協(xié)議的格式如下:每個數(shù)據(jù)幀的第一個Byte均為FFH,由此推斷為標(biāo)志字段。最后一個Byte可能是校驗(yàn)和字段,經(jīng)過計(jì)算,它是幀中其他字段的校驗(yàn)和。第2個Byte很顯然是幀長字段。第3和第4個Byte在上下行數(shù)據(jù)幀中數(shù)值總是顛倒,初步推斷為發(fā)送地址字段和接收地址字段,選擇對不同整流模塊進(jìn)行監(jiān)控操作,證明了上述推斷,其中,上位機(jī)的地址始終為00H,下行接收地址為整流模塊的地址。第5個Byte在下行數(shù)據(jù)幀時為01H,而在上行數(shù)據(jù)幀時為00H,推斷為應(yīng)答字段,即00H表示無須應(yīng)答;01H表示必須應(yīng)答。第6個Byte始終為01H,可能是結(jié)構(gòu)控制字段。第7個Byte對每個監(jiān)控功能而言都是惟一的,而在每對上下行數(shù)據(jù)幀中相同,故此推斷為功能碼或命令字字段。最后,第7個Byte與最后一個Byte之間的部分顯然為數(shù)據(jù)字段,其長度為(幀長-8)。
綜合以上的分析推理結(jié)果,得到Power-One通信電源上下位機(jī)間通信協(xié)議的格式,如表1所示。
其中,標(biāo)志字段表示每一幀的開始,取值恒為FFH。幀長字段為幀中所有字段的字節(jié)數(shù),取值范圍為08H~FFH。發(fā)送地址和接收地址字段分別表示數(shù)據(jù)發(fā)送和接收者的地址,上位機(jī)監(jiān)控系統(tǒng)地址始終為00H,整流模塊的地址為01H~FFH。應(yīng)答字段表示接受者是否需要對接收的數(shù)據(jù)進(jìn)行回復(fù):00H表示無須回復(fù);01H表示必須回復(fù)。結(jié)構(gòu)控制字段恒為01H。功能碼字段為請求或響應(yīng)數(shù)據(jù)幀的功能編碼,取值范圍為00H~FFH。數(shù)據(jù)字段為請求或應(yīng)答數(shù)據(jù),數(shù)據(jù)格式取決于具體的監(jiān)控功能。校驗(yàn)和字段對幀中其他字段按字節(jié)計(jì)算的校驗(yàn)和,用于檢測數(shù)據(jù)幀在傳輸中是否出現(xiàn)差錯。
在推斷通信協(xié)議的同時,根據(jù)菜單功能與上下行數(shù)據(jù)幀的對應(yīng)關(guān)系,可以解析出Power-One通信電源上下位機(jī)間的各種通信命令,如表2所示。
1.3 數(shù)據(jù)字段解析
在解析出表2中所列出的功能命令以后,下一步的工作就是解析出每一種命令數(shù)據(jù)字段的格式。這本來是一個耗時且繁瑣的過程。但是,只要掌握文中的基本分析方法,特別是有效地利用監(jiān)控系統(tǒng)生成的各種文件,最終能夠獲得令人滿意的結(jié)果。
1.3.1 設(shè)置日期/時間、日期/時間設(shè)置完成
通過上位機(jī)PowCom菜單命令將日期和時間設(shè)置為2011年3月15日15時13分時,如圖6所示,截獲如下的設(shè)置日期/時間下行數(shù)據(jù)幀
將數(shù)據(jù)字段與預(yù)設(shè)定的日期和時間比對后,推斷數(shù)據(jù)字段的格式如表3所示.
其中,YY為年份(0~99);MM為月份(1~12);DD為日(1~31);hh為小時(0~23);mm為分鐘(0~59),所有數(shù)據(jù)Byte以16進(jìn)制表示。注意應(yīng)答字段為01H,表示PCU必須回復(fù)。
此時,截獲到PCU回復(fù)如下的日期/時間設(shè)置完成數(shù)據(jù)幀,表示日期/時間設(shè)置成功。注意應(yīng)答字段為00H,表示PC無須回復(fù)。
FF 08 00 01 00 01 07 10
1.3.2 設(shè)置/更改密碼、密碼設(shè)置完成
通過上位機(jī)PowCom菜單命令將密碼設(shè)置或更改為8888時,如圖7所示,截獲如下的設(shè)置/更改密碼下行數(shù)據(jù)幀
顯然,數(shù)據(jù)字段為密碼數(shù)字的ASCII碼,因?yàn)槭M(jìn)制0~9對應(yīng)的ASCII碼30H~39H。注意應(yīng)答字段為01H,表示PCU必須回復(fù)。
此時,截獲到PCU回復(fù)如下的密碼設(shè)置完成上行數(shù)據(jù)幀,表示密碼設(shè)置成功。注意應(yīng)答字段為00H,表示PC無須回復(fù)。
FF 08 00 01 00 01 08 11
1.3.3 驗(yàn)證密碼、密碼確認(rèn)
當(dāng)通過上位機(jī)PowCom菜單命令輸入錯誤密碼5678時,截獲如下的驗(yàn)證密碼下行數(shù)據(jù)幀
注意應(yīng)答字段為01H,表示PCU必須回復(fù)。此時截獲到PCU回復(fù)如下的密碼確認(rèn)上行數(shù)據(jù)幀
根據(jù)PowCom此時的顯示界面如圖8所示,推斷數(shù)據(jù)字段00H表示密碼錯誤。同樣,應(yīng)答字段為00H,表示PC無須回復(fù)。
當(dāng)通過上位機(jī)PowCom菜單命令輸入正確的密碼8888時,截獲如下驗(yàn)證密碼下行數(shù)據(jù)幀
注意應(yīng)答字段為01H,表示PCU必須回復(fù)。此時截獲到PCU回復(fù)如下的密碼確認(rèn)(password confirmation)上行數(shù)據(jù)幀
數(shù)據(jù)字段01H表示密碼正確。同樣,應(yīng)答字段為00H,表示PC無須回復(fù)。
1.3.4 其他
對于其它數(shù)據(jù)幀的解析,只說明大致的解析方法和過程:在相關(guān)菜單運(yùn)行相應(yīng)的菜單項(xiàng)監(jiān)控功能,將截獲的數(shù)據(jù)幀與菜單項(xiàng)的參數(shù)、配置數(shù)據(jù)等進(jìn)行比對,推斷數(shù)據(jù)字段的格式。另外,在解析很多數(shù)據(jù)幀的數(shù)據(jù)字段時,參考了系統(tǒng)生成的相關(guān)文件。這樣,既節(jié)省了大量的時間,又提高了推理的準(zhǔn)確性。
(1)借助于配置文件(.pcg),解析了與配置相關(guān)的數(shù)據(jù)幀,如表2中序號33~36和39~44。
(2)借助于參數(shù)文件(.prm),解析了與參數(shù)相關(guān)的數(shù)據(jù)幀,如表2中序號1~6。
(3)借助于測試文件(.tst),解析了與測試相關(guān)的數(shù)據(jù)幀,如表2中序號7~12。
(4)借助于告警歷史文件,解析了與告警相關(guān)的數(shù)據(jù)幀,如表2中序號25~28。
2 實(shí)際驗(yàn)證
首先利用串口調(diào)試工具替代PowCom上位機(jī)軟件,直接與下位機(jī)PCU通信;然后將以上解析得到的下行(PC→PCU)數(shù)據(jù)幀逐一經(jīng)串口調(diào)試工具發(fā)出,檢查PCU是否正確響應(yīng),返回正確的上行(PCU→PC)數(shù)據(jù)幀,并正確無誤地完成監(jiān)控工作。
圖9~圖13分別是設(shè)置日期/時間、設(shè)置密碼、請求系統(tǒng)信息、請求歷史告警數(shù)據(jù)和請求系統(tǒng)信息的測試截圖。測試截圖顯示,利用破解的通信命令可以直接與PCU通信,并正確地完成監(jiān)控工作。
以圖9為例加以說明。PC通過串口測試工具向PCU發(fā)送設(shè)置日期/時間下行數(shù)據(jù)幀
通過串口測試工具截獲的PCU回復(fù)如下的日期/時間設(shè)置完成(date/time set)數(shù)據(jù)幀
FF 08 00 01 00 01 07 10
表明設(shè)置日期/時間(set date/time)下行數(shù)據(jù)幀格式正確,PCU能正確識別,并成功設(shè)置日期/時間。
3 結(jié)束語
基于數(shù)鏈層通信協(xié)議一般格式的破解方法,對于各種數(shù)鏈層通信協(xié)議的破解具有通用性。但是,文中的破解結(jié)果具有一定的局限性,原因是Power-One通信協(xié)議的格式和通信命令并不是開放的和通用的。盡管如此,對于通信電源的監(jiān)控管理人員以及通信電源監(jiān)控系統(tǒng)的設(shè)計(jì)人員仍具有一定的理論指導(dǎo)意義。破解是手段而不是目的,下一步的工作是在此基礎(chǔ)上設(shè)計(jì)適合中國國情,而且適應(yīng)通信電源發(fā)展的監(jiān)控系統(tǒng)和通信協(xié)議。通信電源地理上的分散化,必然要求監(jiān)控的分布式,而分布式電源監(jiān)控系統(tǒng)必然要求通信協(xié)議的規(guī)范化和統(tǒng)一化。因此,研究工作的重點(diǎn)是我國通信電源分布式監(jiān)控軟件的設(shè)計(jì)和實(shí)現(xiàn)。