• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      串口嗅探技術(shù)研究

      2016-08-22 09:42:38李瑞民
      電視技術(shù) 2016年7期
      關(guān)鍵詞:調(diào)用串口程序

      張 勝,李瑞民

      (上海文化廣播影視集團(tuán)技術(shù)運(yùn)營中心,上海 200041)

      ?

      串口嗅探技術(shù)研究

      張勝,李瑞民

      (上海文化廣播影視集團(tuán)技術(shù)運(yùn)營中心,上海 200041)

      串口的廣泛使用,得益于小到單片機(jī),大到多核CPU的直接支持,所以在設(shè)備中,特別是廣電行業(yè)設(shè)備中,不僅不會(huì)消失,而且還會(huì)長期存在。然而串口通信具有獨(dú)占性,一旦一個(gè)監(jiān)控程序占用了某個(gè)串口,則另外的程序無法使用該串口,這對(duì)于二次開發(fā)、第三方監(jiān)控、設(shè)備共享、硬件設(shè)備的調(diào)試和測(cè)試都十分不利。所以,對(duì)串口嗅探技術(shù)的研究是有必要的,目前國內(nèi)尚無人對(duì)此做出過研究,通過三個(gè)層次,共提出五種串口嗅探技術(shù),每一種串口嗅探技術(shù)都有自己獨(dú)特的地方,但也都有不足之處,但無論是功能上,還是性能上都可以滿足串口嗅探的功能。最后,通過程序的設(shè)計(jì)和測(cè)試,驗(yàn)證了方法的可能性。

      串口嗅探;設(shè)備監(jiān)控;獨(dú)占性;中繼;串口通信

      現(xiàn)在的互聯(lián)網(wǎng)通信中,基于TCP/IP為基礎(chǔ)的網(wǎng)絡(luò)通信方式如日中天,占據(jù)了幾乎所有的通信數(shù)據(jù)量。但是在設(shè)備的監(jiān)控領(lǐng)域中,特別是廣電行業(yè)的網(wǎng)絡(luò)監(jiān)控中,仍然還是有大量的設(shè)備使用串口作為其主要甚至唯一的通信方式。以國內(nèi)某主要的廣電行業(yè)衛(wèi)星地球站為例,站中有600多臺(tái)新老設(shè)備,其中的近80%左右的設(shè)備采用串口進(jìn)行通信。造成這一現(xiàn)象的原因有多種,一是早期的遺留設(shè)備,串口是其主要通信方式;二是大部分硬件設(shè)計(jì)研發(fā)階段中,本身就使用了串口作為上傳和下載程序的主要手段,而這種得天獨(dú)厚的方式也完全沒有必要在隨后的產(chǎn)品中取消掉;三是網(wǎng)口通信并沒有聽上去那么美,以SNMP協(xié)議為例,所有使用該協(xié)議的企業(yè)都需要申請(qǐng)和購買企業(yè)OID的根結(jié)點(diǎn),這會(huì)讓一些成本低,設(shè)計(jì)簡單的設(shè)備望而卻步。因此,無論是理論上,還是實(shí)際不斷出現(xiàn)的廣電設(shè)備中,不難看出,采用串口進(jìn)行通信仍有大量市場(chǎng),未來仍然還是會(huì)有大量的設(shè)備使用串口作為主要通信方式。

      然而,在設(shè)備監(jiān)控的項(xiàng)目開發(fā)中,也會(huì)遇到一些困難。比如串口通信具有獨(dú)占性,某一個(gè)監(jiān)控系統(tǒng)使用了一個(gè)串口,其他監(jiān)控系統(tǒng)則無法再使用該串口[1];反過來,一個(gè)設(shè)備通常只有一個(gè)串口,所以這同時(shí)也意味著該設(shè)備將只能被一個(gè)監(jiān)控系統(tǒng)提供通信。在遇到特殊情況時(shí),上述沖突顯得尤為突出,如某設(shè)備在購買時(shí),設(shè)備所提供的操控臺(tái)或管理程序使用了唯一的這個(gè)串口;再如筆者想以第三方的形式,讀取并備份已占串口所有通信的內(nèi)容;在監(jiān)控系統(tǒng)的開發(fā)和調(diào)試中,如果已有成熟系統(tǒng)處于運(yùn)行中,如果能以監(jiān)聽方式獲得該系統(tǒng)通過該串口與設(shè)備之間的通信,那么對(duì)于開發(fā)新產(chǎn)品,具有事半功倍的效果。

      因此,不難發(fā)現(xiàn),如果能有一個(gè)技術(shù)可以在具有獨(dú)占性的串口通信中,能以主動(dòng)或被動(dòng)的方式讀取到串口中正在通信的數(shù)據(jù),那么就可以從另一個(gè)側(cè)面對(duì)串口進(jìn)行監(jiān)控。這種技術(shù)在TCP/IP網(wǎng)絡(luò)中,通常稱為“嗅探”(Sniffer),所以本處也借用這一詞匯,稱之為“串口嗅探”(COM Sniffer)。

      1 原理分析

      如前所述,通信屬于“點(diǎn)對(duì)點(diǎn)”的通信,所以串口具有獨(dú)占性特點(diǎn),一旦某一個(gè)應(yīng)用占用了某一個(gè)串口,則其他應(yīng)用不能再使用該串口。從網(wǎng)絡(luò)層次上來看,串口只有物理層(Physical Layer)、數(shù)據(jù)鏈路層(DataLink Layer)、應(yīng)用層(Application Layer)3層;從操作系統(tǒng)的角度來看,要與串口通信,需要有串口物理接口、串口驅(qū)動(dòng)程序、串口應(yīng)用程序3層。所以對(duì)串口的嗅探,也分別可以從這3個(gè)層次上進(jìn)行分析和設(shè)計(jì)。

      1.1物理層嗅探

      在物理層,只要將對(duì)應(yīng)的引腳連線,通過簡單地并聯(lián),就可以將一路信號(hào)復(fù)制為兩路信號(hào)。以串口通信中,根據(jù)通信的標(biāo)準(zhǔn),還可以再劃分為RS-232、RS-422和RS-485通信三種主要通信標(biāo)準(zhǔn),每一種的引腳不一樣,所以連線都不一樣。以RS-232為例,引腳2、引腳3、引腳5分別對(duì)應(yīng)著接收(RxD)、發(fā)送(TxD)、地線(GND)[2-4]。那么只要在焊接連線的時(shí)候,同時(shí)在這3個(gè)引腳上焊接2組線,并將每組線分別制作成一個(gè)串口,然后將這2個(gè)串口分別連接到2臺(tái)監(jiān)控主機(jī)的串口上即可。

      這樣做的優(yōu)點(diǎn)是做法直觀,實(shí)現(xiàn)起來也很簡單;缺點(diǎn)也很明顯,如這種焊接會(huì)影響到電氣特性,所以需要設(shè)備的串口必須是高阻串口,即使如此,仍然會(huì)有較大概率增大出錯(cuò)率。另外,2個(gè)主監(jiān)控主機(jī)如果同時(shí)向設(shè)備發(fā)送數(shù)據(jù),會(huì)因數(shù)據(jù)“碰撞”(Collision)而導(dǎo)致失敗。因此,2臺(tái)主機(jī)不能同時(shí)發(fā)送數(shù)據(jù)。不過,這與“嗅探”不沖突,所以這可以作為一種有效的“嗅探”方法,但本文不再深入討論。

      1.2數(shù)據(jù)鏈路層嗅探

      在數(shù)據(jù)鏈路層,重寫一個(gè)串口通信的驅(qū)動(dòng)程序大可不必。通常情況下,一般有三種方式,每一種方法都有一定的優(yōu)勢(shì)和局限性。

      一種就是對(duì)于一些串口開發(fā)的程序,本身就喜歡使用第三方提供的函數(shù)庫文件,例如PComm庫,就是一組廣泛被眾多串口軟件開發(fā)者使用的一種庫文件。監(jiān)控軟件調(diào)用該庫,該庫再調(diào)用驅(qū)動(dòng)程序,最終完成串口通信,如果仿照該庫的頭結(jié)構(gòu)(該結(jié)構(gòu)都在庫的頭文件中),新做一個(gè)PComm庫,新的PComm庫在接收到某個(gè)串口命令以后,即將其保存到第三方文件(如數(shù)據(jù)庫中),然后原封不動(dòng)地調(diào)用原PComm庫(原庫可改成另外一個(gè)名字),即可以“偷梁換柱”的方式,在所有原監(jiān)控軟件不修改的前提下完成“嗅探”。這種方式的優(yōu)點(diǎn)是簡單,缺點(diǎn)是并不是所有的系統(tǒng)都采用PComm庫,所以存在使用上的局限性。

      基于驅(qū)動(dòng)程序通過“鉤子”(Hook)技術(shù)進(jìn)行嗅探[4],即通過特定的函數(shù),將系統(tǒng)中某一API的地址修改為自己所編寫的函數(shù)地址處,這樣系統(tǒng)任何程序在調(diào)用該API的時(shí)候,實(shí)際調(diào)用的不再是原有的API函數(shù),而是自己所編寫的函數(shù)內(nèi)容。當(dāng)然為了在自己處理結(jié)束后,還能繼續(xù)調(diào)用原有的API,可以在修改原有API地址之前,先保存原有地址,在自身被調(diào)用以后,將要處理的事情做完,然后再調(diào)用一下保存的原有API地址,使原有的API功能仍能被執(zhí)行到。采用鉤子技術(shù),在串口的監(jiān)聽上,需要同時(shí)監(jiān)聽CreateFile,ReadFile,WriteFile,CloseHandle共4個(gè)函數(shù),操作系統(tǒng)中這4個(gè)函數(shù)的使用頻率非常大,但根據(jù)CreateFile函數(shù)中“文件名”參數(shù),以及其他函數(shù)的句柄可以判斷是否為對(duì)串口的調(diào)用,對(duì)于不是串口的調(diào)用,只要不處理而直接轉(zhuǎn)向原有API地址即可,對(duì)于串口的調(diào)用,則需要先做一些處理(如寫到日志中)后,再轉(zhuǎn)達(dá)向原有API地址。根據(jù)CreateFile函數(shù)可以知道哪個(gè)程序在使用哪個(gè)串口,根據(jù)ReadFile函數(shù)可以知道有誰在通過串口向主機(jī)發(fā)送數(shù)據(jù),根據(jù)WriteFile函數(shù)可以知道主機(jī)向外界所發(fā)送的數(shù)據(jù),根據(jù)CloseHandle函數(shù)可以知道有哪些串口不再使用。

      第三種方式,即采用第三方的開發(fā)庫或驅(qū)動(dòng)工具實(shí)現(xiàn)“嗅探”。這種方式,如“虛擬串口仿真”VSPE(Virtual Serial Ports Emulator)工具。VSPE是Eterlogic公司出品的一套虛擬串口仿真驅(qū)動(dòng)程序,其作用很強(qiáng)大,即使在一臺(tái)沒有物理串口的計(jì)算機(jī)中,可以創(chuàng)建虛擬串口。并且該虛擬串口可以只接收發(fā)來的數(shù)據(jù),也可以將其轉(zhuǎn)發(fā)出去,借助于這機(jī)制,可以實(shí)現(xiàn)串口數(shù)據(jù)的嗅探,詳細(xì)設(shè)計(jì)參見后面內(nèi)容。

      1.3應(yīng)用層嗅探

      如前所述,串口在應(yīng)用層處于“獨(dú)占”方式,因此直接使用是不可行的。串口通信和通過“中繼”實(shí)現(xiàn)串口嗅探模型如圖1所示。

      圖1 串口通信(上)和通過“中繼”實(shí)現(xiàn)串口嗅探(下)模型

      在圖1中,上半部分是“監(jiān)控程序主機(jī)”和“被監(jiān)控的設(shè)備”之間,通過串口連接線進(jìn)行正常的數(shù)據(jù)通信,二者之間的數(shù)據(jù)流不管是虛線和實(shí)線,只是表示數(shù)據(jù)流轉(zhuǎn)的方向。如果將上半部分的連接圖換成下半部分的連接圖,然后在這兩段中的中間“樞紐”區(qū)放一個(gè)無條件轉(zhuǎn)發(fā)雙方通信數(shù)據(jù)的串口程序作為“中繼器”(Repeater),即該程序無論收到哪一串口上的數(shù)據(jù),都將無條件將其轉(zhuǎn)發(fā)到另一串口上。那么,由于串口通信是“端到端”的通信,因而“被監(jiān)控設(shè)備”并不知道,也不需要知道這些數(shù)據(jù)是來自于“串口嗅探主機(jī)”,還是“監(jiān)控程序主機(jī)”。當(dāng)然,回到“串口嗅探”的目的上來,這樣看似“畫蛇添足”的設(shè)計(jì),其目的不是為了讓設(shè)計(jì)變得更復(fù)雜,而是讓轉(zhuǎn)發(fā)程序在轉(zhuǎn)發(fā)的同時(shí),將轉(zhuǎn)發(fā)的數(shù)據(jù)作為嗅探到的數(shù)據(jù),或偵聽,或保存,或?yàn)槠渌绦蛩谩?/p>

      2 程序設(shè)計(jì)和測(cè)試

      上述各方法各有利弊,在實(shí)際的使用中,可以根據(jù)具體的需要酌情使用。上述各方法中,“物理層嗅探”性能不穩(wěn)定,因此只能用于簡單的臨時(shí)測(cè)試環(huán)境中;“網(wǎng)絡(luò)層嗅探”雖然實(shí)現(xiàn)起來并不難,但需要一個(gè)額外的雙串口主機(jī),因而造成了較大的資源浪費(fèi),因此也并不可取。對(duì)于“數(shù)據(jù)鏈路層嗅探”,也如前所述,重寫一個(gè)帶過濾功能的新PComm庫和“鉤子”都具有一定的難度,不適合于普通的開發(fā)人員。相比之下,“虛擬串口仿真”VSPE是權(quán)衡利弊之后的一個(gè)不錯(cuò)選擇,所以下面以該方式設(shè)計(jì)程序并進(jìn)行測(cè)試。

      在VSPE系統(tǒng)中,有一個(gè)稱為“連接器”(Connector)的概念,使用該連接器,系統(tǒng)會(huì)在其中創(chuàng)建一個(gè)“虛擬”的串口。之所以叫“連接器”,是這個(gè)串口允許兩個(gè)程序分別打開,并且其中一個(gè)程序發(fā)出的任何內(nèi)容,“連接器”會(huì)無條件轉(zhuǎn)發(fā)給另一個(gè)程序。這正是筆者想要的功能,只可惜該“連接器”只負(fù)責(zé)轉(zhuǎn)發(fā),而不會(huì)將其中所傳的數(shù)據(jù)保存或轉(zhuǎn)發(fā)出現(xiàn),為了實(shí)現(xiàn)這兩個(gè)功能,可以通過上面“應(yīng)用層嗅探”中的方法,采用“曲線”的方式實(shí)現(xiàn)串口的嗅探。如圖2所示就是這一設(shè)計(jì)思路的模型。

      圖2 基于VSPE“連接器”的串口嗅探原理圖

      在圖2中,原本“監(jiān)控程序”程序直接通過“物理串口A”與“被監(jiān)控設(shè)備”進(jìn)行通信,現(xiàn)在通過VSPE技術(shù)創(chuàng)建了一個(gè)“連接器”(即圖中“VSPE虛擬串口B”,以下簡稱“虛擬串口B”),然后“監(jiān)控程序”不再直接打開“物理串口A”,而是打開這個(gè)“虛擬串口B”,根據(jù)前面對(duì)“連接器”的描述,這時(shí),如果“串口嗅探程序”也同時(shí)開了這個(gè)“虛擬串口B”,那么“監(jiān)控程序”發(fā)出的所有內(nèi)容,都會(huì)被這個(gè)“虛擬串口B”無條件轉(zhuǎn)給“串口嗅探程序”,反之亦然。這時(shí),如果結(jié)合前面的“應(yīng)用層嗅探”中的方法,將“串口嗅探程序”做成圖1中“串口嗅探主機(jī)”的角色,那么該程序又可以在完成嗅探任務(wù)的同時(shí),將所有收到的信息,經(jīng)由“物理串口A”轉(zhuǎn)發(fā)到“被監(jiān)控的設(shè)備”中。反過來,“被監(jiān)控的設(shè)備”中的信息,也會(huì)反向經(jīng)由“物理串口A”轉(zhuǎn)發(fā)“串口嗅探程序”中。

      在圖2中,“虛擬串口B”和“串口嗅控程序”所完成的工作都是轉(zhuǎn)發(fā),但前者是由VSPE完成的,不具備日志和過濾功能,后一個(gè)則具備“嗅探”的功能;這里的“串口嗅控程序”和圖1中“應(yīng)用層嗅探”中的“串口嗅探主機(jī)”,無論是從運(yùn)行原理中,還是所實(shí)現(xiàn)的功能上,二者都是一樣的,但與后者相比,這種方式少了一臺(tái)具有兩個(gè)串口的主機(jī),取而代之的是在運(yùn)行前,安裝一個(gè)VSPE的驅(qū)動(dòng)來同時(shí)對(duì)接圖2中的“監(jiān)控程序”和“串口嗅探程序”。

      為了驗(yàn)證上述理論,筆者特編寫了一個(gè)程序進(jìn)行驗(yàn)證,該程序開源[5],運(yùn)行在Windows XP及以上版本的操作系統(tǒng)上。所安裝的VSPE可以從“www.eterlogic.com”下載試用版。

      程序主界面如圖3所示,主界面根據(jù)分組框被分為3個(gè)部分,其中“日志”分組框即為雙方通信的嗅探內(nèi)容。其內(nèi)容為一個(gè)列表,其中“方向”字段有兩種,一種是“發(fā)出”,即由本機(jī)發(fā)出到串口遠(yuǎn)端的命令,另一種是“接入”,即串口遠(yuǎn)端發(fā)送到本機(jī)的命令;“時(shí)間”字段即為具體的時(shí)間;“命令”字段即為通信過程中傳輸?shù)脑敿?xì)內(nèi)容。下面的“串口信息”分組框中,“虛擬串口值”即為“虛擬串口”的值,而“物理串口值”即為圖2中的“物理串口”的值。實(shí)例中,“虛擬串口”值為1,本地的“物理串口”值為8。

      圖3 基于“連接器”的串口監(jiān)聽程序主界面(截圖)

      經(jīng)過測(cè)試,程序可以良好地嗅探到“監(jiān)控程序”和“被監(jiān)控設(shè)備”之間的所有通信數(shù)據(jù),不過,由于程序在實(shí)現(xiàn)“中繼”功能時(shí)存在“轉(zhuǎn)發(fā)”時(shí)功能,所以所轉(zhuǎn)發(fā)的數(shù)據(jù)會(huì)有一定的延遲,但對(duì)于設(shè)備監(jiān)控本身的需要,這種延遲可以忽略,并不影響整體的性能。

      3 小結(jié)

      當(dāng)今串口仍然在數(shù)據(jù)通信領(lǐng)域占有一定的地位,究其原因,就是“簡單”。不需要協(xié)議連接、通信協(xié)議與鏈路的分離,以及小于幾元錢的單片機(jī),大到幾千元的ARM板,都先天支持串口的通信,因而至今串口通信仍然活躍在大多數(shù)中低端的設(shè)備中。即使是目前的研究熱點(diǎn)“物聯(lián)網(wǎng)”設(shè)備,在設(shè)備CPU不能良好地支持TCP/IP的網(wǎng)口通信時(shí),退而改用串口通信方式,也不失為一種較好的解決辦法。鑒于此,對(duì)基于串口的監(jiān)控程序測(cè)試、開發(fā)也不會(huì)停止,上述問題就會(huì)存在,因而無論是想通過監(jiān)聽技術(shù)獲得二者之間的通信數(shù)據(jù),進(jìn)而進(jìn)行協(xié)議分析;還是想在安全級(jí)別較高的場(chǎng)合中,對(duì)于通信中的數(shù)據(jù),常常需要第三方軟件客觀地記錄,都需要通過“串口嗅探”技術(shù)完成。而本文正是基于這一需求,提出了幾種“串口嗅探”技術(shù),借以拋磚引玉,引發(fā)更多的研究。

      [1]宋文好,徐志江. Modbus RTU串口通信在工業(yè)自動(dòng)化系統(tǒng)中的應(yīng)用[J].有線電視技術(shù),2012(3):61-63.

      [2]葉勇,沈三民,郭錚.基于PCI總線的高速串口通信卡的設(shè)計(jì)[J].電視技術(shù),2013,37(3):82-85.

      [3]潘方.RS232串口通信在PC機(jī)與單片機(jī)通信中的應(yīng)用[J].現(xiàn)代電子技術(shù),2012(13):69-71.

      [4]劉興淮,陳侃侃,梁敏.基于鍵盤鉤子技術(shù)的HIS語音報(bào)價(jià)系統(tǒng)[J].北京生物醫(yī)學(xué)工程,2014(1):81-83.

      [5]李瑞民.獨(dú)辟蹊徑的編程思維——“拿來主義”編程[M].北京:電子工業(yè)出版社,2014.

      責(zé)任編輯:閆雯雯

      Sniffer technology of serial port communication

      ZHANG Sheng, LI Ruimin

      (ShanghaiMediaGroupCo.Ltd,Shanghai200041,China)

      Serial port (COM) interface has been used in communication field between computer and device in widely common usage, supported from microcontrollers to multi-core CPU. So in the equipment communication interface, especially the broadcast and television industry equipment, transfer data by serial port is not only will not disappear, but also long-term existence. However, the communication from serial port is exclusive,once a monitoring program occupies a serial,another program cannot use this serial port at the same time, it is not advantage of using for some aspect,for example,the secondary development,the third party software monitoring the same serial port, serial port sharing of device, and debugging and testing a device from serial port. So it's necessary to research the technology of serial port sniffer, there is no such studies have been made in such aspect. In this paper, it put forward a total of five serial port sniffer technologies, each one has its own unique feature, at the same time it has some shortcomings. Finally, through the design and testing of a special software program, it proves both functionality and performance are feasible and effective.

      serial port sniffer;device monitoring;interface exclusive;relay;COM communication

      TN919.83

      ADOI:10.16280/j.videoe.2016.07.009

      上海市廣播電視臺(tái)項(xiàng)目(“播出智能監(jiān)管與應(yīng)急輔助系統(tǒng)”)

      2016-01-21

      文獻(xiàn)引用格式:張勝,李瑞民. 串口嗅探技術(shù)研究[J].電視技術(shù),2016,40(7):36-39.

      ZHANG S, LI R M. Sniffer technology of serial port communication [J].Video engineering,2016,40(7):36-39.

      猜你喜歡
      調(diào)用串口程序
      淺談AB PLC串口跟RFID傳感器的通訊應(yīng)用
      核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
      試論我國未決羈押程序的立法完善
      LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
      “程序猿”的生活什么樣
      英國與歐盟正式啟動(dòng)“離婚”程序程序
      基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
      USB接口的多串口數(shù)據(jù)并行接收方法探索
      基于藍(lán)牙串口適配器的GPS接收機(jī)與AutoCAD的實(shí)時(shí)無線通信
      創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
      邻水| 沙河市| 射洪县| 金沙县| 封丘县| 肥城市| 福海县| 定兴县| 南汇区| 德庆县| 乌审旗| 潞城市| 澳门| 定远县| 德安县| 福州市| 桂阳县| 济宁市| 平阴县| 黄浦区| 仁布县| 错那县| 辛集市| 汾阳市| 黑龙江省| 广德县| 札达县| 通山县| 宁蒗| 潼关县| 韶关市| 松滋市| 云阳县| 西城区| 平塘县| 化州市| 德令哈市| 武山县| 宁明县| 时尚| 公安县|