資源簡介
本資源包括基于winpcap的網絡嗅探器源碼,可執(zhí)行文件還有設計文檔。系統(tǒng)用Visual MFC C++開發(fā),可監(jiān)聽網絡數據包,過濾數據包等。
代碼片段和文件信息
#include?“StdAfx.h“
#include?“MyWinPcap.h“
//?file?process
MyWinPcap::MyWinPcap(void):m_iCurNo(0)
{
//使用GetModuleFileName獲取應用程序路徑
TCHAR?szModuleName[MAX_PATH];
::GetModuleFileName(NULLszModuleNameMAX_PATH);
CString?strDir?=?szModuleName;
strDir?=?strDir.Left(strDir.ReverseFind(TEXT(‘\\‘)));?//?Left()?->?Extracts?the?leftmost?nCount?characters?from?this?CStringT?object?and?returns?a?copy?of?the?extracted?substring
CString?fileData;
fileData.Format(TEXT(“%s\\packet.dmp“)strDir);
m_pfileData?=?new?CFile(fileDataCFile::modeCreate|CFile::modeReadWrite);?//create?or?write?data(packet)?file
CString?fileIndex;
fileIndex.Format(TEXT(“%s\\packet.idx“)strDir);
m_pfileIndex?=?new?CFile(fileIndexCFile::modeCreate|CFile::modeReadWrite);?//create?or?write?index(packet)?file
}
MyWinPcap::~MyWinPcap(void)
{????
if(m_pfileData)
{
m_pfileData->Close();
delete?m_pfileData;
m_pfileData?=?NULL;?//?safer
}
if(m_pfileIndex)
{
m_pfileIndex->Close();
delete?m_pfileIndex;
m_pfileIndex?=?NULL;
}
}
//?Append?packet
void?MyWinPcap::AppendPacket(packet?*pkt)
{
const?pcap_pkthdr?*header?=?pkt->header;
????const?u_char?*data?=?pkt->pkt_data;
++m_iCurNo;
packet_index?index;
index.no?=?m_iCurNo;
index.pos?=?m_pfileData->GetPosition();
index.len?=?sizeof(pcap_pkthdr)?+?header->len;
m_pfileIndex->SeekToEnd();
m_pfileIndex->Write(&indexsizeof(packet_index));
m_pfileData->SeekToEnd();
m_pfileData->Write(headersizeof(pcap_pkthdr));
m_pfileData->Write(dataheader->len);
m_pfileIndex->Flush();?//?write?from?memory?to?disk?immediatly
m_pfileData->Flush();
}
//?Get?packet
packet?*?MyWinPcap::GetPacket(int?m_iNo)
{
int?iPos?=?(m_iNo-1)*sizeof(packet_index);
packet_index?pIndex;
m_pfileIndex->Seek(iPosCFile::begin);
m_pfileIndex->Read(&pIndexsizeof(packet_index));
m_pfileData->Seek(pIndex.posCFile::begin);
byte?*buffer?=?new?byte[pIndex.len];
m_pfileData->Read(bufferpIndex.len);
packet?*pkt?=?new?packet();
pkt->header?=?(pcap_pkthdr?*)buffer;
pkt->pkt_data?=?(u_char?*)(buffer+sizeof(pcap_pkthdr));
return?pkt;
}
//?=============?self?function?=============
//?返回本機所有的網卡
pcap_if_t?*??MyWinPcap::GetAdapterList(void?)
{
/*?Retrieve?the?device?list?from?the?local?machine?*/
char?errbuf[PCAP_ERRBUF_SIZE];
pcap_if_t?*?m_alldevs?=?new?pcap_if_t();??//????????allocate?memory?to?sava?temp?all-devs??????
????if?(pcap_findalldevs_ex(PCAP_SRC_IF_STRING?NULL?/*?auth?is?not?needed?*/?&m_alldevs?errbuf)?==?-1)?//?if?error
????{
CString?errmsg;
USES_CONVERSION;
errmsg.Format(TEXT(“Error?in?cap_finalldevs_ex():?%s\n“)A2W(errbuf));
AfxMessageBox(errmsg);
return?NULL;
}
else?if(NULL?==?m_alldevs)
{
AfxMessageBox(TEXT(“No?interfaces?found!?Make?sure?WinPcap?is?installed...“));
return?NULL;
}
else
return?m_alldevs;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????220160??2012-10-21?14:43??201228015029026_汪正康_實驗一\YGSniffer\Debug\PackageSniffer.exe
?????文件????1190032??2012-10-21?14:43??201228015029026_汪正康_實驗一\YGSniffer\Debug\PackageSniffer.ilk
?????文件????3599360??2012-10-21?14:43??201228015029026_汪正康_實驗一\YGSniffer\Debug\PackageSniffer.pdb
?????文件??????????0??2012-10-21?14:54??201228015029026_汪正康_實驗一\YGSniffer\Debug\packet.dmp
?????文件??????????0??2012-10-21?14:54??201228015029026_汪正康_實驗一\YGSniffer\Debug\packet.idx
?????文件????6966272??2012-10-21?14:54??201228015029026_汪正康_實驗一\YGSniffer\PackageSniffer.ncb
?????文件????????893??2009-10-14?13:32??201228015029026_汪正康_實驗一\YGSniffer\PackageSniffer.sln
????..A..H.????179712??2012-10-21?14:54??201228015029026_汪正康_實驗一\YGSniffer\PackageSniffer.suo
?????文件???????5932??2012-10-21?14:43??201228015029026_汪正康_實驗一\YGSniffer\YGSniffer\Debug\BuildLog.htm
?????文件?????????65??2012-10-21?14:43??201228015029026_汪正康_實驗一\YGSniffer\YGSniffer\Debug\mt.dep
?????文件??????25506??2012-10-21?14:43??201228015029026_汪正康_實驗一\YGSniffer\YGSniffer\Debug\MyWinPcap.obj
?????文件???????1196??2012-10-21?14:43??201228015029026_汪正康_實驗一\YGSniffer\YGSniffer\Debug\PackageSniffer.exe.em
?????文件???????1260??2012-10-21?14:43??201228015029026_汪正康_實驗一\YGSniffer\YGSniffer\Debug\PackageSniffer.exe.em
?????文件???????1120??2012-10-21?14:43??201228015029026_汪正康_實驗一\YGSniffer\YGSniffer\Debug\PackageSniffer.exe.intermediate.manifest
?????文件???28573696??2012-10-21?14:43??201228015029026_汪正康_實驗一\YGSniffer\YGSniffer\Debug\PackageSniffer.pch
?????文件?????443226??2012-10-21?14:43??201228015029026_汪正康_實驗一\YGSniffer\YGSniffer\Debug\stdafx.obj
?????文件????1043456??2012-10-21?14:43??201228015029026_汪正康_實驗一\YGSniffer\YGSniffer\Debug\vc90.idb
?????文件????2330624??2012-10-21?14:43??201228015029026_汪正康_實驗一\YGSniffer\YGSniffer\Debug\vc90.pdb
?????文件???????1196??2012-10-20?09:39??201228015029026_汪正康_實驗一\YGSniffer\YGSniffer\Debug\YGSniffer.exe.em
?????文件???????1260??2012-10-20?09:39??201228015029026_汪正康_實驗一\YGSniffer\YGSniffer\Debug\YGSniffer.exe.em
?????文件???????1120??2012-10-20?09:45??201228015029026_汪正康_實驗一\YGSniffer\YGSniffer\Debug\YGSniffer.exe.intermediate.manifest
?????文件??????24572??2012-10-21?14:43??201228015029026_汪正康_實驗一\YGSniffer\YGSniffer\Debug\YGSniffer.obj
?????文件???28573696??2012-10-20?09:39??201228015029026_汪正康_實驗一\YGSniffer\YGSniffer\Debug\YGSniffer.pch
?????文件??????71484??2012-10-21?14:43??201228015029026_汪正康_實驗一\YGSniffer\YGSniffer\Debug\YGSniffer.res
?????文件?????343250??2012-10-21?14:43??201228015029026_汪正康_實驗一\YGSniffer\YGSniffer\Debug\YGSnifferDlg.obj
?????文件???????2939??2009-10-16?02:00??201228015029026_汪正康_實驗一\YGSniffer\YGSniffer\MyWinPcap.cpp
?????文件????????629??2009-10-15?17:35??201228015029026_汪正康_實驗一\YGSniffer\YGSniffer\MyWinPcap.h
?????文件???????4058??2009-10-14?13:32??201228015029026_汪正康_實驗一\YGSniffer\YGSniffer\ReadMe.txt
?????文件??????67777??2007-11-28?16:21??201228015029026_汪正康_實驗一\YGSniffer\YGSniffer\res\YGSniffer.ico
?????文件????????400??2009-10-14?13:32??201228015029026_汪正康_實驗一\YGSniffer\YGSniffer\res\YGSniffer.rc2
............此處省略32個文件信息
評論
共有 條評論