LAN管理器的設(shè)計(jì)與實(shí)現(xiàn)主機(jī)信息探測(cè)與查詢(xún)子系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)說(shuō)明書(shū)
《LAN管理器的設(shè)計(jì)與實(shí)現(xiàn)主機(jī)信息探測(cè)與查詢(xún)子系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)說(shuō)明書(shū)》由會(huì)員分享,可在線閱讀,更多相關(guān)《LAN管理器的設(shè)計(jì)與實(shí)現(xiàn)主機(jī)信息探測(cè)與查詢(xún)子系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(47頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 單位代碼 10 學(xué) 號(hào) 分 類(lèi) 號(hào) TP393 密 級(jí) 畢業(yè)設(shè)計(jì)說(shuō)明書(shū) LAN管理器的設(shè)計(jì)與實(shí)現(xiàn) —主機(jī)信息探測(cè)與查詢(xún)子系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 院(系)名稱(chēng) 專(zhuān)業(yè)名稱(chēng) 學(xué)生姓名 指導(dǎo)教師 2012年5月14日 LAN管理器的設(shè)計(jì)與實(shí)現(xiàn) ——主機(jī)信息探測(cè)與查詢(xún)子系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 摘 要 目前,局域網(wǎng)已廣泛應(yīng)用于機(jī)關(guān)、學(xué)校、企事業(yè)單位等。圍繞LAN管理器課程局域網(wǎng)建設(shè)任務(wù),基于TCP/IP協(xié)議棧,在
2、Windows下用VC編程語(yǔ)言,設(shè)計(jì)、實(shí)現(xiàn)了LAN管理器的主機(jī)信息探測(cè)與查詢(xún)子系統(tǒng)。概述了課題的選題背景、課題來(lái)源、畢業(yè)設(shè)計(jì)任務(wù)及畢業(yè)設(shè)計(jì)說(shuō)明書(shū)的組織結(jié)構(gòu),說(shuō)明了主機(jī)信息探測(cè)與查詢(xún)子系統(tǒng)的功能需求、性能需求和用戶(hù)需求,重點(diǎn)介紹了LAN管理器的總體設(shè)計(jì)及主機(jī)信息探測(cè)與查詢(xún)子系統(tǒng)的具體實(shí)現(xiàn)環(huán)境和主要實(shí)現(xiàn)代碼。測(cè)試結(jié)果表明該子系統(tǒng)能夠正常工作,實(shí)現(xiàn)了預(yù)期目的,為L(zhǎng)AN管理器的設(shè)計(jì)和實(shí)現(xiàn)打下了基礎(chǔ)。 關(guān)鍵詞:LAN管理器,主機(jī)信息,探測(cè)與查詢(xún),VC 黃河科技學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū) 第 II 頁(yè) Design and Implementati
3、on of LAN Manager —— Host Detection and Query Subsystem Design and Achieve Author:Xing Ming Tutor:Sun Feixian Abstract Local area networks (LAN) have been widely applied in offices, schools, enterprises, institutions, and etc. Rounding the graduation designing tasks, a host information detect
4、ion and query sub-system is designed and implemented. The presented sub-system is based on Windows operating system, and it is implemented by VC programming language. With the research background and sources of the subject introduced, the graduate design tasks and organizational structure are given.
5、 Following that, the functional requirements, performance requirements and user requirements of the sub-system are illustrated. And then, the overall and detailed design methods of the host information detection and query sub-system are also given. Finally, the implementation environment and the mai
6、n codes of the sub-system are described. Testing results show that the sub-system can work properly. Thus, it lays the foundation for the design and implementation of LAN management system. Keywords: LAN Management, Host Information, Detection and query, VC 黃河科技學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū) 第 43 頁(yè)
7、 目 錄 1 緒論 1 1.1 選題背景 1 1.2 課題來(lái)源 1 1.3 畢設(shè)任務(wù)及本人貢獻(xiàn) 1 1.4 畢業(yè)設(shè)計(jì)說(shuō)明書(shū)的組織結(jié)構(gòu) 2 2 需求分析 3 2.1 功能需求 3 2.2 性能需求 3 2.3 用戶(hù)需求 3 3 系統(tǒng)設(shè)計(jì) 4 3.1 設(shè)計(jì)思想 4 3.2 總體設(shè)計(jì) 4 3.3 詳細(xì)設(shè)計(jì) 5 4 系統(tǒng)實(shí)現(xiàn) 6 4.1 系統(tǒng)實(shí)現(xiàn)環(huán)境說(shuō)明 6 4.2 主要模塊的實(shí)現(xiàn) 6 5 系統(tǒng)測(cè)試 17 4.1 測(cè)試目的 17 4.2 測(cè)試方法 17 4.3 測(cè)試用例與測(cè)試結(jié)果 17 4.4 測(cè)試結(jié)論 22
8、 結(jié)論 23 致謝 24 參考文獻(xiàn) 25 附錄 26 源代碼 26 1 緒論 1.1 選題背景 自從計(jì)算機(jī)問(wèn)世以來(lái),安全問(wèn)題就一直存在。特別是隨著Internet的迅速擴(kuò)張和電子商務(wù)的興起,人們發(fā)現(xiàn)保護(hù)資源和數(shù)據(jù)的安全,讓他免受來(lái)自惡意入侵者的威脅是件相當(dāng)困難的事。提到網(wǎng)絡(luò)安全,很多人首先想到的是防火墻,防火墻作為一種靜態(tài)的訪問(wèn)控制類(lèi)安全產(chǎn)品通常使用包過(guò)濾的技術(shù)來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)的隔離。適當(dāng)配置的防火墻雖然可以將非預(yù)期的訪問(wèn)請(qǐng)求屏蔽在外,但不能檢查出經(jīng)過(guò)他的合法流量中是否包含著惡意的入侵代碼。 隨著入侵手段的日益復(fù)雜和通用系統(tǒng)不時(shí)出現(xiàn)的安全缺陷,預(yù)先評(píng)估分析網(wǎng)絡(luò)系統(tǒng)中存在的
9、安全問(wèn)題,已經(jīng)成為網(wǎng)絡(luò)管理員們的重要需求?;诰W(wǎng)絡(luò)的安全掃描主要掃描設(shè)定網(wǎng)絡(luò)內(nèi)的服務(wù)器、路由器、網(wǎng)橋、交換機(jī)、訪問(wèn)服務(wù)器、防火墻等設(shè)備的安全漏洞,并可設(shè)定模擬攻擊,以測(cè)試系統(tǒng)的防御能力。這種技術(shù)模擬入侵者可能的攻擊行為,從系統(tǒng)外部進(jìn)行掃描,以探測(cè)是否存在可以被入侵者利用的系統(tǒng)安全薄弱之處。針對(duì)網(wǎng)絡(luò)入侵手段日益復(fù)雜、操作系統(tǒng)漏洞不斷涌現(xiàn)等問(wèn)題,預(yù)先評(píng)估網(wǎng)絡(luò)信息系統(tǒng)存在的安全問(wèn)題已成為網(wǎng)絡(luò)管理員的重要需求。如何保障自身網(wǎng)絡(luò)的安全,其中一個(gè)主要的方法就是自查自糾,而在這個(gè)過(guò)程中,對(duì)自己的網(wǎng)絡(luò)進(jìn)行掃描成為一種較為快捷、直觀、簡(jiǎn)單的方法。掃描技術(shù)基于TCP/IP協(xié)議,對(duì)各種網(wǎng)絡(luò)服務(wù),無(wú)論是主機(jī)或者防火墻
10、、路由器都適用。同時(shí), 掃描可以確認(rèn)各種配置的正確性,避免遭受不必要的攻擊。為了提高掃描的效率和精確度,主機(jī)的信息探測(cè)就是必不可少的?!? 1.2 課題來(lái)源 本課題來(lái)自河南省教育廳自然科學(xué)研究計(jì)劃項(xiàng)目(編號(hào)2010A520048)。 1.3 畢設(shè)任務(wù)及本人貢獻(xiàn) 圍繞LAN管理器研究,采用ARP、Ping技術(shù),設(shè)計(jì)主機(jī)信息的探測(cè)與查詢(xún)方法,并用VC編程實(shí)現(xiàn),同時(shí)連接數(shù)據(jù)庫(kù)。要求:探測(cè)速度盡可能快;既能探測(cè)單個(gè)目標(biāo)主機(jī)的信息,也能探測(cè)某一IP地址區(qū)間內(nèi)主機(jī)的信息;具備一定穿透防火墻的能力。 具體畢業(yè)設(shè)計(jì)任務(wù)如下: (1)根據(jù)任務(wù)書(shū)要求,收集材料,對(duì)比分析,完成譯文和文獻(xiàn)綜述; (2
11、)完成開(kāi)題報(bào)告; (3)學(xué)習(xí)局域網(wǎng)程序設(shè)計(jì)知識(shí),設(shè)計(jì)并實(shí)現(xiàn)主機(jī)信息探測(cè)與查詢(xún)子系統(tǒng); (4)撰寫(xiě)畢業(yè)設(shè)計(jì)說(shuō)明書(shū)。 本人的主要貢獻(xiàn)主要有以下幾點(diǎn): (1)完成譯文和文獻(xiàn)綜述; (2)完成了開(kāi)題報(bào)告; (3)實(shí)現(xiàn)了LAN管理器的總體設(shè)計(jì)和數(shù)據(jù)庫(kù)設(shè)計(jì); (4)測(cè)試了主機(jī)信息探測(cè)與查詢(xún)子系統(tǒng); (5)撰寫(xiě)了畢業(yè)設(shè)計(jì)說(shuō)明書(shū)。 1.4 畢業(yè)設(shè)計(jì)說(shuō)明書(shū)的組織結(jié)構(gòu) 本學(xué)位論文包括中英文摘要、目錄、緒論、正文、總結(jié)、參考文獻(xiàn)、致謝、源代碼,共八個(gè)部分。其中,論文的緒論、正文和總結(jié)三部分的組織安排如下: (1) 緒論:首先介紹了課題的研究背景和課題來(lái)源,然后介紹了本文的研究?jī)?nèi)容與主要貢
12、獻(xiàn),最后列出了論文的組織結(jié)構(gòu)。 (2) 需求分析:主要介紹了該系統(tǒng)的用戶(hù)需求、功能需求和性能需求。 (3) 系統(tǒng)設(shè)計(jì):詳細(xì)介紹了LAN管理器主機(jī)信息探測(cè)與查詢(xún)子系統(tǒng)的基本思想、整體設(shè)計(jì)和詳細(xì)設(shè)計(jì)。 (4) 系統(tǒng)實(shí)現(xiàn):給出系統(tǒng)實(shí)現(xiàn)的標(biāo)準(zhǔn)測(cè)試環(huán)境和實(shí)現(xiàn)系統(tǒng)的主要代碼。 (5) 系統(tǒng)測(cè)試:在標(biāo)準(zhǔn)測(cè)試環(huán)境下的測(cè)試結(jié)果進(jìn)行分析。 (6) 總結(jié):對(duì)論文的主要工作進(jìn)行了總結(jié)。 2 需求分析 2.1 功能需求 (1) 探測(cè)與查詢(xún)功能 可利用多種技術(shù)對(duì)主機(jī)信息進(jìn)行探測(cè)與查詢(xún)。 (2) 防火墻穿越功能 防火墻穿越,即在對(duì)方已安裝防火墻并且正常運(yùn)行的情況下
13、探測(cè)主機(jī)信息,這是主機(jī)信息探測(cè)與查詢(xún)系統(tǒng)的核心功能,也是主機(jī)信息探測(cè)與查詢(xún)系統(tǒng)必不可少的功能。 2.2 性能需求 盡可能快的探測(cè)到主機(jī)信息,既能探測(cè)單個(gè)目標(biāo)主機(jī)的信息,也能探測(cè)某一IP地址區(qū)間內(nèi)主機(jī)的信息,具備一定穿透防火墻的能力,同時(shí)準(zhǔn)確率不低于90%。 2.3 用戶(hù)需求 用戶(hù)需求主要有以下幾個(gè)方面: (1) 通過(guò)簡(jiǎn)單的操作就能夠探測(cè)到主機(jī)信息,并且有必要的返回信息并記錄結(jié)果; (2) 在對(duì)方打開(kāi)防火墻禁止Ping的時(shí)候,我們Ping不通的時(shí)候應(yīng)該通過(guò)一種有效的方式來(lái)探測(cè)到對(duì)方主機(jī)信息; (3) 可以同時(shí)探測(cè)多個(gè)主機(jī)的信息; (4) 在某一主機(jī)的信息發(fā)生變更時(shí)可以
14、更新出所變更后的信息; (5) 具有數(shù)據(jù)存儲(chǔ)功能。 3 系統(tǒng)設(shè)計(jì) 3.1 設(shè)計(jì)思想 通過(guò)arp協(xié)議,調(diào)用arp功能函數(shù),實(shí)現(xiàn)主機(jī)信息的探測(cè),通過(guò)函數(shù)的返回值來(lái)判斷主機(jī)的是否存活,并且獲取存活主機(jī)的mac。然后通過(guò)IP層協(xié)議獲取主機(jī)的詳細(xì)信息(gethostbyaddr),例如:主機(jī)名字,地址類(lèi)型,主機(jī)網(wǎng)絡(luò)地址等;當(dāng)獲取信息之后存入數(shù)據(jù)庫(kù)(sql server 2005),于是要用到數(shù)據(jù)庫(kù)的存取知識(shí)。由于探測(cè)主機(jī)的范圍比較大,所以需要用到多線程的思想。 3.2 總體設(shè)計(jì) 基于ARP協(xié)議的主機(jī)信息探測(cè)與查詢(xún)系統(tǒng)主要包括域名解析和IP地址的轉(zhuǎn)換、ARP請(qǐng)求發(fā)送與處
15、理兩大模塊,各模塊的功能簡(jiǎn)述如下: 域名解析及IP地址轉(zhuǎn)換:調(diào)用inet_addr將輸入的點(diǎn)分十進(jìn)制數(shù)表示的IP地址轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)順序的IP地址;獲取主機(jī)名:調(diào)用gethostbyaddr獲取存活主機(jī)的主機(jī)名; ARP請(qǐng)求發(fā)送與處理:調(diào)用sendARP函數(shù)向目標(biāo)地址發(fā)送ARP請(qǐng)求;獲取MAC地址,判斷ARP返回的MAC地址轉(zhuǎn)換成易讀的形式,并將主機(jī)信息寫(xiě)入數(shù)據(jù)庫(kù)。 依據(jù)上述理論,具體的功能模塊如圖3.1所示。 圖3.1 功能模塊 3.3 詳細(xì)設(shè)計(jì) 依據(jù)畢業(yè)設(shè)計(jì)任務(wù)書(shū)要求,自己負(fù)責(zé)設(shè)計(jì)的LAN管理器的主機(jī)信息與探測(cè)流程圖如圖3.2所示。 圖3.2 程序探測(cè)流程圖 4
16、 系統(tǒng)實(shí)現(xiàn) 4.1 系統(tǒng)實(shí)現(xiàn)環(huán)境說(shuō)明 操作系統(tǒng):Windows xp 開(kāi)發(fā)工具:Visual studio 6.0 數(shù)據(jù)庫(kù):sql server 2005 4.2 主要模塊的實(shí)現(xiàn) (1) 封裝CDataClass類(lèi) 首先封裝了一個(gè)基于CObject類(lèi)的CDataClass類(lèi)來(lái)操作數(shù)據(jù)庫(kù),有連接數(shù)據(jù)庫(kù),打開(kāi)數(shù)據(jù)庫(kù)記錄,添加信息,刪除信息,更新信息等功能,代碼如下: class CDataClass:CObject { public: CDataClass(); bool Delete(CString sql); bool Insert(CString sq
17、l); bool Update(CString sql); _RecordsetPtr & Select(CString sql); bool Close(); bool Open(); _RecordsetPtr pRst; ~CDataClass(); private: _ConnectionPtr pConn; // 建立Connection _CommandPtr pCmd; // 建立Command }; CDataClass::CDataClass() { WaitForSingleObject(h
18、Mutex,INFINITE); CoInitialize(NULL); pRst.CreateInstance(__uuidof(Recordset)); pConn.CreateInstance(__uuidof(Connection)); pCmd.CreateInstance(__uuidof(Command)); } bool CDataClass::Open() { HRESULT res=0; try { pConn->ConnectionString ="Provider=SQLOLEDB.1; Integrated Security=SS
19、PI; Persist Security Info=False; Initial Catalog=LanMana; Data Source=.";//LT-PC\\SQLEXPRESS res=pConn->Open("","","",adModeUnknown); pCmd->ActiveConnection=pConn; } catch (_com_error e) { AfxMessageBox(e.Description()); return false; } return true; } _RecordsetPtr & CDa
20、taClass::Select(CString sql) { try { pCmd->CommandText=(LPCTSTR)sql; pRst=pCmd->Execute(NULL,NULL,adCmdText); } catch (_com_error e) { AfxMessageBox(e.Description()); } return pRst; } bool CDataClass::Insert(CString sql) { try { pCmd->CommandText=(LPCTSTR)sql; p
21、Cmd->Execute(NULL,NULL,adCmdText); } catch (_com_error e) { AfxMessageBox(e.Description()); return false; } return true; } bool CDataClass::Delete(CString sql) { try { pCmd->CommandText=(LPCTSTR)sql; pCmd->Execute(NULL,NULL,adCmdText); } catch (_com_error e) {
22、 AfxMessageBox(e.Description()); return false; } return true; } bool CDataClass::Update(CString sql) { try { pCmd->CommandText=(LPCTSTR)sql; pCmd->Execute(NULL,NULL,adCmdText); } catch (_com_error e) { AfxMessageBox(e.Description()); return false; } return true;
23、 } bool CDataClass::Close() { try { pConn->Close(); } catch (_com_error e) { AfxMessageBox(e.Description()); ReleaseMutex(hMutex); return false; } return true; } CDataClass::~CDataClass() { CoUninitialize(); ReleaseMutex(hMutex); } (2) 所用的主要成員變量如圖4.1所示。 圖4.1 主要
24、成員變量 (3) 初始化函數(shù)代碼 通過(guò)初始化函數(shù)探測(cè)該主機(jī)所在IP地址的地址段信息,并初始化列表函數(shù)的頭標(biāo)題,代碼如下: WSADATA wsadata; CString str; if(WSAStartup(MAKEWORD(2,2),&wsadata)) { str.Format("不能初始化sock!"); MessageBox((LPCTSTR)str); exit(0); } char hostname[256]; gethostname(hostname,sizeof(hostname)); hostent *host=gethostbyname(h
25、ostname); char* IP=inet_ntoa(*(in_addr*)host->h_addr_list[0]); m_IPAddress.Format("%s",IP); int a,b,c; sscanf(IP,"%d.%d.%d.%d",&a,&b,&c,&m_Begin); m_IPAddressPre.Format("%d.%d.%d.",a,b,c); m_Pre.Format("%s",(LPCTSTR)m_IPAddressPre); m_Begin=1; UpdateData(false); //隱藏側(cè)邊欄 OnButtonSorh(); //
26、初始化互斥量 hMutex=CreateMutex(NULL,false,NULL); LVCOLUMN lvColumn; char HeaderTxt[5][10]= {"序號(hào)","IP地址","電腦名","MAC地址","操作系統(tǒng)"}; int nWidth[5]={50,100,100,120,100}; for(int i=0;i<5;i++) { lvColumn.mask = LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH|LVCF_FMT; lvColumn.fmt = LVCFMT_CENTER; lvColumn.iSubItem
27、= i; lvColumn.pszText = HeaderTxt[i]; lvColumn.cx = nWidth[i]; m_Info.InsertColumn(i,&lvColumn); } (4) 探測(cè)該局域網(wǎng)內(nèi)存活的主機(jī)的代碼 檢測(cè)函數(shù): void CLanManaDlg::OnButtonIndex() { // TODO: Add your control notification handler code here //向數(shù)據(jù)庫(kù)增加數(shù)據(jù) if(m_IsOn==true) { UpdateData(true); CDataClass
28、 ado; CString sql; if(!ado.Open()) return; for (int i=m_Begin;i<=m_End;i++) { if(i==m_Begin) { sql.Format("delete from IPInfo"); if(!ado.Delete(sql)) return; } sql.Format("insert into IPInfo values(%s%d,,,0,)",(LPCTSTR)m_IPAddressPre,i); if(!ado.Inse
29、rt(sql)) return; } if(!ado.Close()) return; m_Index.SetWindowText("中止"); SetTimer(1,2000,NULL); int * span=new int[2]; span[0]=m_Begin; span[1]=m_End; m_HThread=AfxBeginThread(ExploreHost,span); if(m_HThread==NULL) exit(1); m_IsOn=false; } else { m
30、_Index.SetWindowText("檢測(cè)"); TerminateThread(m_HThread,-1); KillTimer(1); m_IsOn=true; } } (5) 線程函數(shù)以及探測(cè)函數(shù) UINT CLanManaDlg::ExploreHost(LPVOID param) { int *span=(int *)param; int begin=span[0],end=span[1]; delete span; while(true) { for (int i=begin;i<=end;i+=SPAN) {
31、
int *p=new int[2];
p[0]=i;
if(i+SPAN 32、aram;
int begin=p[0],end=p[1];
delete p;
BYTE Mac[6];
CString IP;
for (int i=begin;i 33、tr;
CString strMac("");
CString strHostname("");
int i;
for(i=0;i<=5;i++)
{
if(i==5)
{
str.Format("%02X",Mac[i]);
}
else
str.Format("%02X:",Mac[i]);
strMac += str;
}
IPAddr ipAddr;
char buf[256];
ipAddr = inet_addr ((LPCTST 34、R)IP);
ZeroMemory(buf,256);
hostent * remoteHostent = gethostbyaddr( (char*)&ipAddr,sizeof( in_addr ), AF_INET );
if ( remoteHostent )
strHostname = remoteHostent->h_name;
//操作數(shù)據(jù)庫(kù)
CString sql;
CDataClass dao;
int res=dao.Open();
if(res==-1)
return -1;
sq 35、l.Format("update IPInfo set hostname=%s,MAC=%s,isonline=1 where IP=%s",(LPCTSTR)strHostname,(LPCTSTR)strMac,(LPCTSTR)IP);
if(!dao.Update(sql))
return -1;
if(!dao.Close())
return -1;
}
else{
CString sql;
CDataClass dao;
if(!dao.Open())
return -1;
sql.Format(" 36、update IPInfo set isonline=0 where IP=%s",(LPCTSTR)IP);
if(!dao.Update(sql))
return -1;
if(!dao.Close())
return -1;
}
}
return 0;
}
(6) 精確查詢(xún)、模糊查詢(xún)的代碼
void CLanManaDlg::OnButtonQuary()
{
// TODO: Add your control notification handler code here
UpdateData(true);
if 37、 (m_IsAuto==true)
{
KillTimer(1);
m_Refresh.SetWindowText("繼續(xù)");
m_IsAuto=false;
}
int ID1,ID2;
CString str1,str2;
ID1=GetCheckedRadioButton(IDC_RADIO_EXACT,IDC_RADIO_DIM);
ID2=GetCheckedRadioButton(IDC_RADIO_HOSTNAME,IDC_RADIO_MAC);
((CButton*)GetDlgItem(ID1))->GetWindowText( 38、str1);
((CButton*)GetDlgItem(ID2))->GetWindowText(str2);
if(!str1.Compare("精確"))
{
if (!str2.Compare("主機(jī)名"))
{
CString sql;
sql.Format("select * from IPInfo where hostname=%s and isonline=1",(LPCTSTR)m_Text);
GetData(sql);
}
else if (!str2.Compare("IP地址"))
{
CString 39、 sql;
sql.Format("select * from IPInfo where IP=%s and isonline=1",(LPCTSTR)m_Text);
GetData(sql);
}
else
{
CString sql;
sql.Format("select * from IPInfo where MAC=%s and isonline=1",(LPCTSTR)m_Text);
GetData(sql);
}
}
else
{
if (!str2.Compare("主機(jī)名"))
{
CStr 40、ing sql;
sql.Format("select * from IPInfo where hostname like %%%s%% and isonline=1",(LPCTSTR)m_Text);
GetData(sql);
}
else if (!str2.Compare("IP地址"))
{
CString sql;
sql.Format("select * from IPInfo where IP like %%%s%% and isonline=1",(LPCTSTR)m_Text);
GetData(sql);
}
e 41、lse
{
CString sql;
sql.Format("select * from IPInfo where MAC like %%%s%% and isonline=1",(LPCTSTR)m_Text);
GetData(sql);
}
}
}
(7) 數(shù)據(jù)顯示函數(shù)
void CLanManaDlg::GetData(CString sql)
{
//操作數(shù)據(jù)庫(kù)
_RecordsetPtr pRst(__uuidof(Recordset));
CDataClass dao;
dao.Open();
pRst=dao 42、.Select(sql);
if(pRst==NULL)
return;
m_Info.DeleteAllItems();
int ID=0;
try{
while (!pRst->adoEOF)
{
CString num;
num.Format("%d",ID+1);
CString IP=(LPCTSTR)(_bstr_t)pRst->GetCollect("IP"),Hostname=(LPCTSTR)(_bstr_t)pRst->GetCollect("hostname"),MAC=(LPCTSTR)(_bstr_t)pR 43、st->GetCollect("MAC");
int IsOnline=(long)pRst->GetCollect("isonline");
CString OS=(LPCTSTR)(_bstr_t)pRst->GetCollect("OS");
m_Info.InsertItem(ID,(LPCTSTR)num);
m_Info.SetItemText(ID,1,(LPCTSTR)IP);
m_Info.SetItemText(ID,2,(LPCTSTR)Hostname);
m_Info.SetItemText(ID,3,(LPCTSTR) 44、MAC);
m_Info.SetItemText(ID,4,(LPCTSTR)OS);
ID++;
pRst->MoveNext();
}
pRst->Close();
dao.Close();
}
catch (_com_error e)
{
MessageBox(e.Description());
}
}
(8) 定時(shí)刷新
void CLanManaDlg::OnTimer(UINT nIDEvent)
{
CString sql("select * from IPInfo where isonline=1") 45、;
switch(nIDEvent) {
case 1:
GetData(sql);
break;
case 2:
break;
default:
;
}
CDialog::OnTimer(nIDEvent);
}
(9) 搜索區(qū)域的顯示與隱藏
void CLanManaDlg::OnButtonSorh()
{
static CRect RectLarge(0,0,0,0),RectSmall(0,0,0,0);
if(RectLarge.IsRectNull())
{
GetWindowRect(Rect 46、Large);
RectSmall=RectLarge;
RectSmall.right-=200;
}
if(m_IsShow)
{ SetWindowPos(NULL,RectLarge.left,RectLarge.right,RectLarge.Width(),RectLarge.Height(),SWP_NOZORDER|SWP_NOMOVE);
m_IsShow=false;
}
else
{
SetWindowPos(NULL,RectSmall.left,RectSmall.right,RectSmall.Width(),Rec 47、tSmall.Height(),SWP_NOZORDER|SWP_NOMOVE);
m_IsShow=true;
}
}
5 系統(tǒng)測(cè)試
5.1 測(cè)試目的
測(cè)試所做程序能否按照按照要求完成探測(cè)任務(wù),是否能夠快而準(zhǔn)確的得到結(jié)果,能否滿(mǎn)足用戶(hù)的需求。
5.2 測(cè)試方法
在局域網(wǎng)信息探測(cè)與查詢(xún)系統(tǒng)的開(kāi)發(fā)環(huán)境下進(jìn)行模擬測(cè)試,并組建一個(gè)小型的局域網(wǎng)來(lái)驗(yàn)證。
5.3 測(cè)試用例與測(cè)試結(jié)果
主界面如圖5.1所示。
圖5.1 程序界面
點(diǎn)擊檢測(cè)之后的結(jié)果如圖5.2所示。
圖5.2 程序界面
點(diǎn)擊”檢測(cè)”按鈕后,該按鈕會(huì)改變?yōu)椤爸兄埂卑粹o,在檢測(cè)過(guò)程中如點(diǎn)擊 48、“中止”按鈕,則會(huì)中止該次檢測(cè)。
縮小探測(cè)范圍所探測(cè)到的結(jié)果如圖5.3所示。
圖5.3 程序界面
若IP網(wǎng)段有所變化,可以點(diǎn)擊“刷新”按鈕,可以探測(cè)出新的網(wǎng)段。
刷新之前的界面如圖5.4所示。
圖5.4 程序界面
刷新之后的界面如圖5.5所示。
圖5.5 程序界面
如果在探測(cè)過(guò)程中有新的主機(jī)打開(kāi),同樣可以點(diǎn)擊“刷新”按鈕,便可以將新的主機(jī)信息顯示出來(lái)。
刷新之前的界面如圖5.6所示。
圖5.6 程序界面
刷新之后的界面如圖5.7所示。
圖5.7 程序界面
精確、模糊查詢(xún)界面如圖5.8所示。
圖5.8 程序界面
在該界面,可以通過(guò)主機(jī) 49、名、IP地址、MAC地址分別進(jìn)行精確和模糊的查詢(xún)。
精確、模糊查詢(xún)的事例如圖5.9、5.10所示。
圖5.9 程序界面
圖5.10 程序界面
5.4 測(cè)試結(jié)論
LAN管理器主機(jī)信息探測(cè)與查詢(xún)子系統(tǒng)能夠較好的實(shí)現(xiàn)主機(jī)信息的探測(cè)與查詢(xún)?nèi)蝿?wù),并且在其他主機(jī)防火墻開(kāi)啟的情況下依然可以探測(cè)到有效地信息,所顯示的信息也比較準(zhǔn)確,并且精確和模糊查詢(xún)功能也能運(yùn)行正常,能夠在較短的時(shí)間內(nèi)完成任務(wù)。所探測(cè)到的主機(jī)相關(guān)信息,可以同時(shí)更新到sql server數(shù)據(jù)庫(kù)中,做到了對(duì)探測(cè)結(jié)果的有效保存。LAN管理器主機(jī)信息探測(cè)與查詢(xún)子系統(tǒng)在功能方面,完成了探測(cè)與查詢(xún)功能和防火墻穿越功能,在性能方面,能夠 50、在較短的時(shí)間內(nèi)完成對(duì)單個(gè)或多個(gè)主機(jī)的信息探測(cè),準(zhǔn)確率也不低于90%,在用戶(hù)方面,做到了操作簡(jiǎn)單、界面簡(jiǎn)潔、及時(shí)更新、數(shù)據(jù)存儲(chǔ)等功能。LAN管理器主機(jī)信息探測(cè)與查詢(xún)子系統(tǒng)基本完成了預(yù)期的目標(biāo)。
結(jié)論
通過(guò)這次的局域網(wǎng)信息探測(cè)與查詢(xún)系統(tǒng)的設(shè)計(jì),讓我受益良多。這是一次綜合網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)和VC編程的設(shè)計(jì)過(guò)程。我了解和掌握了網(wǎng)絡(luò)的一些特性,并且能夠進(jìn)行數(shù)據(jù)庫(kù)的設(shè)計(jì)和使用VC進(jìn)行相關(guān)軟件的編程,同時(shí)培養(yǎng)了正確的設(shè)計(jì)思想和分析問(wèn)題解決問(wèn)題的能力,特別是整體設(shè)計(jì)和各功能模塊的詳細(xì)設(shè)計(jì)能力,以及解決實(shí)際碰到困難解決困難的能力,學(xué)到了很多知識(shí)。這位我們將來(lái)的發(fā)展提供了更多的機(jī)會(huì)。經(jīng)過(guò)這次畢業(yè) 51、設(shè)計(jì),我深深地體會(huì)到嚴(yán)謹(jǐn)、認(rèn)真、仔細(xì)、有耐心是一個(gè)網(wǎng)絡(luò)工程設(shè)計(jì)人員必須具備的素質(zhì)。
主機(jī)信息探測(cè)與查詢(xún)系統(tǒng)的工作分為四個(gè)步驟:獲取網(wǎng)段、確定范圍、開(kāi)始查詢(xún)、得出結(jié)果。隨著入侵手段的日益復(fù)雜和通用系統(tǒng)不時(shí)出現(xiàn)的安全缺陷,預(yù)先評(píng)估分析網(wǎng)絡(luò)系統(tǒng)中存在的安全問(wèn)題,已經(jīng)成為網(wǎng)絡(luò)管理員們的重要需求?;诰W(wǎng)絡(luò)的安全掃描主要掃描設(shè)定網(wǎng)絡(luò)內(nèi)的服務(wù)器、路由器、網(wǎng)橋、交換機(jī)、訪問(wèn)服務(wù)器、防火墻等設(shè)備的安全漏洞,并可設(shè)定模擬攻擊,以測(cè)試系統(tǒng)的防御能力。這種技術(shù)模擬入侵者可能的攻擊行為,從系統(tǒng)外部進(jìn)行掃描,以探測(cè)是否存在可以被入侵者利用的系統(tǒng)安全薄弱之處。主機(jī)信息探測(cè)與查詢(xún)系統(tǒng)也就可以來(lái)作為一個(gè)借鑒,用來(lái)研究和模擬入 52、侵者的行為,對(duì)我們以后的網(wǎng)路安全也能夠提供和一些保障。
由于水平有限及所需要學(xué)校的知識(shí)無(wú)限,在設(shè)計(jì)中難免有不少錯(cuò)誤和不足之處,還請(qǐng)老師們批評(píng)指正。
致謝
在此向尊敬的導(dǎo)師孫飛顯老師致以真誠(chéng)的謝意和敬意,感謝導(dǎo)師對(duì)我學(xué)習(xí)上孜孜不倦的教誨和生活上無(wú)微不至的關(guān)懷。導(dǎo)師淵博的知識(shí)、創(chuàng)新的思維、嚴(yán)于律己寬以待人的品質(zhì)影響著我,教育著我,不僅開(kāi)闊了我的思路,增長(zhǎng)了我的學(xué)識(shí),也使我在今后的學(xué)習(xí)、工作、生活中受益匪淺。衷心祝愿導(dǎo)師身體健康,萬(wàn)事如意。
感謝師兄對(duì)我工作的幫助,在我論文工作最無(wú)助的時(shí)候,支持我并和我一起調(diào)試程序,使我在比較短的時(shí)間內(nèi)解決了面臨的困難,能夠認(rèn)識(shí)你們是我人 53、生的一筆財(cái)富。
感謝我的家人在我求學(xué)期間對(duì)我無(wú)私的幫助和支持。
感謝抽空參與評(píng)審我論文的老師。
參考文獻(xiàn)
[1] 肖書(shū)成.Ad hoc網(wǎng)絡(luò)及其路由性能研究.重慶:重慶郵電學(xué)院學(xué)報(bào),2004.
[2] Basavaraj.無(wú)線網(wǎng)絡(luò) 54、中的IP.北京:人民郵電出版社,2004.
[3] Samir RD.Charles EE.Elizabeth M R Performance comparison of two on-demand routing protocols for Ad Hoc networks 2001,5:21~24.
[4] 蔡濤等.無(wú)線通信原理與應(yīng)用[M].北京:電子工業(yè)出版社,2006.
[5] C K Toh Ad Hoc Mobile Wireless Networks:Protocols and Systems2002.
[6] 于 55、斌,孫斌,溫暖等.NS2與網(wǎng)絡(luò)模擬.北京:人民郵電出版社.2008.
[7] 徐雷鳴,龐博,趙耀.NS與網(wǎng)絡(luò)模擬.北京:人民郵電出版社.2008.
[8] 鄭少仁,王海濤,趙志峰.Ad Hoc網(wǎng)絡(luò)技術(shù)2005 , 1:12~15.
[9] (美)斯托林斯,無(wú)線通信與網(wǎng)絡(luò).北京:清華人學(xué)出版社,2005.
[10] 林軍,謝維波.一種基于AODV協(xié)議的改進(jìn)協(xié)議EAODV. 貴州大學(xué)學(xué)報(bào)(自
然科學(xué)版).2008.
[11] 施榮華.崔奕芳.江玲. Ad Hoc網(wǎng)絡(luò)中QoS的路由協(xié)議算法研究.計(jì)算機(jī)科學(xué).2008.
[12] 王寧Ad Hoc技術(shù)在未來(lái)無(wú)線通信中的應(yīng)用
56、
附錄
源代碼
// LanManaDlg.h : header file
//
#if !defined(AFX_LANMANADLG_H__47CCEDF7_93D3_4C23_944F_EC0DCFC6077A__INCLUDED_)
#define AFX_LANMANADLG_H__47CCEDF7_93D3_4C23_944F_EC0DCFC6077A__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
////////////// 57、///////////////////////////////////////////////////////////////
// CLanManaDlg dialog
class CLanManaDlg : public CDialog
{
// Construction
public:
static UINT GetHostInfo(LPVOID param);
static UINT ExploreHost(LPVOID param);
CLanManaDlg(CWnd* pParent = NULL); // standard constructor
58、static CString m_IPAddressPre;
// Dialog Data
//{{AFX_DATA(CLanManaDlg)
enum { IDD = IDD_LANMANA_DIALOG };
CListCtrl m_Info;
CButton m_SORH;
CButton m_Select;
CButton m_Refresh;
CButton m_Quary;
CButton m_Index;
CString m_Text;
int m_End;
int m_Begin;
CString m_Pre;
//} 59、}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CLanManaDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
//{{AFX_MSG(CLanM 60、anaDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnButtonIndex();
afx_msg void OnButtonRefresh();
afx_msg void OnButtonSelect();
afx_msg void OnButtonQuary();
afx_msg voi 61、d OnTimer(UINT nIDEvent);
afx_msg void OnButtonSorh();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private:
bool m_IsAuto;
static _RecordsetPtr OperateDB(CString sql);
void PrintFigure();
bool m_IsShow;
HANDLE m_HThread;
bool m_IsOn;
void GetData(CString sql);
void ShowFigure();
void 62、ShowList();
bool m_IsIist;
CString m_IPAddress;
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_LANMANADLG_H__47CCEDF7_93D3_4C23_944F_EC0DCFC6077A__INCLUDED_)
// LanManaDlg.cpp : implemen 63、tation file
//
#include "stdafx.h"
#include "LanMana.h"
#include "LanManaDlg.h"
#include "DataClass.h"
#include 64、
#define SPAN 5
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
HANDLE hMutex =NULL;
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
p 65、ublic:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// 66、 Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫(kù)試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫(kù)試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫(kù)試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫(kù)及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫(kù)含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案