LAN管理器的設(shè)計(jì)與實(shí)現(xiàn)主機(jī)信息探測與查詢子系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)說明書
《LAN管理器的設(shè)計(jì)與實(shí)現(xiàn)主機(jī)信息探測與查詢子系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)說明書》由會(huì)員分享,可在線閱讀,更多相關(guān)《LAN管理器的設(shè)計(jì)與實(shí)現(xiàn)主機(jī)信息探測與查詢子系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)說明書(47頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 單位代碼 10 學(xué) 號(hào) 分 類 號(hào) TP393 密 級(jí) 畢業(yè)設(shè)計(jì)說明書 LAN管理器的設(shè)計(jì)與實(shí)現(xiàn) —主機(jī)信息探測與查詢子系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 院(系)名稱 專業(yè)名稱 學(xué)生姓名 指導(dǎo)教師 2012年5月14日 LAN管理器的設(shè)計(jì)與實(shí)現(xiàn) ——主機(jī)信息探測與查詢子系統(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編程語言,設(shè)計(jì)、實(shí)現(xiàn)了LAN管理器的主機(jī)信息探測與查詢子系統(tǒng)。概述了課題的選題背景、課題來源、畢業(yè)設(shè)計(jì)任務(wù)及畢業(yè)設(shè)計(jì)說明書的組織結(jié)構(gòu),說明了主機(jī)信息探測與查詢子系統(tǒng)的功能需求、性能需求和用戶需求,重點(diǎn)介紹了LAN管理器的總體設(shè)計(jì)及主機(jī)信息探測與查詢子系統(tǒng)的具體實(shí)現(xiàn)環(huán)境和主要實(shí)現(xiàn)代碼。測試結(jié)果表明該子系統(tǒng)能夠正常工作,實(shí)現(xiàn)了預(yù)期目的,為LAN管理器的設(shè)計(jì)和實(shí)現(xiàn)打下了基礎(chǔ)。 關(guān)鍵詞:LAN管理器,主機(jī)信息,探測與查詢,VC 黃河科技學(xué)院畢業(yè)設(shè)計(jì)說明書 第 II 頁 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ì)說明書 第 43 頁
7、 目 錄 1 緒論 1 1.1 選題背景 1 1.2 課題來源 1 1.3 畢設(shè)任務(wù)及本人貢獻(xiàn) 1 1.4 畢業(yè)設(shè)計(jì)說明書的組織結(jié)構(gòu) 2 2 需求分析 3 2.1 功能需求 3 2.2 性能需求 3 2.3 用戶需求 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)境說明 6 4.2 主要模塊的實(shí)現(xiàn) 6 5 系統(tǒng)測試 17 4.1 測試目的 17 4.2 測試方法 17 4.3 測試用例與測試結(jié)果 17 4.4 測試結(jié)論 22
8、 結(jié)論 23 致謝 24 參考文獻(xiàn) 25 附錄 26 源代碼 26 1 緒論 1.1 選題背景 自從計(jì)算機(jī)問世以來,安全問題就一直存在。特別是隨著Internet的迅速擴(kuò)張和電子商務(wù)的興起,人們發(fā)現(xiàn)保護(hù)資源和數(shù)據(jù)的安全,讓他免受來自惡意入侵者的威脅是件相當(dāng)困難的事。提到網(wǎng)絡(luò)安全,很多人首先想到的是防火墻,防火墻作為一種靜態(tài)的訪問控制類安全產(chǎn)品通常使用包過濾的技術(shù)來實(shí)現(xiàn)網(wǎng)絡(luò)的隔離。適當(dāng)配置的防火墻雖然可以將非預(yù)期的訪問請(qǐng)求屏蔽在外,但不能檢查出經(jīng)過他的合法流量中是否包含著惡意的入侵代碼。 隨著入侵手段的日益復(fù)雜和通用系統(tǒng)不時(shí)出現(xiàn)的安全缺陷,預(yù)先評(píng)估分析網(wǎng)絡(luò)系統(tǒng)中存在的
9、安全問題,已經(jīng)成為網(wǎng)絡(luò)管理員們的重要需求?;诰W(wǎng)絡(luò)的安全掃描主要掃描設(shè)定網(wǎng)絡(luò)內(nèi)的服務(wù)器、路由器、網(wǎng)橋、交換機(jī)、訪問服務(wù)器、防火墻等設(shè)備的安全漏洞,并可設(shè)定模擬攻擊,以測試系統(tǒng)的防御能力。這種技術(shù)模擬入侵者可能的攻擊行為,從系統(tǒng)外部進(jìn)行掃描,以探測是否存在可以被入侵者利用的系統(tǒng)安全薄弱之處。針對(duì)網(wǎng)絡(luò)入侵手段日益復(fù)雜、操作系統(tǒng)漏洞不斷涌現(xiàn)等問題,預(yù)先評(píng)估網(wǎng)絡(luò)信息系統(tǒng)存在的安全問題已成為網(wǎng)絡(luò)管理員的重要需求。如何保障自身網(wǎng)絡(luò)的安全,其中一個(gè)主要的方法就是自查自糾,而在這個(gè)過程中,對(duì)自己的網(wǎng)絡(luò)進(jìn)行掃描成為一種較為快捷、直觀、簡單的方法。掃描技術(shù)基于TCP/IP協(xié)議,對(duì)各種網(wǎng)絡(luò)服務(wù),無論是主機(jī)或者防火墻
10、、路由器都適用。同時(shí), 掃描可以確認(rèn)各種配置的正確性,避免遭受不必要的攻擊。為了提高掃描的效率和精確度,主機(jī)的信息探測就是必不可少的?!? 1.2 課題來源 本課題來自河南省教育廳自然科學(xué)研究計(jì)劃項(xiàng)目(編號(hào)2010A520048)。 1.3 畢設(shè)任務(wù)及本人貢獻(xiàn) 圍繞LAN管理器研究,采用ARP、Ping技術(shù),設(shè)計(jì)主機(jī)信息的探測與查詢方法,并用VC編程實(shí)現(xiàn),同時(shí)連接數(shù)據(jù)庫。要求:探測速度盡可能快;既能探測單個(gè)目標(biāo)主機(jī)的信息,也能探測某一IP地址區(qū)間內(nèi)主機(jī)的信息;具備一定穿透防火墻的能力。 具體畢業(yè)設(shè)計(jì)任務(wù)如下: (1)根據(jù)任務(wù)書要求,收集材料,對(duì)比分析,完成譯文和文獻(xiàn)綜述; (2
11、)完成開題報(bào)告; (3)學(xué)習(xí)局域網(wǎng)程序設(shè)計(jì)知識(shí),設(shè)計(jì)并實(shí)現(xiàn)主機(jī)信息探測與查詢子系統(tǒng); (4)撰寫畢業(yè)設(shè)計(jì)說明書。 本人的主要貢獻(xiàn)主要有以下幾點(diǎn): (1)完成譯文和文獻(xiàn)綜述; (2)完成了開題報(bào)告; (3)實(shí)現(xiàn)了LAN管理器的總體設(shè)計(jì)和數(shù)據(jù)庫設(shè)計(jì); (4)測試了主機(jī)信息探測與查詢子系統(tǒng); (5)撰寫了畢業(yè)設(shè)計(jì)說明書。 1.4 畢業(yè)設(shè)計(jì)說明書的組織結(jié)構(gòu) 本學(xué)位論文包括中英文摘要、目錄、緒論、正文、總結(jié)、參考文獻(xiàn)、致謝、源代碼,共八個(gè)部分。其中,論文的緒論、正文和總結(jié)三部分的組織安排如下: (1) 緒論:首先介紹了課題的研究背景和課題來源,然后介紹了本文的研究內(nèi)容與主要貢
12、獻(xiàn),最后列出了論文的組織結(jié)構(gòu)。 (2) 需求分析:主要介紹了該系統(tǒng)的用戶需求、功能需求和性能需求。 (3) 系統(tǒng)設(shè)計(jì):詳細(xì)介紹了LAN管理器主機(jī)信息探測與查詢子系統(tǒng)的基本思想、整體設(shè)計(jì)和詳細(xì)設(shè)計(jì)。 (4) 系統(tǒng)實(shí)現(xiàn):給出系統(tǒng)實(shí)現(xiàn)的標(biāo)準(zhǔn)測試環(huán)境和實(shí)現(xiàn)系統(tǒng)的主要代碼。 (5) 系統(tǒng)測試:在標(biāo)準(zhǔn)測試環(huán)境下的測試結(jié)果進(jìn)行分析。 (6) 總結(jié):對(duì)論文的主要工作進(jìn)行了總結(jié)。 2 需求分析 2.1 功能需求 (1) 探測與查詢功能 可利用多種技術(shù)對(duì)主機(jī)信息進(jìn)行探測與查詢。 (2) 防火墻穿越功能 防火墻穿越,即在對(duì)方已安裝防火墻并且正常運(yùn)行的情況下
13、探測主機(jī)信息,這是主機(jī)信息探測與查詢系統(tǒng)的核心功能,也是主機(jī)信息探測與查詢系統(tǒng)必不可少的功能。 2.2 性能需求 盡可能快的探測到主機(jī)信息,既能探測單個(gè)目標(biāo)主機(jī)的信息,也能探測某一IP地址區(qū)間內(nèi)主機(jī)的信息,具備一定穿透防火墻的能力,同時(shí)準(zhǔn)確率不低于90%。 2.3 用戶需求 用戶需求主要有以下幾個(gè)方面: (1) 通過簡單的操作就能夠探測到主機(jī)信息,并且有必要的返回信息并記錄結(jié)果; (2) 在對(duì)方打開防火墻禁止Ping的時(shí)候,我們Ping不通的時(shí)候應(yīng)該通過一種有效的方式來探測到對(duì)方主機(jī)信息; (3) 可以同時(shí)探測多個(gè)主機(jī)的信息; (4) 在某一主機(jī)的信息發(fā)生變更時(shí)可以
14、更新出所變更后的信息; (5) 具有數(shù)據(jù)存儲(chǔ)功能。 3 系統(tǒng)設(shè)計(jì) 3.1 設(shè)計(jì)思想 通過arp協(xié)議,調(diào)用arp功能函數(shù),實(shí)現(xiàn)主機(jī)信息的探測,通過函數(shù)的返回值來判斷主機(jī)的是否存活,并且獲取存活主機(jī)的mac。然后通過IP層協(xié)議獲取主機(jī)的詳細(xì)信息(gethostbyaddr),例如:主機(jī)名字,地址類型,主機(jī)網(wǎng)絡(luò)地址等;當(dāng)獲取信息之后存入數(shù)據(jù)庫(sql server 2005),于是要用到數(shù)據(jù)庫的存取知識(shí)。由于探測主機(jī)的范圍比較大,所以需要用到多線程的思想。 3.2 總體設(shè)計(jì) 基于ARP協(xié)議的主機(jī)信息探測與查詢系統(tǒng)主要包括域名解析和IP地址的轉(zhuǎn)換、ARP請(qǐng)求發(fā)送與處
15、理兩大模塊,各模塊的功能簡述如下: 域名解析及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ī)信息寫入數(shù)據(jù)庫。 依據(jù)上述理論,具體的功能模塊如圖3.1所示。 圖3.1 功能模塊 3.3 詳細(xì)設(shè)計(jì) 依據(jù)畢業(yè)設(shè)計(jì)任務(wù)書要求,自己負(fù)責(zé)設(shè)計(jì)的LAN管理器的主機(jī)信息與探測流程圖如圖3.2所示。 圖3.2 程序探測流程圖 4
16、 系統(tǒng)實(shí)現(xiàn) 4.1 系統(tǒng)實(shí)現(xiàn)環(huán)境說明 操作系統(tǒng):Windows xp 開發(fā)工具:Visual studio 6.0 數(shù)據(jù)庫:sql server 2005 4.2 主要模塊的實(shí)現(xiàn) (1) 封裝CDataClass類 首先封裝了一個(gè)基于CObject類的CDataClass類來操作數(shù)據(jù)庫,有連接數(shù)據(jù)庫,打開數(shù)據(jù)庫記錄,添加信息,刪除信息,更新信息等功能,代碼如下: 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ù)代碼 通過初始化函數(shù)探測該主機(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) 探測該局域網(wǎng)內(nèi)存活的主機(jī)的代碼 檢測函數(shù): void CLanManaDlg::OnButtonIndex() { // TODO: Add your control notification handler code here //向數(shù)據(jù)庫增加數(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("檢測"); TerminateThread(m_HThread,-1); KillTimer(1); m_IsOn=true; } } (5) 線程函數(shù)以及探測函數(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ù)庫
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) 精確查詢、模糊查詢的代碼
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ù)庫
_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)測試
5.1 測試目的
測試所做程序能否按照按照要求完成探測任務(wù),是否能夠快而準(zhǔn)確的得到結(jié)果,能否滿足用戶的需求。
5.2 測試方法
在局域網(wǎng)信息探測與查詢系統(tǒng)的開發(fā)環(huán)境下進(jìn)行模擬測試,并組建一個(gè)小型的局域網(wǎng)來驗(yàn)證。
5.3 測試用例與測試結(jié)果
主界面如圖5.1所示。
圖5.1 程序界面
點(diǎn)擊檢測之后的結(jié)果如圖5.2所示。
圖5.2 程序界面
點(diǎn)擊”檢測”按鈕后,該按鈕會(huì)改變?yōu)椤爸兄埂卑粹o,在檢測過程中如點(diǎn)擊 48、“中止”按鈕,則會(huì)中止該次檢測。
縮小探測范圍所探測到的結(jié)果如圖5.3所示。
圖5.3 程序界面
若IP網(wǎng)段有所變化,可以點(diǎn)擊“刷新”按鈕,可以探測出新的網(wǎng)段。
刷新之前的界面如圖5.4所示。
圖5.4 程序界面
刷新之后的界面如圖5.5所示。
圖5.5 程序界面
如果在探測過程中有新的主機(jī)打開,同樣可以點(diǎn)擊“刷新”按鈕,便可以將新的主機(jī)信息顯示出來。
刷新之前的界面如圖5.6所示。
圖5.6 程序界面
刷新之后的界面如圖5.7所示。
圖5.7 程序界面
精確、模糊查詢界面如圖5.8所示。
圖5.8 程序界面
在該界面,可以通過主機(jī) 49、名、IP地址、MAC地址分別進(jìn)行精確和模糊的查詢。
精確、模糊查詢的事例如圖5.9、5.10所示。
圖5.9 程序界面
圖5.10 程序界面
5.4 測試結(jié)論
LAN管理器主機(jī)信息探測與查詢子系統(tǒng)能夠較好的實(shí)現(xiàn)主機(jī)信息的探測與查詢?nèi)蝿?wù),并且在其他主機(jī)防火墻開啟的情況下依然可以探測到有效地信息,所顯示的信息也比較準(zhǔn)確,并且精確和模糊查詢功能也能運(yùn)行正常,能夠在較短的時(shí)間內(nèi)完成任務(wù)。所探測到的主機(jī)相關(guān)信息,可以同時(shí)更新到sql server數(shù)據(jù)庫中,做到了對(duì)探測結(jié)果的有效保存。LAN管理器主機(jī)信息探測與查詢子系統(tǒng)在功能方面,完成了探測與查詢功能和防火墻穿越功能,在性能方面,能夠 50、在較短的時(shí)間內(nèi)完成對(duì)單個(gè)或多個(gè)主機(jī)的信息探測,準(zhǔn)確率也不低于90%,在用戶方面,做到了操作簡單、界面簡潔、及時(shí)更新、數(shù)據(jù)存儲(chǔ)等功能。LAN管理器主機(jī)信息探測與查詢子系統(tǒng)基本完成了預(yù)期的目標(biāo)。
結(jié)論
通過這次的局域網(wǎng)信息探測與查詢系統(tǒng)的設(shè)計(jì),讓我受益良多。這是一次綜合網(wǎng)絡(luò)、數(shù)據(jù)庫和VC編程的設(shè)計(jì)過程。我了解和掌握了網(wǎng)絡(luò)的一些特性,并且能夠進(jìn)行數(shù)據(jù)庫的設(shè)計(jì)和使用VC進(jìn)行相關(guān)軟件的編程,同時(shí)培養(yǎng)了正確的設(shè)計(jì)思想和分析問題解決問題的能力,特別是整體設(shè)計(jì)和各功能模塊的詳細(xì)設(shè)計(jì)能力,以及解決實(shí)際碰到困難解決困難的能力,學(xué)到了很多知識(shí)。這位我們將來的發(fā)展提供了更多的機(jī)會(huì)。經(jīng)過這次畢業(yè) 51、設(shè)計(jì),我深深地體會(huì)到嚴(yán)謹(jǐn)、認(rèn)真、仔細(xì)、有耐心是一個(gè)網(wǎng)絡(luò)工程設(shè)計(jì)人員必須具備的素質(zhì)。
主機(jī)信息探測與查詢系統(tǒng)的工作分為四個(gè)步驟:獲取網(wǎng)段、確定范圍、開始查詢、得出結(jié)果。隨著入侵手段的日益復(fù)雜和通用系統(tǒng)不時(shí)出現(xiàn)的安全缺陷,預(yù)先評(píng)估分析網(wǎng)絡(luò)系統(tǒng)中存在的安全問題,已經(jīng)成為網(wǎng)絡(luò)管理員們的重要需求?;诰W(wǎng)絡(luò)的安全掃描主要掃描設(shè)定網(wǎng)絡(luò)內(nèi)的服務(wù)器、路由器、網(wǎng)橋、交換機(jī)、訪問服務(wù)器、防火墻等設(shè)備的安全漏洞,并可設(shè)定模擬攻擊,以測試系統(tǒng)的防御能力。這種技術(shù)模擬入侵者可能的攻擊行為,從系統(tǒng)外部進(jìn)行掃描,以探測是否存在可以被入侵者利用的系統(tǒng)安全薄弱之處。主機(jī)信息探測與查詢系統(tǒng)也就可以來作為一個(gè)借鑒,用來研究和模擬入 52、侵者的行為,對(duì)我們以后的網(wǎng)路安全也能夠提供和一些保障。
由于水平有限及所需要學(xué)校的知識(shí)無限,在設(shè)計(jì)中難免有不少錯(cuò)誤和不足之處,還請(qǐng)老師們批評(píng)指正。
致謝
在此向尊敬的導(dǎo)師孫飛顯老師致以真誠的謝意和敬意,感謝導(dǎo)師對(duì)我學(xué)習(xí)上孜孜不倦的教誨和生活上無微不至的關(guān)懷。導(dǎo)師淵博的知識(shí)、創(chuàng)新的思維、嚴(yán)于律己寬以待人的品質(zhì)影響著我,教育著我,不僅開闊了我的思路,增長了我的學(xué)識(shí),也使我在今后的學(xué)習(xí)、工作、生活中受益匪淺。衷心祝愿導(dǎo)師身體健康,萬事如意。
感謝師兄對(duì)我工作的幫助,在我論文工作最無助的時(shí)候,支持我并和我一起調(diào)試程序,使我在比較短的時(shí)間內(nèi)解決了面臨的困難,能夠認(rèn)識(shí)你們是我人 53、生的一筆財(cái)富。
感謝我的家人在我求學(xué)期間對(duì)我無私的幫助和支持。
感謝抽空參與評(píng)審我論文的老師。
參考文獻(xiàn)
[1] 肖書成.Ad hoc網(wǎng)絡(luò)及其路由性能研究.重慶:重慶郵電學(xué)院學(xué)報(bào),2004.
[2] Basavaraj.無線網(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] 蔡濤等.無線通信原理與應(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ǎ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ù)在未來無線通信中的應(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: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識(shí)競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案