freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

網(wǎng)絡嗅探器的設計與實現(xiàn)-文庫吧

2025-05-12 21:59 本頁面


【正文】 ( 1)本軟件使用的主要模塊及其功能如下: 1. 線程控制模塊 2. 抓包模塊 3. 數(shù)據(jù)包分析模塊 ( 2)模塊間的調用關系如下: 關閉線程 五 、 詳細設計 程序在執(zhí)行過程中有兩個核心的工作,一是調用 Winpcap函數(shù)庫 實現(xiàn)下層抓包。二是對抓到的包文進行分析。下面分別列出兩個核心過程的基本算法與相關的實現(xiàn)代碼。 抓包算法: 第一:初始化 Winpcap開發(fā)庫 第二:獲得當前的網(wǎng)卡列表,同時要求用戶指定要操作的網(wǎng)卡 第三:獲得當前的過濾規(guī)則,可為空 第四:調用庫函數(shù), pcap_loop(),同時并指定其回調函數(shù),其中其回調函數(shù)為數(shù)據(jù)包分析過程。 分析算法: 第一:得到數(shù)據(jù)包,先將其轉存到內(nèi)存里,以備以后再用。 第二:分析當前的數(shù)據(jù)包,分析過程如下: 1. 數(shù)據(jù)包的前 14 個字節(jié)( Byte)代表數(shù)據(jù)鏈路層的報文頭,其報文格 式是前6Byte為目的 MAC地址,隨后的 6個 Byte為源 Mac地址,最后的 2Byte代表上層協(xié)議類型這個數(shù)據(jù)很重要,是我們分析上層協(xié)議的依據(jù)。 2. 根據(jù) 1 所分析到的協(xié)議類型進行類似 1 的迭代分析。這樣就可以得到各層中的報文頭信息和數(shù)據(jù)信息。 第三:結束本次分析。 我們使用了 MFC 人機交互界面完成該功能的設置,其主要函數(shù)如下(詳細代碼見附錄): 開啟線程 抓包 解包 六嗅探器的實現(xiàn)與測試 實現(xiàn)與測試 ,便可以使程序進行抓包狀態(tài)。其運行效果圖如下所示 ,通過查看界面上如圖所示的位置便可以清楚的看到數(shù)據(jù)包的分類情況。 實驗體會 實驗中的遇到的問題: 在本次實驗中我認為有一個問題比較麻煩,就是對抓到的包進行分析并提取出相應的位填充到對應的數(shù)據(jù)類型中,對于這個問題采用的是查看相應的協(xié)議書,并從網(wǎng)上看了 一下流行的處理辦法。 實驗中的收獲:一定程度上加深了對 TCP/IP 協(xié)議的理解,對課程學習打下了一個比較好的基礎;用一些設計模式在一定程度能提高開發(fā)效能,降低開發(fā)的復雜度; 七附錄(具體實現(xiàn)代碼請見電子版) 主要源代碼如下: 網(wǎng)卡配置 //:implementationfile BOOLCAdapaterSelection::OnInitDialog() {CDialog::OnInitDialog()。 //初始化樹形選擇 HTREEITEMroot=(_T(網(wǎng)絡適配器 ))。 if(pcap_findalldevs(amp。m_pAllDevs,m_strErrorBuf)==1) returnFALSE。 for(m_pDev=m_pAllDevs。m_pDev!=NULL。m_pDev=m_pDevnext) {chartemp[400]。 CStringstrText。 HTREEITEMhSubItem=(m_pDevname,root)。 if(m_pDevdescription!=NULL) {(網(wǎng)卡描述信息 :%s,m_pDevdescription)。 (strText,hSubItem)。 } else {(網(wǎng)卡描述信息 :空 ,hSubItem)。} if(m_pDevaddresses!=NULLamp。amp。m_pDevaddressesaddr!=NULL) {iptos(((structsockaddr_in*)m_pDevaddressesaddr),temp)。 (IP 地址 :%s,temp)。 (strText,hSubItem)。 } else {(IP 地址 :空 ,hSubItem)。} if(m_pDevaddresses!=NULLamp。amp。m_pDevaddressesbroadaddr!=NULL) {iptos(((structsockaddr_in*)m_pDevaddressesbroadaddr),temp)。 (廣播地址 :%s,temp)。 (strText,hSubItem)。 } else {(廣播地址 :無 ,hSubItem)。} if(m_pDevaddresses!=NULLamp。amp。m_pDevaddressesmask!=NULL) {iptos(((structsockaddr_in*)m_pDevaddressesmask),temp)。 (子網(wǎng)掩碼 :%s,temp)。 (strText,hSubItem)。 } else {(子網(wǎng)掩碼 :空 ,hSubItem)。} if(m_pDevaddresses!=NULLamp。amp。m_pDevaddressesdstaddr!=NULL) {iptos(((structsockaddr_in*)m_pDevaddressesdstaddr),temp)。 (目地地址 :%s,temp)。 (strText,hSubItem)。 } else {(目地地址 :無 ,hSubItem)。} } m_pDev=NULL。 (root,TVE_EXPAND)。 returnTRUE。//returnTRUEunlessyousetthefocustoacontrol //EXCEPTION:OCXPropertyPagesshouldreturnFALSE } voidCAdapaterSelection::OnDblclkTreeNetworkadapters(NMHDR*pNMHDR,LRESULT*pResult) { HTREEITEMhSubItem=()。 if((hSubItem)==NULL) return。 elseif(((hSubItem))!=網(wǎng)絡適配器 ) hSubItem=(hSubItem)。 m_pDev=m_pAllDevs。 while(strcmp(m_pDevname,(hSubItem))!=0) { //找到被選中網(wǎng)卡 m_pDev=m_pDevnext。 } *pResult=0。 } ARP 協(xié)議包 //:implementationoftheCARPPacketclass. CARPPacket::CARPPacket(constunsignedchar*buf,constunsignedintbuflen) {unsignedchar*pos=(unsignedchar*)buf。 m_nHaddrtype=(*pos)*0x100+(*(pos+1))。 pos+=2。 。 } CStringCARPPacket::GetHaddrtype() {returnGetData(m_nHaddrtype)。//硬件地址類型 } 。 捕獲包 //:Definestheclassbehaviorsfortheapplication. BEGIN_MESSAGE_MAP(CCapturePacketApp,CWinApp) ON_COMMAND(ID_HELP,CWinApp::OnHelp) END_MESSAGE_MAP() CCapturePacketApptheApp。 目標文件 //:implementationoftheCDirDialogclass. staticint__stdcallBrowseCtrlCallback(HWNDhwnd,UINTuMsg, LPARAMlParam,LPARAMlpData) {CDirDialog*pDirDialogObj=(CDirDialog*)lpData。 if(uMsg==BFFM_INITIALIZED) {if(!pDirDialogObj()) ::SendMessage(hwnd,BFFM_SETSELECTION,TRUE, (LPARAM)(LPCTSTR)(pDirDialogObjm_strSelDir))。 } ::SendMessage(hwnd,BFFM_ENABLEOK,0,TRUE)。 return0。 } intCDirDialog::DoBrowse(CWnd*pwndParent) {if(!()) {()。 if((1)==\\||(1)==//) m_strSelDir=(()1)。 } LPMALLOCpMalloc。 if(SHGetMalloc(amp。pMalloc)!=NOERROR) returnFALSE。 BROWSEINFObInfo。 LPITEMIDLISTpidl。 ZeroMemory((PVOID)amp。bInfo,sizeof(BROWSEINFO))。 if(!()) {OLECHARolePath[MAX_PATH]。 ULONGchEaten。 ULONGdwAttributes。 HRESULThr。 LPSHELLFOLDERpDesktopFolder。 if(SUCCEEDED(SHGetDesktopFolder(amp。pDesktopFolder))) {MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,(MAX_PATH),1, olePath,MAX_PATH)。 (1)。 hr=pDesktopFolderParseDisplayName(NULL, NULL, olePath, amp。chEaten, amp。pidl, amp。dwAttributes)。 if(FAILED(hr)) { pMallocFree(pidl)。 pMallocRelease()。 returnFALSE。 } =pidl。 } } =pwndParent==NULL?NULL:pwndParentGetSafeHwnd()。 =(MAX_PATH)。 =m_strWindowTitle。 =BIF_RETURNFSANCESTORS |BIF_RETURNONLYFSDIRS |(FALSE/*m_bStatus*/?BIF_STATUSTEXT:0)。 =BrowseCtrlCallback。 =(LPARAM)this。 if((pidl=::SHBrowseForFolder(amp。bInfo))==NULL) {returnFALSE。} ()。 m_iImageIndex=。 if(::SHGetPathFromIDList(pidl,(MAX_PATH))==FALSE) {pMallocFree(pidl)。 pMallocRelease()。 returnFALSE。 } ()。 pMallocFree(pidl)。 pMallocRelease()。 returnTRUE。 } 文件協(xié)議 //:implementationfile CFilterDl::CFilterDl(CWnd*pParent/*=NULL*/) :CDialog(CFilterDl::IDD,pParent){} voidCFilterDl::DoDataExchange(CDataExchange*pDX) {CDialog::DoDataExchange(pDX)。 DDX_Control(pDX,IDC_TAB_CTR,m_tCtr)。 } BEGIN_MESSAGE_MAP(CFilterDl,CDialog) ON_NOTIFY(TCN_SELCHANGE,IDC_TAB_CTR,OnSelchangeTabCtr) END_MESSAGE_MAP() BOOLCFilterDl::OnInitDialog() {CDialog::OnInitDialog()。 TCITEMitem。 =TCIF_TEXT。 =第一頁 。 (0,amp。item)。 =第二頁 。 (1,amp。item)。 (IDD_ABOUTBOX,amp。m_tCtr)。 (IDD_DIALOG_OUTPUTDATA,amp。m_tCtr)。 (NULL,10,30,400,100,SWP_SHOWWINDOW)。 (NULL,10,30,400,100,SWP_HIDEWINDOW)。 returnTRUE。 } voidCFilterDl::OnSelchangeTabCtr(NMHDR*pNMHDR,LRESULT*pResult) {*pResult=0。} 表格包 //:implementationoftheCFramePacketclass. CFramePacket::CFramePacket(constunsignedchar*buf,intbuflen) {unsignedchar*pPos。 pPos=
點擊復制文檔內(nèi)容
高考資料相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1