• 大小: 2.9MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-14
  • 语言: 其他
  • 标签:

资源简介

包过滤防火墙,分析捉获得IP包,如包的类型TCP,DUP,ICMP等报的状态

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include “TYPE.h“

using namespace std;
#pragma comment(lib“WS2_32.lib“)

int main(void)
{

//SetConsoleCtrlHandler()
int err;
WSAData wsaData;

err = WSAStartup(MAKEWORD(22)&wsaData);//WSAStartup(WINSOCK_VERSION&wsaData);
    if(0 != err)
{
cout< return -1;
}

SOCKET sock;
sock = socket(AF_INETSOCK_RAWIPPROTO_IP);//通过网卡截获并分析IP数据包采用raw原始套接字
if(INVALID_SOCKET == sock)
{
err = GetLastError();
cout< WSACleanup();
return -1;
}

char hostName[128];
err = gethostname(hostNamesizeof(hostName));//获取本地主机名
if(0 != err)
{
err = GetLastError();
cout< closesocket(sock);
WSACleanup();
return -1;
}

HOSTENT *pHostIP = NULL;
pHostIP = gethostbyname(hostName);//获取IP列表
if(NULL == pHostIP)
{
err = GetLastError();
cout<        closesocket(sock);
WSACleanup();
return -1;
}
    

struct sockaddr_in sockAddr;     //本地地址
sockAddr.sin_family = AF_INET;
sockAddr.sin_port   = htons(6666);
sockAddr.sin_addr = *(in_addr*)pHostIP->h_addr_list[1];//S_un.S_addr
    
cout<<“Local IpAddress\t“<
err = bind(sock(struct sockaddr*)&sockAddrsizeof(sockAddr));//绑定
if(0 != err)
{
err = GetLastError();
cout< closesocket(sock);
WSACleanup();
return -1;
}

/*通常,网卡不能接收mac地址不是自己的IP数据包,要想能
捕获所有IP数据包,应该先将网卡的工作模式设置为“混杂”*/
//DWORD dwBufferLen[10]; 
//DWORD dwBufferInLen=1; 
DWORD dwBytesReturned=0; 
  //err = WSAIoctl(sockSIO_RCVALL&dwBufferInLensizeof(dwBufferInLen)
//dwBufferLensizeof(dwBufferLen)&dwBytesReturnedNULLNULL);
int on = RCVALL_ON;
err = WSAIoctl(sockSIO_RCVALL&onsizeof(on)
NULL0&dwBytesReturnedNULLNULL);
    if(0 != err)
{
cout<<““< }
    
int recvbuffLen;
    int len = sizeof(recvbuffLen);
    getsockopt(sockSOL_SOCKETSO_RCVBUF(char*)&recvbuffLen&len);   //获取缓冲与大小

char    *buffer =  (char*)HeapAlloc(GetProcessHeap()HEAP_ZERO_MEMORYrecvbuffLen);
    IP_HEAD *pIpHead = (IP_HEAD *)HeapAlloc(GetProcessHeap()HEAP_ZERO_MEMORYsizeof(IP_HEAD));
TCP_HEAD*pTcpHead= (TCP_HEAD*)HeapAlloc(GetProcessHeap()HEAP_ZERO_MEMORYsizeof(TCP_HEAD));
UDP_HEAD*pUdpHead= (UDP_HEAD*)HeapAlloc(GetProcessHeap()HEAP_ZERO_MEMORYsizeof(UDP_HEAD));
struct in_addr sourceIP;   //源地址
struct in_addr destIP;     //目地地址
    unsigned char  HeadLen = 0;
unsigned short TotalLen= 0;
while(TRUE)
{
memset(buffer‘\0‘recvbuffLen);
err = recvfrom(sockbufferrecvbuffLen0NULLNULL);
if(err == SOCKET_ERROR)
{
err = GetLastError();
cout< break;
}
memcpy(pIpHeadbuffer((((IP_HEAD *)buffer)->HeadLen)));
memcpy(&destIP&(pIpHead->DestIP)sizeof(in_addr));
memcpy(&sourceIP&(pIpHead->SourceIP)sizeof(in_addr));
    HeadLen = ((pIpHead->HeadLen)&0x0f)*4;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件    2163712  2012-05-25 19:30  包过滤防火墙\PackFilter\Debug\PackFilter.bsc

     文件     516160  2012-05-03 00:11  包过滤防火墙\PackFilter\Debug\PackFilter.exe

     文件     781372  2012-05-03 00:11  包过滤防火墙\PackFilter\Debug\PackFilter.ilk

     文件     168772  2012-05-25 19:30  包过滤防火墙\PackFilter\Debug\PackFilter.obj

     文件    6487280  2012-05-15 22:55  包过滤防火墙\PackFilter\Debug\PackFilter.pch

     文件    1082368  2012-05-25 19:30  包过滤防火墙\PackFilter\Debug\PackFilter.pdb

     文件          0  2012-05-25 19:30  包过滤防火墙\PackFilter\Debug\PackFilter.sbr

     文件     205824  2012-05-25 19:30  包过滤防火墙\PackFilter\Debug\vc60.idb

     文件     143360  2012-05-25 19:30  包过滤防火墙\PackFilter\Debug\vc60.pdb

     文件       4546  2012-05-25 17:38  包过滤防火墙\PackFilter\PackFilter.cpp

     文件       4447  2012-05-03 00:37  包过滤防火墙\PackFilter\PackFilter.dsp

     文件        545  2012-05-01 22:25  包过滤防火墙\PackFilter\PackFilter.dsw

     文件      50176  2012-05-25 20:31  包过滤防火墙\PackFilter\PackFilter.ncb

     文件      49664  2012-05-25 20:31  包过滤防火墙\PackFilter\PackFilter.opt

     文件       1465  2012-05-25 19:30  包过滤防火墙\PackFilter\PackFilter.plg

     文件     516160  2012-05-25 19:30  包过滤防火墙\PackFilter\Release\PackFilter.exe

     文件     781816  2012-05-25 19:30  包过滤防火墙\PackFilter\Release\PackFilter.ilk

     文件      43520  2012-05-03 13:03  包过滤防火墙\PackFilter\Release\PackFilter.opt

     文件       1162  2012-05-11 19:40  包过滤防火墙\PackFilter\TYPE.h

     目录          0  2013-01-03 23:52  包过滤防火墙\PackFilter\Debug

     目录          0  2013-01-03 23:52  包过滤防火墙\PackFilter\Release

     目录          0  2013-01-03 23:52  包过滤防火墙\PackFilter

     目录          0  2013-01-03 23:52  包过滤防火墙

----------- ---------  ---------- -----  ----

             13002349                    23


评论

共有 条评论