基于winpcap网络嗅探器 VC++ 中科院课设 源码+详细文档


本资源包括基于winpcap的网络嗅探器源码,可执行文件还有设计文档。系统用Visual MFC C++开发,可监听网络数据包,过滤数据包等。
资源截图
代码片段和文件信息
#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
“)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_汪正康_实验一YGSnifferDebugPackageSniffer.exe

     文件    1190032  2012-10-21 14:43  201228015029026_汪正康_实验一YGSnifferDebugPackageSniffer.ilk

     文件    3599360  2012-10-21 14:43  201228015029026_汪正康_实验一YGSnifferDebugPackageSniffer.pdb

     文件          0  2012-10-21 14:54  201228015029026_汪正康_实验一YGSnifferDebugpacket.dmp

     文件          0  2012-10-21 14:54  201228015029026_汪正康_实验一YGSnifferDebugpacket.idx

     文件    6966272  2012-10-21 14:54  201228015029026_汪正康_实验一YGSnifferPackageSniffer.ncb

     文件        893  2009-10-14 13:32  201228015029026_汪正康_实验一YGSnifferPackageSniffer.sln

    ..A..H.    179712  2012-10-21 14:54  201228015029026_汪正康_实验一YGSnifferPackageSniffer.suo

     文件       5932  2012-10-21 14:43  201228015029026_汪正康_实验一YGSnifferYGSnifferDebugBuildLog.htm

     文件         65  2012-10-21 14:43  201228015029026_汪正康_实验一YGSnifferYGSnifferDebugmt.dep

     文件      25506  2012-10-21 14:43  201228015029026_汪正康_实验一YGSnifferYGSnifferDebugMyWinPcap.obj

     文件       1196  2012-10-21 14:43  201228015029026_汪正康_实验一YGSnifferYGSnifferDebugPackageSniffer.exe.embed.manifest

     文件       1260  2012-10-21 14:43  201228015029026_汪正康_实验一YGSnifferYGSnifferDebugPackageSniffer.exe.embed.manifest.res

     文件       1120  2012-10-21 14:43  201228015029026_汪正康_实验一YGSnifferYGSnifferDebugPackageSniffer.exe.intermediate.manifest

     文件   28573696  2012-10-21 14:43  201228015029026_汪正康_实验一YGSnifferYGSnifferDebugPackageSniffer.pch

     文件     443226  2012-10-21 14:43  201228015029026_汪正康_实验一YGSnifferYGSnifferDebugstdafx.obj

     文件    1043456  2012-10-21 14:43  201228015029026_汪正康_实验一YGSnifferYGSnifferDebugvc90.idb

     文件    2330624  2012-10-21 14:43  201228015029026_汪正康_实验一YGSnifferYGSnifferDebugvc90.pdb

     文件       1196  2012-10-20 09:39  201228015029026_汪正康_实验一YGSnifferYGSnifferDebugYGSniffer.exe.embed.manifest

     文件       1260  2012-10-20 09:39  201228015029026_汪正康_实验一YGSnifferYGSnifferDebugYGSniffer.exe.embed.manifest.res

     文件       1120  2012-10-20 09:45  201228015029026_汪正康_实验一YGSnifferYGSnifferDebugYGSniffer.exe.intermediate.manifest

     文件      24572  2012-10-21 14:43  201228015029026_汪正康_实验一YGSnifferYGSnifferDebugYGSniffer.obj

     文件   28573696  2012-10-20 09:39  201228015029026_汪正康_实验一YGSnifferYGSnifferDebugYGSniffer.pch

     文件      71484  2012-10-21 14:43  201228015029026_汪正康_实验一YGSnifferYGSnifferDebugYGSniffer.res

     文件     343250  2012-10-21 14:43  201228015029026_汪正康_实验一YGSnifferYGSnifferDebugYGSnifferDlg.obj

     文件       2939  2009-10-16 02:00  201228015029026_汪正康_实验一YGSnifferYGSnifferMyWinPcap.cpp

     文件        629  2009-10-15 17:35  201228015029026_汪正康_实验一YGSnifferYGSnifferMyWinPcap.h

     文件       4058  2009-10-14 13:32  201228015029026_汪正康_实验一YGSnifferYGSnifferReadMe.txt

     文件      67777  2007-11-28 16:21  201228015029026_汪正康_实验一YGSnifferYGSniffer
esYGSniffer.ico

     文件        400  2009-10-14 13:32  201228015029026_汪正康_实验一YGSnifferYGSniffer
esYGSniffer.rc2

............此处省略32个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)