版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基于數(shù)據(jù)包分析的網(wǎng)頁(yè)還原技術(shù)研究摘要:在信息社會(huì)中,信息是維持生產(chǎn)活動(dòng)、經(jīng)濟(jì)活動(dòng)以及社會(huì)活動(dòng)的重要資源,對(duì)政治、經(jīng)濟(jì)和文化都有著深遠(yuǎn)影響。不斷探索網(wǎng)絡(luò)信息監(jiān)聽(tīng)與還原技術(shù)有助于建立可靠、高效的信息安全保障體系,對(duì)于維護(hù)社會(huì)政治穩(wěn)定和國(guó)家信息安全具有重要的現(xiàn)實(shí)意義。結(jié)合應(yīng)用環(huán)境和實(shí)際需求,本文探討了網(wǎng)絡(luò)數(shù)據(jù)包信息還原涉及的相關(guān)技術(shù),包括幾個(gè)方面的內(nèi)容:數(shù)據(jù)包捕獲技術(shù)、數(shù)據(jù)包分析技術(shù)、數(shù)據(jù)包重組技術(shù)、http信息識(shí)別技術(shù)。針對(duì)數(shù)據(jù)包捕獲討論了幾種捕獲機(jī)制;針對(duì)數(shù)據(jù)包分析技術(shù),介紹基本的網(wǎng)絡(luò)協(xié)議原理,TCP/IP協(xié)議族的介紹,對(duì)于每個(gè)協(xié)議的基本數(shù)據(jù)結(jié)構(gòu)進(jìn)行闡述;針對(duì)數(shù)據(jù)包重組技術(shù),討論如何將無(wú)序的數(shù)據(jù)片流有序化;針對(duì)HTTP信息識(shí)別技術(shù)討論了超文本傳輸協(xié)議HTTP(HyperTextTransferProtocol),描述了協(xié)議的組成、相關(guān)參數(shù)、相關(guān)頭域字段。實(shí)際運(yùn)行結(jié)果表明,本系統(tǒng)能對(duì)現(xiàn)有基于HTTP/1.0和HTTP/1.1協(xié)議的網(wǎng)頁(yè)信息進(jìn)行有效還原,運(yùn)行穩(wěn)定,性能良好。關(guān)鍵詞:網(wǎng)絡(luò)數(shù)據(jù)包捕獲;數(shù)據(jù)包重組;http信息提取
WebReductiontechnologyresearchbasedontheanalysisofthedatapacketsAbstract:Intheinformationsociety,informationistheimportantresourceformaintainingproduction,social,economicandactivities,andithasbecomethebaseofpolitical,economicandculturalfields.Explorationmethodsandtechniquesfornetworkinformationsniffingcontributestotheestablishmentofareliableandefficientnetworkinformationsecuritysystem,italsohelpsformaintainingsocialandpoliticalstability,aswellaseconomicdevelopment.Baseonthedemandanalysisandtheapplicationenvironment,thispaperdiscussestherelatedtechnologieswhichisinvolvedinthesystemofrecoveringtheinformationofnetwork,suchasthetechnologyofcapturingpackets,thetechnologyofanalysisingpackets,thetechnologyofrestructuringpacketsandthetechnologyofrecognizingHTTP'spacketsInthemoduleofcapturingpackets,itmainlyfoucuesonseveralcapturemechanisms.Inthemoduleofanalysisingpackets,Iintroducedthebasicprincipleofnetworkprotocol,someintroductionofTCP/IPprotocol,alsodescribedthebasicdatastructureforeachagreement.Inthemoduleofrestructuringpacket,itfocuesonhowtoorderthedisorderpackets.IntherecognizingHTTP'sinformation,IdiscussedsomethingaboutHTTPprotocolanddescribedthecompositionofprotocol,therelatedparametersintheagreementandrelatedfields.ExperimentsshowthatitcanrecovertheWebinformationbasedonHTTP/1.0andHTTP/1.1effectively,stablyandexcellently.Keywords:capturenetworkpacket,restructurepackets,extractHTTPinformation
目錄TOC\o"1-3"\h\u16781第1章緒論 1125391.1研究背景與意義 1210401.2Web技術(shù)的發(fā)展現(xiàn)狀與信息還原技術(shù)研究水平 1282291.2.1Web技術(shù)的發(fā)展現(xiàn)狀 1287551.2.2信息還原技術(shù)研究水平 2198661.3研究?jī)?nèi)容和目標(biāo) 314134第2章設(shè)計(jì)分析 4271952.1需求分析 4103192.2模塊設(shè)計(jì) 413467第3章詳細(xì)設(shè)計(jì)過(guò)程 662203.1網(wǎng)絡(luò)數(shù)據(jù)包捕獲模塊 6324913.1.1網(wǎng)絡(luò)數(shù)據(jù)包捕獲技術(shù) 6228343.1.2數(shù)據(jù)包捕獲模塊實(shí)現(xiàn) 7105503.2網(wǎng)絡(luò)協(xié)議分析技術(shù) 97843.2.1網(wǎng)絡(luò)協(xié)議原理 9188873.2.2TCP/IP核心協(xié)議 989623.2.3網(wǎng)絡(luò)數(shù)據(jù)包分解過(guò)程 10206353.3網(wǎng)絡(luò)數(shù)據(jù)包重組分析 1360483.4HTTP協(xié)議信息還原模塊 1482123.4.1HTTP請(qǐng)求頭分析 15182673.4.2HTTP響應(yīng)頭分析 17174223.4.3數(shù)據(jù)包信息還原模塊 194294第4章調(diào)試總結(jié) 21321804.1捕獲數(shù)據(jù)包模塊 21209884.1.1問(wèn)題總結(jié) 21321574.1.2捕獲數(shù)據(jù)包模塊運(yùn)行結(jié)果 21215684.2數(shù)據(jù)包重組模塊 2228004.2.1問(wèn)題總結(jié) 2285854.2.2數(shù)據(jù)包重組模塊運(yùn)行結(jié)果 23118934.3數(shù)據(jù)包還原模塊 23213724.3.1問(wèn)題總結(jié) 2318424.3.2數(shù)據(jù)包還原模塊運(yùn)行結(jié)果 2412572第5章總結(jié) 2671525.1已完成的工作 26150225.2展望 2613810致謝 277709參考文獻(xiàn) 2830309附錄1 29第1章緒論1.1研究背景與意義今天Web使得全世界的人們以史無(wú)前例的巨大規(guī)模相互交流,不論相距遙遠(yuǎn)的人們還是不同年代的人們都可以通過(guò)網(wǎng)絡(luò)彼此認(rèn)識(shí)交友,甚至改變他們對(duì)待小事的態(tài)度以及精神。Web龐大的網(wǎng)絡(luò)體系使得情感經(jīng)歷、政治觀點(diǎn)、文化習(xí)慣、表達(dá)方式、商業(yè)建議、藝術(shù)、攝影、文學(xué)等實(shí)現(xiàn)了低投入的數(shù)據(jù)共享?;ヂ?lián)網(wǎng)已經(jīng)發(fā)展成為世界上資料最多、門(mén)類(lèi)最全、規(guī)模最大的信息庫(kù)和全球范圍內(nèi)傳播信息的主要渠道。在全世界步入信息時(shí)代的今天,社會(huì)發(fā)展從有形產(chǎn)業(yè)逐漸向無(wú)形產(chǎn)業(yè)轉(zhuǎn)變,一個(gè)國(guó)家的政治、經(jīng)濟(jì)、軍事、文化等方方面面,都離不開(kāi)信息,信息已成為社會(huì)發(fā)展中不可缺少的戰(zhàn)略資源和基本生活要素。據(jù)國(guó)外數(shù)據(jù)統(tǒng)計(jì)[1],在開(kāi)通互聯(lián)網(wǎng)辦公的企業(yè)中,企業(yè)員工平均每天有超過(guò)50%的工作時(shí)間花在上網(wǎng)聊天,瀏覽娛樂(lè)、購(gòu)物等網(wǎng)站或處理個(gè)人事務(wù),其花于工作事務(wù)而是用互聯(lián)網(wǎng)的時(shí)間只有25%左右。而且隨著互聯(lián)網(wǎng)海量信息的廣泛傳播,網(wǎng)絡(luò)信息內(nèi)容的安全問(wèn)題備受關(guān)注。利用網(wǎng)頁(yè)、電子公告欄等方式傳播有害信息甚至泄露公司機(jī)密、國(guó)家機(jī)密的例子層出不窮。綜上所述,網(wǎng)絡(luò)信息還原[2]的重要性和緊迫性已經(jīng)刻不容緩。為了維護(hù)我國(guó)的信息安全,遏制不良信息的傳播,必須加大對(duì)網(wǎng)絡(luò)信息監(jiān)控與管理的力度,對(duì)互聯(lián)網(wǎng)上的信息內(nèi)容進(jìn)行自動(dòng)審查、過(guò)濾,防止不良信息的傳播,規(guī)范網(wǎng)絡(luò),推進(jìn)網(wǎng)絡(luò)健康文明發(fā)展。因此,對(duì)因特網(wǎng)中一些重要數(shù)據(jù)信息進(jìn)行還原和提取,是保證網(wǎng)絡(luò)應(yīng)用的健康發(fā)展和打擊網(wǎng)絡(luò)犯罪的一個(gè)重要手段[3]。實(shí)時(shí)監(jiān)控[4]所在網(wǎng)絡(luò)的HTTP通訊,當(dāng)網(wǎng)絡(luò)上出現(xiàn)非法內(nèi)容的HTTP通訊時(shí),將捕獲的非法內(nèi)容保存到數(shù)據(jù)庫(kù),向網(wǎng)絡(luò)安全管理部門(mén)報(bào)告,以便及時(shí)保護(hù)事業(yè)單位及國(guó)家的利益,已顯得十分有必要。1.2Web技術(shù)的發(fā)展現(xiàn)狀與信息還原技術(shù)研究水平1.2.1Web技術(shù)的發(fā)展現(xiàn)狀自第一個(gè)Web[5]瀏覽器和服務(wù)器于1991年問(wèn)世以來(lái),它便以驚人的速度發(fā)展。1993年初,Web僅有約50臺(tái)服務(wù)器。隨著可顯示文本和圖像的圖形用戶界面的引入,Web呈現(xiàn)出爆炸式增長(zhǎng)。到1993年底,Web服務(wù)器數(shù)量增長(zhǎng)了10倍。同時(shí),Web占有了Internet通信總量的1%。而到20世紀(jì)90年代末,Web已占有了Internet通信總量的75%,Web用戶的數(shù)量增至數(shù)億,Web站點(diǎn)的數(shù)量則達(dá)到幾百萬(wàn)。保守估計(jì),有不止10億的統(tǒng)一資源定位符(URL)可供公眾使用。另外在私人機(jī)構(gòu)中,還有難以計(jì)數(shù)的從內(nèi)部訪問(wèn)的URL?;赪eb圖形用戶界面和容易發(fā)布更新內(nèi)容的特征,引起了用戶和公司的訪問(wèn)信息方式的急劇變化。Web使商家能更容易將自己的商機(jī)擴(kuò)展到更為廣闊的市場(chǎng),也使得客戶可通過(guò)網(wǎng)絡(luò)瀏覽產(chǎn)品信息和進(jìn)行購(gòu)物。許多新公司使用Web作為自己和用戶接觸的主要途徑。此外,Web還成為一種開(kāi)放式市場(chǎng),以拍賣(mài)、聊天室、游戲的形式,供用戶直接交流。Web當(dāng)初的開(kāi)發(fā)宗旨是向公眾提供信息,如今Web正逐漸使用于機(jī)構(gòu)內(nèi)部連接用戶和私人或?qū)S脭?shù)據(jù)。例如,許多公司通過(guò)內(nèi)部的Web站點(diǎn),為雇員提供訪問(wèn)有關(guān)工資和福利的信息數(shù)據(jù)庫(kù),內(nèi)部Web站點(diǎn)的數(shù)量已超過(guò)了公眾網(wǎng)頁(yè)數(shù)量。內(nèi)部Web站點(diǎn)的增長(zhǎng),也凸顯出Web與Internet的不同。雇員可將自己的計(jì)算機(jī)不必連到Internet而直接連接到專(zhuān)用網(wǎng)上,甚至不允許Internet訪問(wèn)其內(nèi)部網(wǎng)絡(luò)。盡管如此,Internet仍與Web緊密相連。Internet提供了一個(gè)全球通信的基礎(chǔ)設(shè)施,使得Web客戶機(jī)可訪問(wèn)遍布世界各地的各種Web服務(wù)器[6]。1.2.2信息還原技術(shù)研究水平據(jù)中國(guó)網(wǎng)報(bào)道,胡錦濤在中國(guó)科學(xué)院中國(guó)工程院院士大會(huì)上的講話中指出:大力發(fā)展國(guó)家安全和公共安全科學(xué)技術(shù)。要加快發(fā)展空間安全、海洋安全、生物安全、信息網(wǎng)絡(luò)安全技術(shù),提高對(duì)傳統(tǒng)和非傳統(tǒng)國(guó)家安全和公共安全的監(jiān)測(cè)、預(yù)警、應(yīng)對(duì)、管理能力,加強(qiáng)安全生產(chǎn)技術(shù)研究和推廣,構(gòu)建先進(jìn)國(guó)家安全和公共安全體系,有效防范對(duì)人民生活和生態(tài)環(huán)境的生物威脅,維護(hù)信息和網(wǎng)絡(luò)空間安全,維護(hù)國(guó)家利益,捍衛(wèi)國(guó)家主權(quán),保障社會(huì)穩(wěn)定。目前網(wǎng)絡(luò)的實(shí)時(shí)監(jiān)控、檢測(cè)和信息還原技術(shù)已受到全球重視。以美國(guó)為首的信息發(fā)達(dá)國(guó)家,為了在信息化浪潮中占據(jù)先機(jī),打擊網(wǎng)絡(luò)犯罪和網(wǎng)絡(luò)恐怖活動(dòng),竊取他國(guó)秘密和信息,搞信息霸權(quán)等,已經(jīng)建立和完善其信息監(jiān)控法律法規(guī)制度,并頒布了相應(yīng)的法律和法令[7],開(kāi)始實(shí)施相關(guān)網(wǎng)絡(luò)監(jiān)控項(xiàng)目,對(duì)關(guān)鍵性的信息活動(dòng)進(jìn)行全球性的監(jiān)視[8]。目前,我國(guó)網(wǎng)絡(luò)安全監(jiān)控系統(tǒng)已取得成就。于2011年1月11日召開(kāi)的國(guó)家科學(xué)技術(shù)獎(jiǎng)勵(lì)大會(huì)上,由國(guó)防科技大學(xué)牽頭研制的"大規(guī)模網(wǎng)絡(luò)安全監(jiān)控?cái)?shù)據(jù)庫(kù)系統(tǒng)"喜獲國(guó)家科技進(jìn)步二等獎(jiǎng)。該成果推出4年來(lái),已經(jīng)廣泛應(yīng)用于中央、地方等多級(jí)政府部門(mén)和相關(guān)單位,為國(guó)家網(wǎng)絡(luò)安全作出了重要貢獻(xiàn)。1.3研究?jī)?nèi)容和目標(biāo)本文首先從網(wǎng)絡(luò)安全技術(shù)中的網(wǎng)絡(luò)數(shù)據(jù)包捕獲技術(shù)入手,然后通過(guò)協(xié)議分析技術(shù)重組相關(guān)數(shù)據(jù)報(bào)信息,最后提取應(yīng)用層http負(fù)載來(lái)達(dá)到對(duì)網(wǎng)絡(luò)信息的還原。本文的研究?jī)?nèi)容歸納起來(lái)有:對(duì)網(wǎng)絡(luò)數(shù)據(jù)包捕獲技術(shù)做基礎(chǔ)知識(shí)的介紹,如捕獲機(jī)制以及WinPcap開(kāi)發(fā)包的簡(jiǎn)單介紹。網(wǎng)絡(luò)協(xié)議原理的簡(jiǎn)單介紹、TCP/IP協(xié)議分層及其協(xié)議分布,網(wǎng)絡(luò)數(shù)據(jù)包分解過(guò)程以及各層數(shù)據(jù)包的組成部分,數(shù)據(jù)包重組原理。HTTP協(xié)議數(shù)據(jù)的識(shí)別與還原。本設(shè)計(jì)實(shí)現(xiàn)的網(wǎng)頁(yè)信息還原系統(tǒng)立足于準(zhǔn)確、高效、穩(wěn)定,涵蓋網(wǎng)絡(luò)數(shù)據(jù)包捕獲、分析、重組和網(wǎng)頁(yè)信息還原等4方面內(nèi)容,致力于網(wǎng)頁(yè)還原準(zhǔn)確率高、穩(wěn)定性好且硬件要求低。
第2章設(shè)計(jì)分析2.1需求分析我國(guó)著名計(jì)算機(jī)專(zhuān)家沈昌祥院士指出":信息安全保障能力是21世紀(jì)綜合國(guó)力、經(jīng)濟(jì)競(jìng)爭(zhēng)實(shí)力和生存能力的重要組成部分,是世紀(jì)之交世界各國(guó)在奮力攀登的制高點(diǎn)"。網(wǎng)絡(luò)安全管理與情報(bào)收集作為衡量信息安全保障能力的重要指標(biāo),是我國(guó)優(yōu)先進(jìn)行研究發(fā)展的重要課題,而基于網(wǎng)絡(luò)數(shù)據(jù)包的網(wǎng)頁(yè)信息還原技術(shù)則是網(wǎng)絡(luò)安全管理最為重要的組成部分。網(wǎng)頁(yè)信息還原技術(shù)的研究,對(duì)維護(hù)社會(huì)穩(wěn)定、國(guó)家健康發(fā)展有著重要的現(xiàn)實(shí)意義。本課題對(duì)網(wǎng)頁(yè)信息還原技術(shù)進(jìn)行全方位探討,然后在此基礎(chǔ)上構(gòu)建一個(gè)能滿足一類(lèi)特定應(yīng)用需求的網(wǎng)頁(yè)信息還原系統(tǒng)。主要內(nèi)容包括:(1)高性能的網(wǎng)絡(luò)數(shù)據(jù)包捕獲方法。(2)數(shù)據(jù)包重組和網(wǎng)絡(luò)協(xié)議分析技術(shù)。(3)面向?qū)ο蟮母呖蓴U(kuò)展性系統(tǒng)架構(gòu)的設(shè)計(jì)。(4)基于數(shù)據(jù)包的網(wǎng)頁(yè)還原技術(shù)。2.2模塊設(shè)計(jì)本設(shè)計(jì)主要分以下幾個(gè)模塊:(1)網(wǎng)絡(luò)數(shù)據(jù)包捕獲模塊(2)網(wǎng)絡(luò)數(shù)據(jù)包協(xié)議分析與數(shù)據(jù)包重組模塊(3)HTTP協(xié)議信息還原模塊數(shù)據(jù)包捕獲模塊負(fù)責(zé)捕獲流經(jīng)用戶所選網(wǎng)絡(luò)設(shè)備的全部數(shù)據(jù)包,并將捕獲得到的數(shù)據(jù)按照相應(yīng)的規(guī)則以文件格式存儲(chǔ)起來(lái),以供后續(xù)模塊進(jìn)行分析、重組和還原。數(shù)據(jù)重組模塊首先讀入數(shù)據(jù)包捕獲得到的數(shù)據(jù),分析每一個(gè)捕獲到的數(shù)據(jù)包,將具有相同的源IP地址、源端口號(hào)、目的IP地址和目的端口號(hào)的數(shù)據(jù)包按照先后順序存儲(chǔ)在一起,重組成一個(gè)完整的數(shù)據(jù)包。HTTP協(xié)議信息還原模塊通過(guò)一層層的數(shù)據(jù)包分解出來(lái),讀取出應(yīng)用層HTTP的負(fù)載信息,通過(guò)分析HTTP請(qǐng)求頭得到seq,并為此創(chuàng)建一個(gè)臨時(shí)文件,保存數(shù)據(jù)包的簡(jiǎn)要信息;然后分析HTTP響應(yīng)頭,得到content-encoding,conteng-type、content-length字段值,再存入臨時(shí)文件,最后把HTTP負(fù)載信息與具有相同seq、sport、dport的臨時(shí)文件簡(jiǎn)要信息匹配,若匹配成功,則進(jìn)行相應(yīng)的數(shù)據(jù)插入,還原出相關(guān)網(wǎng)頁(yè)信息。總流程圖如圖2-1所示。圖2-1總流程圖從降低系統(tǒng)設(shè)計(jì)復(fù)雜性和提高開(kāi)發(fā)效率的角度考慮,結(jié)合實(shí)際需求出發(fā),本系統(tǒng)沒(méi)有采用數(shù)據(jù)庫(kù)軟件存儲(chǔ)捕獲到的網(wǎng)絡(luò)數(shù)據(jù)包,而是直接以某種自定義文件格式將其存放在硬盤(pán)中。HTTP協(xié)議信息還原模塊既支持對(duì)于老版本HTTP/1.0協(xié)議網(wǎng)頁(yè)信息的還原,也支持針對(duì)新版本HTTP/1.1協(xié)議的網(wǎng)頁(yè)信息還原。
第3章詳細(xì)設(shè)計(jì)過(guò)程3.1網(wǎng)絡(luò)數(shù)據(jù)包捕獲模塊3.1.1網(wǎng)絡(luò)數(shù)據(jù)包捕獲技術(shù)由于不同網(wǎng)絡(luò)有不同的捕獲技術(shù)[11],捕獲原理也因不同操作系統(tǒng)稍有不同,因此在選擇捕獲技術(shù)時(shí)也要根據(jù)實(shí)際情況而定。下面將對(duì)以太網(wǎng)環(huán)境下的數(shù)據(jù)包捕獲展開(kāi)討論。一般,操作系統(tǒng)提供的捕獲機(jī)制主要有3種:(1)基于套接字的捕獲套接字是一種網(wǎng)絡(luò)API(應(yīng)用程序編程接口),套接字接口提供一種進(jìn)程間通信的方法,使得在相同或不同的主機(jī)上的進(jìn)程能以相同的規(guī)范進(jìn)行雙向信息傳送。進(jìn)程通過(guò)調(diào)用套接字接口來(lái)實(shí)現(xiàn)相互之間的通信,而套接字接口又利用下層的網(wǎng)絡(luò)通信協(xié)議功能和系統(tǒng)調(diào)用來(lái)實(shí)現(xiàn)實(shí)際的通信工作。常用的套接字[12]類(lèi)型有以下3種:1)SOCK_STREAM,流式套接字,提供面向連接、可靠的數(shù)據(jù)傳輸服務(wù),數(shù)據(jù)按字節(jié)流、按順序收發(fā),保證數(shù)據(jù)在傳輸過(guò)程中無(wú)丟失、無(wú)冗余。TCP協(xié)議支持該套接字。2)SOCK_DGRAM,數(shù)據(jù)包套接字,提供面向無(wú)連接的服務(wù),數(shù)據(jù)收發(fā)無(wú)序,不能保證數(shù)據(jù)的準(zhǔn)確到達(dá)。UDP協(xié)議支持該套接字。3)原始套接字,允許對(duì)低于傳輸層的協(xié)議或物理網(wǎng)絡(luò)直接訪問(wèn),例如可以接受和發(fā)送ICMP報(bào)。常用于檢測(cè)新的協(xié)議。(2)基于Libpcap的捕獲Libpcap是UNIX/Linux操作系統(tǒng)從內(nèi)核捕獲網(wǎng)絡(luò)數(shù)據(jù)包的必備工具,用來(lái)在用戶態(tài)下的數(shù)據(jù)包截獲,是與系統(tǒng)獨(dú)立的API接口,廣泛應(yīng)用于網(wǎng)絡(luò)數(shù)據(jù)收集、安全監(jiān)控、網(wǎng)絡(luò)調(diào)試等,并且還支持過(guò)濾機(jī)制,為底層網(wǎng)絡(luò)的監(jiān)聽(tīng)提供了一個(gè)可移植的架構(gòu)。(3)基于WinPcap的捕獲WinPcap提供了一套標(biāo)準(zhǔn)的捕獲數(shù)據(jù)包接口(由文獻(xiàn)[13,222~223]可知),它是Libpcap的Windows版本,與Libpcap兼容,并充分考慮了各種性能和效率的優(yōu)化,包括NPF(NetgroupPacketFilter)內(nèi)核層次上的過(guò)濾器、統(tǒng)計(jì)模式的支持,提供了發(fā)送數(shù)據(jù)包的能力。由于系統(tǒng)內(nèi)核本身沒(méi)有提供標(biāo)準(zhǔn)的接口,所以只有通過(guò)增加一個(gè)驅(qū)動(dòng)程序或者網(wǎng)絡(luò)組件來(lái)訪問(wèn)內(nèi)核網(wǎng)卡驅(qū)動(dòng)提供的數(shù)據(jù)包,但在不同的Windows操作系統(tǒng)平臺(tái)下有所不同,而且不同的Sniffer采用的技術(shù)也不盡相同。WinPcap的主要功能在于獨(dú)立于主機(jī)協(xié)議(如TCP-IP)而發(fā)送和接收原始數(shù)據(jù)報(bào),唯一的缺點(diǎn)就是在運(yùn)行用WinPcap開(kāi)發(fā)的程序[13]之前,都要在主機(jī)上先安裝WinPcap的driver,但是它的功能很強(qiáng)大,工作效率更高,且很容易移植到其他操作系統(tǒng)平臺(tái)上。因此,本畢業(yè)設(shè)計(jì)采用了WinPcap來(lái)捕獲數(shù)據(jù)包。以下是本研究所使用的WinPcap[9]開(kāi)發(fā)包中的API函數(shù),如表3-1:表3-1本研究中所使用的API函數(shù)類(lèi)型API函數(shù)原型功能簡(jiǎn)單說(shuō)明網(wǎng)卡設(shè)備獲取intpcap_findalldevs_ex(char*source,structpcap_rmtauth*auth,pcap_if_t**alldevs,char*errbuf);獲取全部網(wǎng)卡設(shè)備列表void pcap_freealldevs(pcap_if_t*);釋放網(wǎng)卡設(shè)備列表網(wǎng)卡設(shè)備操縱pcap_t*pcap_open(constchar*source,intsnaplen,intflags,intread_timeout,structpcap_rmtauth*auth,char*errbuf);打開(kāi)選定網(wǎng)卡設(shè)備void pcap_close(pcap_t*);關(guān)閉網(wǎng)卡設(shè)備3.1.2數(shù)據(jù)包捕獲模塊實(shí)現(xiàn)(1)開(kāi)始捕獲本模塊首先通過(guò)函數(shù)OnCbnSelchangeComboNet()得到用戶的配置信息,然后調(diào)用函數(shù)open_device()跳轉(zhuǎn)到所選網(wǎng)卡設(shè)備,最后調(diào)用函數(shù)free_dev_list()釋放網(wǎng)絡(luò)適配器設(shè)備。當(dāng)用戶點(diǎn)擊"開(kāi)始捕獲"按鈕時(shí),程序?qū)⑼ㄟ^(guò)函數(shù)OnBnClickedBtnStart()啟動(dòng)整個(gè)數(shù)據(jù)包捕獲模塊,然后啟動(dòng)數(shù)據(jù)包捕獲線程Cappacketlivethread(),最后通過(guò)函數(shù)packet_handler()從數(shù)據(jù)包中讀取數(shù)據(jù)內(nèi)容。核心代碼如下:if((adhandle=open_device(alldevs,sel_num))!=NULL)//打開(kāi)設(shè)備 { free_dev_list(alldevs); net_interface->EnableWindow(false); }AfxBeginThread(Cappacketlivethread,GetSafeHwnd());//啟動(dòng)數(shù)據(jù)包捕獲線程intpacket_handler(conststructpcap_pkthdr*header,constu_char*pkt_data)//顯示捕獲的數(shù)據(jù)包的基本信息{ethernet=(struct ETHERNET*)pkt_data;NetType=ntohs(ethernet->NetType);MAC=ethernet->SourceMac;sprintf(DisplayEthernet.SourceMac,"%02x:%02x:%02x:%02x:%02x:%02x",*MAC,*(MAC+1),*(MAC+2),*(MAC+3),*(MAC+4),*(MAC+5));strcpy(packet.SourceMac,DisplayEthernet.SourceMac);MAC=ethernet->DestinationMac;sprintf(DisplayEthernet.DestinationMac,"%02x:%02x:%02x:%02x:%02x:%02x",*MAC,*(MAC+1),*(MAC+2),*(MAC+3),*(MAC+4),*(MAC+5));strcpy(packet.DestinationMac,DisplayEthernet.DestinationMac);pkt_data+=sizeof(struct ETHERNET);}詳細(xì)代碼見(jiàn)附錄1。捕獲數(shù)據(jù)包流程圖如圖3-1所示。圖圖3-1數(shù)據(jù)包捕獲模塊流程圖(2)停止調(diào)用OnBnClickedBtnStop()函數(shù)停止捕獲數(shù)據(jù)包。3.2網(wǎng)絡(luò)協(xié)議分析技術(shù)網(wǎng)絡(luò)協(xié)議分析技術(shù)主要是通過(guò)分析網(wǎng)絡(luò)中各種協(xié)議數(shù)據(jù),得到網(wǎng)絡(luò)運(yùn)行情況。網(wǎng)絡(luò)協(xié)議分析技術(shù)被廣泛應(yīng)用于網(wǎng)絡(luò)維護(hù)和管理本節(jié)介紹將介紹基本的網(wǎng)絡(luò)協(xié)議原理,對(duì)于每個(gè)協(xié)議的基本數(shù)據(jù)結(jié)構(gòu)進(jìn)行闡述。3.2.1網(wǎng)絡(luò)協(xié)議原理網(wǎng)絡(luò)協(xié)議[10]是指定義數(shù)據(jù)包的格式以及其用途的規(guī)則集。一個(gè)網(wǎng)絡(luò)協(xié)議至少包括三要素,分別是語(yǔ)法、語(yǔ)義和時(shí)序。其中語(yǔ)法用來(lái)規(guī)定信息格式,指數(shù)據(jù)和控制信息的結(jié)構(gòu)和格式,語(yǔ)義是用來(lái)規(guī)定通信雙方應(yīng)當(dāng)怎么做,時(shí)序詳細(xì)地定義了時(shí)間的先后順序。一個(gè)網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包,一般包括協(xié)議頭和數(shù)據(jù)兩部分。在協(xié)議頭定義了協(xié)議的基本內(nèi)容,如源地址和目的地址、數(shù)據(jù)包長(zhǎng)度和協(xié)議類(lèi)型等。根據(jù)所定義的首部?jī)?nèi)容,定義相關(guān)的處理規(guī)則就形成了一套完整的網(wǎng)絡(luò)協(xié)議(由文獻(xiàn)[13,183~185]可知)。3.2.2TCP/IP核心協(xié)議在TCP/IP協(xié)議族中有多種協(xié)議,其分層結(jié)構(gòu)和每個(gè)層的主要協(xié)議如表3-2所示。表3-2TCP/IP協(xié)議分層及其協(xié)議分布應(yīng)用層HTTP,FTP,TELNET,POP3,SMTP,DNS等傳輸層TCP,UDP等網(wǎng)絡(luò)層IP等鏈路層以太網(wǎng),PPP/SLIP等鏈路層主要是管理網(wǎng)絡(luò)數(shù)據(jù)包的接受和發(fā)送,在操作系統(tǒng)中主要體現(xiàn)在設(shè)備驅(qū)動(dòng)程序和網(wǎng)絡(luò)接口。網(wǎng)絡(luò)層主要負(fù)責(zé)網(wǎng)絡(luò)數(shù)據(jù)包的路由傳送功能,它是TCP/IP協(xié)議中的核心協(xié)議中的核心協(xié)議。有了它數(shù)據(jù)包才知道怎樣在各種網(wǎng)絡(luò)中穿梭,找到正確的目的地。當(dāng)數(shù)據(jù)包的長(zhǎng)度大于路由器的MTU時(shí),則要對(duì)數(shù)據(jù)包進(jìn)行重組后再進(jìn)行傳送。并且在網(wǎng)絡(luò)層還要負(fù)責(zé)地址轉(zhuǎn)換工作,把MAC地址和IP地址之間轉(zhuǎn)換。網(wǎng)絡(luò)層解決了計(jì)算機(jī)之間的通信問(wèn)題,在多個(gè)互聯(lián)的網(wǎng)絡(luò)之間建立、保持和終結(jié)邏輯和物理連結(jié)。傳輸層的基本任務(wù)是提供應(yīng)用程序之間的通信服務(wù)。它還兼負(fù)著向應(yīng)用層提供與網(wǎng)絡(luò)無(wú)關(guān)而可靠的信息互換服務(wù)的重任。該層不僅系統(tǒng)地管理信息的流動(dòng),還提供可靠的端到端的傳輸服務(wù),以確保數(shù)據(jù)道道無(wú)差錯(cuò)、無(wú)亂序。為了達(dá)到這個(gè)目的,協(xié)議軟件提供確認(rèn)和重發(fā)的功能,同時(shí)還處理流量控制、擁塞控制等事務(wù)。該層主要任務(wù)是負(fù)責(zé)數(shù)據(jù)的傳遞操作,保證數(shù)據(jù)能夠正確到達(dá),當(dāng)中最具代表的就是TCP協(xié)議。應(yīng)用層是TCP/IP的最高層,網(wǎng)絡(luò)在此層向用戶應(yīng)用程序提供服務(wù),確保通信暢通。用戶調(diào)用相應(yīng)的程序并通過(guò)TCP/IP網(wǎng)絡(luò)來(lái)訪問(wèn)可用的網(wǎng)絡(luò),與每個(gè)傳輸層協(xié)議交互的應(yīng)用程序負(fù)責(zé)接收和發(fā)送數(shù)據(jù)。3.2.3網(wǎng)絡(luò)數(shù)據(jù)包分解過(guò)程接收數(shù)據(jù)包的過(guò)程就是分解數(shù)據(jù)包的過(guò)程,因?yàn)橹鳈C(jī)接收的是一個(gè)原始的鏈路層數(shù)據(jù)包。根據(jù)對(duì)以太網(wǎng)幀的分解,然后對(duì)每層協(xié)議進(jìn)行解析,最后讀取所傳送的數(shù)據(jù)內(nèi)容。如圖3-2所示:鏈路層數(shù)據(jù)負(fù)載鏈路層協(xié)議首部鏈路層數(shù)據(jù)負(fù)載鏈路層協(xié)議首部網(wǎng)絡(luò)層數(shù)據(jù)負(fù)載網(wǎng)絡(luò)層協(xié)議首部網(wǎng)絡(luò)層數(shù)據(jù)負(fù)載網(wǎng)絡(luò)層協(xié)議首部傳輸層數(shù)據(jù)負(fù)載傳輸層協(xié)議首部傳輸層數(shù)據(jù)負(fù)載傳輸層協(xié)議首部數(shù)據(jù)負(fù)載應(yīng)用層首部數(shù)據(jù)負(fù)載應(yīng)用層首部圖3-2接收數(shù)據(jù)使得分解過(guò)程IP協(xié)議IP協(xié)議(InternetProtocol)是網(wǎng)絡(luò)層協(xié)議,因特網(wǎng)上的TCP、UDP、ICMP、IGMP等數(shù)據(jù)都是按照IP數(shù)據(jù)格式發(fā)送的。IP數(shù)據(jù)包由一個(gè)頭部和IP數(shù)據(jù)包負(fù)載構(gòu)成。IP數(shù)據(jù)包頭部格式如圖3-3所示:
版本首部長(zhǎng)度服務(wù)類(lèi)型總長(zhǎng)度標(biāo)識(shí)號(hào)標(biāo)記段偏移量生存時(shí)間(TTL)協(xié)議首部校驗(yàn)和源IP地址目的IP地址可選項(xiàng)填充位數(shù)據(jù)圖3-3IP數(shù)據(jù)包頭部格式上面就是IP數(shù)據(jù)的頭部格式,IP頭部由20字節(jié)的固定長(zhǎng)度和一個(gè)可選任意長(zhǎng)度部分構(gòu)成,從左到右以網(wǎng)絡(luò)字節(jié)序傳送。分解鏈路層協(xié)議的核心代碼如下:voiddecEthernet(constethernet_header*eh,size_tethernet_len){ ethernet_header_len=sizeof(ethernet_header);//獲得Ethernet頭長(zhǎng)度 ih=(ip_header*)((u_char*)eh+ethernet_header_len);//獲得IP數(shù)據(jù)包頭部的位置ip_len=ethernet_len-ethernet_header_len;//獲得IP數(shù)據(jù)包長(zhǎng)度decIP(ih,ip_len);}分解網(wǎng)絡(luò)層協(xié)議的核心代碼如下:voiddecIP(ip_header*ih,size_tip_len){ip_header_len=(ih->ver_ihl&0xf)*4;//獲得IP頭長(zhǎng)度 saddr.byte1=ih->saddr.byte1;//提取SourceIP值 saddr.byte2=ih->saddr.byte2; saddr.byte3=ih->saddr.byte3; saddr.byte4=ih->saddr.byte4;daddr.byte1=ih->daddr.byte1;提取DestinationIP值 daddr.byte2=ih->daddr.byte2; daddr.byte3=ih->daddr.byte3; daddr.byte4=ih->daddr.byte4; }TCP協(xié)議
TCP(TransmissionControlProtocol)是傳輸層協(xié)議,為應(yīng)用層提供可靠的面向連接的服務(wù)。該協(xié)議位于IP子協(xié)議的上層,通過(guò)提供校驗(yàn)和、流控制及序列信息以彌補(bǔ)IP協(xié)議可靠性的缺陷。如果一個(gè)應(yīng)用層只依靠IP協(xié)議發(fā)送數(shù)據(jù),那么IP協(xié)議將雜亂地發(fā)送數(shù)據(jù),如果不檢測(cè)目標(biāo)節(jié)點(diǎn)是否脫機(jī),或數(shù)據(jù)是否在發(fā)送過(guò)程中已被破壞。以下是關(guān)于TCP協(xié)議的頭部格式內(nèi)容的說(shuō)明,如圖3-4所示:16bit源端口號(hào)16bit目的端口號(hào)32bit序列號(hào)32bit確認(rèn)序號(hào)首部長(zhǎng)度保留UAPRSF16bit窗口大小16bit校驗(yàn)和16bit緊急指針選項(xiàng)數(shù)據(jù)圖3-4TCP首部結(jié)構(gòu)跟IP頭部差不多,基本的長(zhǎng)度也是20字節(jié)。TCP數(shù)據(jù)包是包含在一個(gè)IP數(shù)據(jù)報(bào)文中的。分解傳輸層協(xié)議的核心代碼如下:voiddecTcp(consttcp_header*th,size_ttcp_len,ip_addresssaddr,ip_addressdaddr){tcp_header_len=(th->info_ctrl>>4&0xf)*4;獲得TCP數(shù)據(jù)段頭指針pTCP_data=(u_char*)((u_char*)th+tcp_header_len);tcp_datalen=tcp_len-tcp_header_len;//獲得TCP有效數(shù)據(jù)長(zhǎng)度ack=big2small(th->ack_number);//獲得ack值(網(wǎng)絡(luò)字節(jié)序列轉(zhuǎn)換成主機(jī)字節(jié)序列)seq=big2small(th->seq_number);//獲得seq值sport=ntohs(th->source_port);dport=ntohs(th->destination_port);if((dport==80)||(sport==80)) { if(tcp_datalen!=0) {decHttp(pTCP_data,tcp_datalen,seq,ack,saddr,daddr,sport,dport);}}HTTP數(shù)據(jù)的識(shí)別HTTP采用TCP協(xié)議作為傳輸層協(xié)議,其常用端口為80,因此判斷HTTP協(xié)議數(shù)據(jù)的流程首先是要判斷網(wǎng)絡(luò)數(shù)據(jù)的傳輸層協(xié)議,若傳輸層協(xié)議為06(TCP協(xié)議)且端口(源端口或目的端口)為80的網(wǎng)絡(luò)數(shù)據(jù),就初步認(rèn)定為應(yīng)用層數(shù)據(jù)。網(wǎng)絡(luò)數(shù)據(jù)包分解模塊詳細(xì)代碼見(jiàn)附錄1,該流程圖如圖3-5所示。圖圖3-5http協(xié)議識(shí)別流程圖3.3網(wǎng)絡(luò)數(shù)據(jù)包重組分析由于IP不能保證可靠、有序的包傳輸,因此包有可能會(huì)被破壞或在到達(dá)時(shí)是無(wú)序的。另外,在捕獲過(guò)程中會(huì)將重復(fù)的包視為T(mén)CP重發(fā)的結(jié)果,也可能會(huì)捕獲那些不會(huì)到達(dá)到預(yù)定接收器的包。在這兩種情況下,捕獲過(guò)程都可能會(huì)接收重復(fù)的包。更復(fù)雜的是,TCP不能保證重新傳輸?shù)陌鼤?huì)按照原始數(shù)據(jù)的同一方式再將這些數(shù)據(jù)分組。因此重構(gòu)有序流就顯得尤為重要。如果一個(gè)流有起始、結(jié)束和兩者間的所有東西,它就是完整的流。根據(jù)SYN可以確定包連接的TCP包所有字節(jié)流。為了方便應(yīng)用數(shù)據(jù)的恢復(fù),需要將無(wú)序的數(shù)據(jù)片流有序化,使其表現(xiàn)為一個(gè)有序的數(shù)據(jù)片流(或者說(shuō)是數(shù)據(jù)流)。在軟件實(shí)現(xiàn)數(shù)據(jù)片有序化時(shí),本設(shè)計(jì)采用了一個(gè)帶頭結(jié)點(diǎn)的雙向鏈表隊(duì)列,隊(duì)列中的每個(gè)結(jié)點(diǎn)存儲(chǔ)一個(gè)完整的TCP數(shù)據(jù)流的內(nèi)容,另外還有兩個(gè)元素,分別是指向前導(dǎo)和后續(xù)結(jié)點(diǎn)的結(jié)構(gòu)體指針。數(shù)據(jù)包重組的核心代碼:if(disorderly==true)//判斷該數(shù)據(jù)流無(wú)序化標(biāo)志是否為真{ if(order_data()!=true)//若為真則調(diào)用order_data重組數(shù)據(jù) { this->writting=false; returnNULL; } }boollist_node::order_data(){if((p->seq!=next_seq_num)) { tmp=p->prev; while(tmp->seq!=next_seq_num) { tmp=tmp->prev; if(tmp==root) { this->writting=false; returnfalse; } } next_seq_num+=segment_size;//更新next_seq_num len+=tmp->len; }}數(shù)據(jù)重組流程圖見(jiàn)圖3-6,詳細(xì)代碼見(jiàn)附錄1。圖3-6數(shù)據(jù)包重組流程圖3.4HTTP協(xié)議信息還原模塊每一個(gè)信息流包含著一個(gè)或多個(gè)HTTP消息,每一個(gè)HTTP消息包含著一個(gè)標(biāo)頭和一個(gè)可選擇的主體,如圖3-7所示:圖3-7HTTP消息HTTP有兩種報(bào)文[14],一個(gè)是客戶機(jī)向服務(wù)器發(fā)送的請(qǐng)求報(bào)文和服務(wù)器向客戶機(jī)發(fā)送的響應(yīng)報(bào)文。3.4.1HTTP請(qǐng)求頭分析請(qǐng)求方法[15]用于通知HTTP服務(wù)器,針對(duì)有request_url所標(biāo)識(shí)的資源,確定應(yīng)采取什么操作。最通用的方法是GET方法,它負(fù)責(zé)取得由URI所標(biāo)識(shí)的那個(gè)資源的當(dāng)前值。HTTP/1.0定義了3種方法(GET,POST,HEAD),HTTP/1.1中,引入了3個(gè)新的請(qǐng)求方法(OPTIONS、TRACE和CONNECT)。由于HEAD和POST等方法的消息體會(huì)被服務(wù)器忽略,對(duì)本研究的作用不大。故本研究只針對(duì)HTTP的GET請(qǐng)求方法展開(kāi)闡述。GETGET請(qǐng)求用于向指定URI發(fā)送資源請(qǐng)求,生成的響應(yīng)為資源的當(dāng)前值。這一響應(yīng)會(huì)返回至發(fā)送請(qǐng)求的客戶機(jī)。如URI引用靜態(tài)文件,GET請(qǐng)求將導(dǎo)致讀取該文件,并返回其內(nèi)容。如果URI引用程序,則數(shù)據(jù)(如果有的話)會(huì)作為響應(yīng)主體而被返回。在GET請(qǐng)求中可包含參數(shù),他們是根據(jù)用戶的輸入而構(gòu)建的。以下通過(guò)一條捕包信息對(duì)GET請(qǐng)求報(bào)文進(jìn)行分析:GET/HTTP/1.1\r\n//使用的請(qǐng)求方法為GET,使用HTTP1.1版本Accept:*/*\r\nAccept-Language:zh-ch\r\nAccept-Encoding:gzip,deflate\r\nUser-Agent:Mozilla/4.0(compatible;MSIE8.0;WindowsNT5.1;Trident/4.0;.NETCLR2.0.50727;CIBA)\r\n//請(qǐng)求標(biāo)頭,包含正在使用的瀏覽器軟件的特定版本、客戶機(jī)的操作系統(tǒng)以及硬件細(xì)節(jié)有關(guān)的信息。Host:\r\n//提交請(qǐng)求頁(yè)面Connection:Keep-Alive\r\n//TCP連接保持打開(kāi)\r\n//這條請(qǐng)求信息以回車(chē)換行符結(jié)尾通常,請(qǐng)求消息中包含請(qǐng)求方法、URI、協(xié)議版本標(biāo)識(shí)符、可選的請(qǐng)求標(biāo)頭字段以及可選的主體(GET請(qǐng)求方法沒(méi)有請(qǐng)求主體)。本模塊中首先使用函數(shù)str_str((char*)pdata+strlen("GET"),tcp_datalen,"HTTP/",strlen("HTTP/"))獲得GET-HTTP/之間的字段值,保存為url字段值;使用函數(shù)str_str_last(url,"/")把url值中最后一個(gè)"/"的字符作為處理存入的文件名;使用函數(shù)strstr((constchar*)pdata,"Host:")得到host字段,再把url字段值加入加入到host字段,得到完整的url字段值;那么下一個(gè)包的seq值等于當(dāng)前seq值加上tcpdatalen值;使用函數(shù)store_file.find(seq,dport,sport)檢查下list列表是否存儲(chǔ)了當(dāng)前數(shù)據(jù)包信息,如果沒(méi)有就使用函數(shù)store_file.insert_node(storefilename,seq,dport,sport,host)插入相關(guān)信息。核心代碼如下:p=(u_char*)str_str((char*)pdata+strlen("GET"),tcp_datalen,"HTTP/",strlen("HTTP/"));if(p!=NULL) {memcpy(url,(char*)pdata+strlen("GET"),(char*)p-(char*)pdata-strlen("GET"));storefilename=str_str_last(url,"/");if((p=(u_char*)strstr((constchar*)pdata,"Host:"))!=0) { p+=strlen("Host:"); u_char*end=(u_char*)str_str((char*)p,20,"\r\n",strlen("\r\n")); if(end!=NULL) { memcpy(host,p,end-p); strcat(host,url); } } seq+=(DWORD)tcp_datalen;pnode=store_file.find(seq,dport,sport); if(pnode==NULL) { store_file.insert_node(storefilename,seq,dport,sport,host); }}對(duì)HTTP請(qǐng)求頭方法的分析流程圖如圖3-8。圖3-8HTTP請(qǐng)求頭分析3.4.2HTTP響應(yīng)頭分析每條HTTP響應(yīng)消息都以Status-Line(狀態(tài)行)開(kāi)始。狀態(tài)行包括3個(gè)字段:服務(wù)器的協(xié)議版本號(hào)、響應(yīng)碼以及一個(gè)自然語(yǔ)言原因短語(yǔ)。在HTTP中,共有5個(gè)響應(yīng)類(lèi),分別是信息類(lèi)(1xx)、成功類(lèi)(2xx)、重定向類(lèi)(3xx)、客戶機(jī)錯(cuò)誤類(lèi)(4xx)以及服務(wù)器錯(cuò)誤類(lèi)(5xx)。本研究只針對(duì)成功類(lèi)響應(yīng)(2xx)展開(kāi)闡述。服務(wù)器收到并接受HTTP請(qǐng)求以便處理后,會(huì)生成成功類(lèi)響應(yīng)。HTTP/1.0中有4個(gè)2xx響應(yīng)碼,分別是200OK,200Created,200Accepted,204NoContent。200OK響應(yīng)碼表示請(qǐng)求成功時(shí),便會(huì)返回200OK響應(yīng)。響應(yīng)中包含數(shù)量不等的細(xì)節(jié)。例如,GET請(qǐng)求會(huì)導(dǎo)致原始服務(wù)器返回響應(yīng),并將GET方法應(yīng)用于資源。HTTP響應(yīng)頭中的Content-Type字段值則表明HTTP協(xié)議傳輸資源的MIME[16]類(lèi)型,MIME類(lèi)型與文件類(lèi)型的對(duì)應(yīng)關(guān)系可參考表3-3;Content-Length字段值代表了HTTP消息體的長(zhǎng)度。表3-3常見(jiàn)MIME類(lèi)型和文件擴(kuò)展名對(duì)應(yīng)關(guān)系表 MIME類(lèi)型文件擴(kuò)展名text/html.htm/.htmlimage/jpg.jpg/.jpegapplication/x-javascript.jstext/plain.txttext/css.css本模塊中對(duì)HTTP響應(yīng)信息的處理方法,首先是使用函數(shù)getlen(pdata+strlen("HTTP/1.1"))獲得響應(yīng)碼,如果響應(yīng)碼不是200,則通過(guò)函數(shù)find(ack,sport,dport)獲得該數(shù)據(jù)包信息,然后通過(guò)函數(shù)delete_node刪除該數(shù)據(jù)包信息。如果響應(yīng)碼是200,通過(guò)函數(shù)strstr((constchar*)pdata,"Content-Encoding:"))匹配content-encoding字段值然后通過(guò)函數(shù)str_str((char*)pdata,segment_size,"Content-Type:",strlen("Content-Type:"))得到content-type字段值,再通過(guò)函數(shù)strstr((constchar*)pdata,"Content-Length"))得到content-length字段值,最后通過(guò)函數(shù)init_first_seq(pnode,seq)插入該數(shù)據(jù)包信息。核心代碼如下:,if((p=(u_char*)strstr((constchar*)pdata,"Content-Encoding:"))!=0) { if(strncmp((constchar*)p+strlen("Content-Encoding:"),"gzip",strlen("gzip"))==0) {content_encoding=ce_GZIP;}elseif(strncmp((constchar*)p+strlen("ContentEncoding:"),"compress",strlen("compress"))==0) {content_encoding=ce_COMPRESS;}elseif(strncmp((constchar*)p+strlen("Content-Encoding:"),"deflate",strlen("deflate"))==0) {content_encoding=ce_DEFLATE;}}if((p=(u_char*)str_str((char*)pdata,segment_size,"Content-Type:",strlen("Content-Type:")))!=0) { p+=strlen("Content-Type:"); u_char*end=(u_char*)str_str((char*)p,segment_size-(p-pdata),"\r\n",strlen("\r\n")); if(end!=NULL) { memcpy(content_type,p,end-p); }}if((p=(u_char*)strstr((constchar*)pdata,"Content-Length"))!=0) { total_require_file_length=getlen((u_char*)p+strlen("Content-Length")); pkg_data=(u_char*)str_str((char*)pdata,segment_size,"\r\n\r\n",strlen("\r\n\r\n")); if(pkg_data!=0) { pkg_data+=strlen("\r\n\r\n"); } pnode=store_file.find(ack,sport,dport);store_file.init_first_seq(pnode,seq);分析HTTP響應(yīng)信息的流程圖如圖3-9所示。圖3-9分析HTTP響應(yīng)信息的流程圖3.4.3數(shù)據(jù)包信息還原模塊本模塊首先使用find(ack,sport,dport)獲得該數(shù)據(jù)包的信息,通過(guò)函數(shù)node_isempty()判斷該數(shù)據(jù)包的data有效長(zhǎng)度是否為0,如果不為0,則通過(guò)函數(shù)have_inserted_first_data()判斷該數(shù)據(jù)包是否已經(jīng)加入過(guò)httpdata內(nèi)容,如果沒(méi)有,則調(diào)用函數(shù)init_first_seq()初始化seq,然后使用函數(shù)insert_first_data插入數(shù)據(jù)包的第一條data內(nèi)容;如果已經(jīng)加入過(guò)data內(nèi)容,則繼續(xù)加入當(dāng)前分片的data內(nèi)容。然后通過(guò)函數(shù)get_complete_percent()判斷當(dāng)前數(shù)據(jù)包是否完整,如果不完整則完成data內(nèi)容的處理;如果是完整的,則通過(guò)函數(shù)serialstream()重組當(dāng)前數(shù)據(jù)包,最后把所有分片的內(nèi)容整合在一起,寫(xiě)入文件。詳細(xì)代碼見(jiàn)附錄1。以下是HTTP消息體處理流程圖,如圖3-10。圖3-10HTTP消息體處理流程圖
第4章調(diào)試總結(jié)4.1捕獲數(shù)據(jù)包模塊4.1.1問(wèn)題總結(jié)在使用了pcap_findalldevs,調(diào)試時(shí)發(fā)現(xiàn)已經(jīng)是正常網(wǎng)卡,卻無(wú)法捕獲數(shù)據(jù)包。解決辦法:在調(diào)試時(shí)看看是否網(wǎng)卡的前面還有如:rpcap://這樣的字段,這可能是因?yàn)闆](méi)有注意pcap_findalldevs,pcap_findalldevs_ex,pcap_open,pcap_open_live這幾個(gè)函數(shù)的區(qū)別的原因,通過(guò)參考WinPcap開(kāi)發(fā)手冊(cè),里面有這樣的字段Thefollowingformatsarenotallowedas'source'strings:rpcap://[toopenthefirstlocaladapter]
rpcap://hostname/[toopenthefirstremoteadapter]
在上面的2種找網(wǎng)卡的打開(kāi)方式中,有的打開(kāi)是沒(méi)有rpcap://這種字段的,有的卻有。有沒(méi)有這個(gè)字段,后面的操作是不一樣的,有的需要使用pcap_createsrcstr()來(lái)創(chuàng)建正確的字段,所以一定要注意了。在MFC下開(kāi)發(fā)的問(wèn)題,不要使用在Dos下開(kāi)發(fā)時(shí)常用的pcap_loop而要選用pcap_next_ex等替代函數(shù),這樣才不會(huì)有回掉函數(shù)的那個(gè)問(wèn)題。以上沒(méi)有問(wèn)題,還是抓不到包,可能是WinPcap沒(méi)有工作。察看pcap_open或pcap_open_live函數(shù)中的延遲參數(shù)設(shè)置,一般設(shè)到1000(ms),因?yàn)槿绻窃谥骶€程下捕獲,延遲設(shè)置過(guò)?。ㄒ话?00ms以下就不穩(wěn)定了)會(huì)使WinPcap無(wú)法工作,多線程下沒(méi)有這個(gè)問(wèn)題,設(shè)到1都可以正常工作。4.1.2捕獲數(shù)據(jù)包模塊運(yùn)行結(jié)果捕獲數(shù)據(jù)包模塊運(yùn)行結(jié)果如圖4-1所示。
圖4-1捕獲數(shù)據(jù)包模塊運(yùn)行結(jié)果4.2數(shù)據(jù)包重組模塊4.2.1問(wèn)題總結(jié)程序運(yùn)行時(shí)出錯(cuò)unknownsoftwareexception(0x80000003),位置為0x7c92120e。如圖4-2所示。圖4-2數(shù)據(jù)包重組模塊出錯(cuò)圖分析:在使用動(dòng)態(tài)分配的應(yīng)用程序中,有時(shí)會(huì)有這樣的情況出現(xiàn):程序試圖讀寫(xiě)一塊"應(yīng)該可用"的內(nèi)存,但不知為什么,這個(gè)預(yù)料中可用的光標(biāo)已經(jīng)失效了。有可能是"忘記了"向操作系統(tǒng)要求分配,也可能是程序自己在某個(gè)時(shí)候已經(jīng)注銷(xiāo)了這塊內(nèi)存而"沒(méi)有留意"等等。注銷(xiāo)了的內(nèi)存被系統(tǒng)回收,其訪問(wèn)權(quán)就不再屬于該應(yīng)用程序,因此讀寫(xiě)操作也同樣會(huì)觸發(fā)系統(tǒng)的保護(hù)機(jī)制,企圖"違法"的程序唯一的下場(chǎng)就是被操作終止執(zhí)行,回收全部資源。因此,在使用動(dòng)態(tài)分配的應(yīng)用程序,先進(jìn)行初始化且確保分夠足夠的內(nèi)存區(qū)以供使用。在本模塊中,函數(shù)serialstream()里面的一條語(yǔ)句:char*namebuf=(char*)calloc(sizeof(char),strlen(this->filename)+1);使用的是malloc()函數(shù)來(lái)分配內(nèi)存空間。malloc()函數(shù)和calloc()函數(shù)的主要區(qū)別是前者不能初始化所分配的內(nèi)存空間,而后者能。如果由malloc()函數(shù)分配的內(nèi)存空間原來(lái)沒(méi)有被使用過(guò),則其中的每一位可能都是0;反之,如果這部分內(nèi)存空間曾經(jīng)被分配、釋放和重新分配,則其中可能遺留各種各樣的數(shù)據(jù)。也就是說(shuō),使用malloc()函數(shù)的程序開(kāi)始時(shí)(內(nèi)存空間還沒(méi)有被重新分配)能正常運(yùn)行,但經(jīng)過(guò)一段時(shí)間后(內(nèi)存空間已被重新分配)可能會(huì)出現(xiàn)問(wèn)題。calloc()函數(shù)會(huì)將所分配的內(nèi)存空間中的每一位都初始化為零,也就是說(shuō),如果你是為字符類(lèi)型或整數(shù)類(lèi)型的元素分配內(nèi)存,那么這些元素將保證會(huì)被初始化為零;如果你是為指針類(lèi)型的元素分配內(nèi)存,那么這些元素通常(但無(wú)法保證)會(huì)被初始化為空指針;如果你是為實(shí)數(shù)類(lèi)型的元素分配內(nèi)存,那么這些元素可能(只在某些計(jì)算機(jī)中)會(huì)被初始化為浮點(diǎn)型的零。4.2.2數(shù)據(jù)包重組模塊運(yùn)行結(jié)果數(shù)據(jù)包重組模塊運(yùn)行結(jié)果如圖4-3所示。圖4-3數(shù)據(jù)包重組模塊運(yùn)行結(jié)果4.3數(shù)據(jù)包還原模塊4.3.1問(wèn)題總結(jié)程序調(diào)試無(wú)錯(cuò)誤,單步調(diào)試可看到各變量的值,但生成的exe無(wú)法正確顯示ListCtrl控件的值。解決辦法:首先檢查添加響應(yīng)自定義的消息的步驟是否出錯(cuò)。添加WM_TIMER的消息響應(yīng)函數(shù)OnTimer,這時(shí)在所在類(lèi)的*.H文件看到增加了的消息函數(shù)聲明afx_msgvoidOnTimer(UINT_PTRnIDEvent);在所在類(lèi)的實(shí)現(xiàn)文件*.CPP文件中增加了消息映射ON_WM_TIMER()和實(shí)現(xiàn)消息處理函數(shù)CmonitorDlg::OnTimer(UINT_PTRnIDEvent),也就是也就是說(shuō)WM_TIMEER消息對(duì)應(yīng)OnTimer函數(shù)。經(jīng)檢查無(wú)錯(cuò)誤。(2)但是發(fā)現(xiàn)在線程函數(shù)Cappacketlivethread(LPVOIDpParam)捕包分析數(shù)據(jù)之后無(wú)后續(xù)處理,一直沒(méi)有發(fā)送向消息隊(duì)列發(fā)送消息。應(yīng)該是在每次處理完一條完整的數(shù)據(jù)之后,buf就會(huì)有相應(yīng)的文件被還原出來(lái)。于是定義了兩個(gè)外部變量externintcomplete_data_len;//完成列表使用了的長(zhǎng)度externintcomplete_data_last_print;//MFC界面最后輸出當(dāng)處理完一條完整數(shù)據(jù)后,complet_data_len自加1,如果complete_data_len>complete_data_last_print時(shí),則向消息隊(duì)列發(fā)送WM_TIMER消息SendMessage(::AfxGetApp()->m_pMainWnd->m_hWnd,WM_TIMER,0,0)。這時(shí)ListCtrl控件有相應(yīng)的信息輸出。4.3.2數(shù)據(jù)包還原模塊運(yùn)行結(jié)果打開(kāi)buf文件夾,可看到數(shù)據(jù)包還原的各類(lèi)文件,如圖4-4所示:圖4-4數(shù)據(jù)包還原模塊運(yùn)行結(jié)果4.4基于數(shù)據(jù)包分析的網(wǎng)頁(yè)還原系統(tǒng)基于數(shù)據(jù)包分析的網(wǎng)頁(yè)還原系統(tǒng)運(yùn)行結(jié)果如圖4-5所示。
圖4-5基于數(shù)據(jù)包分析的網(wǎng)頁(yè)還原系統(tǒng)運(yùn)行結(jié)果
第5章總結(jié)5.1已完成的工作本文圍繞網(wǎng)絡(luò)數(shù)據(jù)包截獲、數(shù)據(jù)包協(xié)議分析與重組、數(shù)據(jù)包還原進(jìn)行研究,主要做了以下幾方面的工作:(1)概要地分析了國(guó)內(nèi)外網(wǎng)絡(luò)數(shù)據(jù)包信息還原的發(fā)展現(xiàn)狀和趨勢(shì),認(rèn)識(shí)到網(wǎng)絡(luò)與信息安全是關(guān)系到國(guó)家安全的一個(gè)重點(diǎn),闡述了網(wǎng)絡(luò)信息監(jiān)聽(tīng)與還原的重要性。(2)研究了網(wǎng)絡(luò)體系結(jié)構(gòu),闡述了一個(gè)基于WinPcap的網(wǎng)絡(luò)信息監(jiān)聽(tīng)模塊的設(shè)計(jì)思想,描述了該模塊的基本架構(gòu)、工作流程及實(shí)現(xiàn)方法。(3)根據(jù)實(shí)際需要,研究了協(xié)議分析技術(shù),對(duì)捕獲的信息進(jìn)行協(xié)議分析。著重以應(yīng)用層HTTP協(xié)議為例,進(jìn)行了協(xié)議分析,通過(guò)編寫(xiě)程序?qū)崿F(xiàn)了對(duì)網(wǎng)絡(luò)中的HTTP數(shù)據(jù)包進(jìn)行捕獲、分析和提取有用信息,得到了網(wǎng)絡(luò)協(xié)議分析技術(shù)實(shí)際應(yīng)用的結(jié)果。(4)實(shí)現(xiàn)了一個(gè)融合解決HTTP/1.0和HTTP/1.1協(xié)議網(wǎng)頁(yè)信息還原的通用HTTP協(xié)議信息還原系統(tǒng)。5.2展望由于本人在網(wǎng)絡(luò)數(shù)據(jù)還原技術(shù)的理論基礎(chǔ)知識(shí)薄弱,僅對(duì)網(wǎng)絡(luò)數(shù)據(jù)還原技術(shù)的基本理論和部分方法進(jìn)行了研究和編程實(shí)現(xiàn),并沒(méi)有對(duì)算法的運(yùn)算效率進(jìn)行研究。在實(shí)際客戶需求中,用到的算法是多樣的,并且要充分考慮到系統(tǒng)的實(shí)現(xiàn)效率??紤]到數(shù)據(jù)挖掘技術(shù)在中小型企業(yè)的應(yīng)用,本文的進(jìn)一步工作有以下內(nèi)容:(1)研究給出的基于WinPcap的網(wǎng)絡(luò)信息監(jiān)聽(tīng)系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)是單機(jī)運(yùn)行的,難以適用于網(wǎng)絡(luò)數(shù)據(jù)流量很大并且有多個(gè)數(shù)據(jù)采集器的應(yīng)用環(huán)境。為了適應(yīng)此應(yīng)用環(huán)境,需要進(jìn)一步研究基于分布式處理的數(shù)據(jù)還原中心實(shí)現(xiàn)方案。(2)該系統(tǒng)沒(méi)有實(shí)現(xiàn)對(duì)已還原的網(wǎng)頁(yè)信息進(jìn)行自動(dòng)化處理,沒(méi)有智能地分析出含有有害或不安全的網(wǎng)頁(yè)信息,可朝著這一方向做個(gè)智能化處理系統(tǒng)。
參考文獻(xiàn)[1]譚敏生,湯亮.基于HTTP的網(wǎng)絡(luò)數(shù)據(jù)包還原技術(shù)研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2007,17(6):176.[2]鄧碩,基于網(wǎng)絡(luò)數(shù)據(jù)包的網(wǎng)頁(yè)信息還原實(shí)現(xiàn)技術(shù)研究[D].武昌:華中科技大學(xué).2007.[3]陳曉蘇,鄧碩,熊兵.基于HTTP1.1的WEB信息還原關(guān)鍵技術(shù)研究[J].電腦開(kāi)發(fā)與應(yīng)用,2008,20(4):48.[4]王津林,趙滿勝.網(wǎng)絡(luò)監(jiān)控系統(tǒng)在局域網(wǎng)的應(yīng)用[J].信息安全與通信保密,2004(2):58-59.[5]武蒼林.Web技術(shù)發(fā)展綜述[J].電腦與信息技術(shù),2000,5(2):48-50.[6]BalachanderKrishnamurthyJenniferRexford.WebProtocolsandPractice[M].北京:科學(xué)出版社,2007:3-4.[7]CNNIC.第17次中國(guó)互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告[R].北京:中國(guó)互聯(lián)網(wǎng)絡(luò)信息中心,2006.[8]孫銳,趙戰(zhàn)生.隱私權(quán)"撞擊"網(wǎng)絡(luò)監(jiān)控.信息網(wǎng)絡(luò)安全[J],2003,6(7):25-26.[9]彭祚鵬,基于協(xié)議分析的網(wǎng)絡(luò)信息還原及挖掘[D].成都:成都理工大學(xué).2008.[10]尤文堅(jiān).利用WinPcap捕獲網(wǎng)絡(luò)底層數(shù)據(jù)包的方法[J].科技資訊,2006,8(25):84.[11]劉文濤.網(wǎng)絡(luò)安全開(kāi)發(fā)包詳解[M].北京:電子工業(yè)出版社,2005:4-5.[12]甘剛,Linux/Unix網(wǎng)絡(luò)編程[M].北京:中國(guó)水利水電出版社,2008:12-13.[13]劉文濤.網(wǎng)絡(luò)安全編程技術(shù)與實(shí)力[M].北京:機(jī)械工業(yè)出版社,2008:183-185,222-223.[14]RFC2616,NetworkWorkingGroup[S],北京:中國(guó)標(biāo)準(zhǔn)出版社,1999.[15]LloydWood,PeterHolliday,DanielFloreani.MovingdatainDTNswithHTTPandMIME[R].London:CentreforCommunicationSystemsResearch,2009.[16]郭荷清,劉正喜.使用壓縮技術(shù)改善WebService的傳輸性能[J].計(jì)算機(jī)應(yīng)用與軟件,2006,23(6):102-104.
附錄1各模塊詳細(xì)代碼1.數(shù)據(jù)包捕獲模塊部分代碼voidCmonitorDlg::OnBnClickedBtnStart()//"開(kāi)始截包"Button消息響應(yīng)函數(shù){ CButton*btn_start=(CButton*)GetDlgItem(ID_BTN_START); CButton*btn_stop=(CButton*)GetDlgItem(ID_BTN_STOP); CButton*btn_close=(CButton*)GetDlgItem(IDC_BTN_CLOSE); btn_start->EnableWindow(false); btn_close->EnableWindow(false); btn_stop->EnableWindow(true); is_cap_data=true; AfxBeginThread(Cappacketlivethread,GetSafeHwnd()); listctrl_column_clear(); OnTimer(1);}UINTCappacketlivethread(LPVOIDpParam)//線程函數(shù) { intres; structpcap_pkthdr*header; constu_char*pkt_data; list_node*pnode=0; //AfxMessageBox("cap"); while(is_cap_data) { if((res=pcap_next_ex(adhandle,&header,&pkt_data))>=0) { packet_handler(header,pkt_data); if(complete_data_len>complete_data_last_print) { //想消息隊(duì)列發(fā)送WM_TIMER消息 SendMessage(::AfxGetApp()->m_pMainWnd->m_hWnd,WM_TIMER,0,0); } } } return0;}2.數(shù)據(jù)包分析模塊部分代碼voidpacket_handler(conststructpcap_pkthdr*header,constu_char*pkt_data){ if((unsignedlong)pkt_data>0xcccccccc) { return; } structtm*ltime; chartimestr[16]; time_tlocal_tv_sec; ethernet_header*eh;//Ethernet頭 size_t ethernet_len=0;//Ethernet封包長(zhǎng)度 eh=(ethernet_header*)pkt_data;//獲得Ethernet頭部的位置 ethernet_len=header->len; local_tv_sec=header->ts.tv_sec; //將時(shí)間戳轉(zhuǎn)換成可識(shí)別的格式 ltime=localtime(&local_tv_sec); strftime(timestr,sizeoftimestr,"%H:%M:%S",ltime); if(header->len!=0) { decEthernet(eh,ethernet_len); } }voiddecEthernet(constethernet_header*eh,size_tethernet_len){ size_tethernet_header_len=0; //Ethernet頭長(zhǎng)度 mac_addresssmac={0,0,0,0,0,0};//MAC發(fā)送地址 mac_addressdmac={0,0,0,0,0,0};//MAC接收地址 ip_header*ih; //IP頭 size_tip_len=0; //IP封包長(zhǎng)度 ethernet_header_len=sizeof(ethernet_header);//獲得Ethernet頭長(zhǎng)度 ih=(ip_header*)((u_char*)eh+ethernet_header_len);//獲得IP數(shù)據(jù)包頭部的位置 ip_len=ethernet_len-ethernet_header_len;//獲得IP數(shù)據(jù)包長(zhǎng)度 smac.byte1=eh->smac.byte1;//獲得MAC地址 smac.byte2=eh->smac.byte2; smac.byte3=eh->smac.byte3; smac.byte4=eh->smac.byte4; smac.byte5=eh->smac.byte5; smac.byte6=eh->smac.byte6; dmac.byte1=eh->dmac.byte1; dmac.byte2=eh->dmac.byte2; dmac.byte3=eh->dmac.byte3; dmac.byte4=eh->dmac.byte4; dmac.byte5=eh->dmac.byte5; dmac.byte6=eh->dmac.byte6; decIP(ih,ip_len);}voiddecIP(ip_header*ih,size_tip_len){ size_tip_header_len=0; //IP頭長(zhǎng)度 ip_addresssaddr={0,0,0,0};//發(fā)送端地址 ip_addressdaddr={0,0,0,0};//接收端地址 tcp_header*th; //TCP頭 size_tTCP_len=0; //TCP封包長(zhǎng)度 udp_header*uh; //UDP頭 size_tUDP_len=0; //UDP封包長(zhǎng)度 ip_header_len=(ih->ver_ihl&0xf)*4;//獲得IP頭長(zhǎng)度 saddr.byte1=ih->saddr.byte1;//提取ip saddr.byte2=ih->saddr.byte2; saddr.byte3=ih->saddr.byte3; saddr.byte4=ih->saddr.byte4; daddr.byte1=ih->daddr.byte1; daddr.byte2=ih->daddr.byte2; daddr.byte3=ih->daddr.byte3; daddr.byte4=ih->daddr.byte4; switch(ih->proto) { case01: //printf("ICMP\n"); break; case02: //printf("ICMP\n"); break; case06: //printf("TCP\n"); th=(tcp_header*)((u_char*)ih+ip_header_len);//獲得TCP首部的位置 TCP_len=ip_len-ip_header_len; decTcp(th,TCP_len,saddr,daddr); break; case17: //printf("UDP\n"); break; case89: //printf("OSPF\n"); break; default: //printf("notdefine\n"); break; }}voiddecTcp(consttcp_header*th,size_ttcp_len,ip_addresssaddr,ip_addressdaddr){ u_char*pTCP_data=0; //TCP數(shù)據(jù)段頭指針(緊接著TCP頭后面) size_ttcp_header_len=0; //TCP頭長(zhǎng)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)院醫(yī)保科年度工作總結(jié)
- 退役軍人服務(wù)保障體系標(biāo)準(zhǔn)化建設(shè)
- 求職者面試技巧全套教程
- 一般工貿(mào)行業(yè)新員工三級(jí)安全培訓(xùn)考試試題及答案
- 建設(shè)工程施工合同糾紛要素式起訴狀模板修改無(wú)約束
- 不用熬夜寫(xiě)!建設(shè)工程施工合同糾紛要素式起訴狀模板現(xiàn)成用
- 保險(xiǎn)講師培訓(xùn)
- 環(huán)境友好催化技術(shù)課件
- 調(diào)色年終總結(jié)和配料(3篇)
- 公務(wù)員法執(zhí)行情況自查報(bào)告
- 2026年游戲AB測(cè)試實(shí)施方法含答案
- 2025湖南湘西鶴盛原煙發(fā)展有限責(zé)任公司招聘擬錄用人員筆試歷年備考題庫(kù)附帶答案詳解
- 江蘇省2025年普通高中學(xué)業(yè)水平合格性考試英語(yǔ)試卷(含答案)
- 枕骨骨折的護(hù)理課件
- TCEC電力行業(yè)數(shù)據(jù)分類(lèi)分級(jí)規(guī)范-2024
- 駱駝的養(yǎng)殖技術(shù)與常見(jiàn)病防治
- GB/T 26951-2025焊縫無(wú)損檢測(cè)磁粉檢測(cè)
- 2025及未來(lái)5-10年高壓管匯項(xiàng)目投資價(jià)值市場(chǎng)數(shù)據(jù)分析報(bào)告
- 腹部手術(shù)圍手術(shù)期疼痛管理指南(2025版)課件
- 2025年衛(wèi)生人才評(píng)價(jià)考試(臨床醫(yī)學(xué)工程技術(shù)中級(jí))歷年參考題庫(kù)含答案
- 呼吸康復(fù)科普脫口秀
評(píng)論
0/150
提交評(píng)論