EDN Admin
Well-known member
<span style="font-family:Verdana,Arial,sans-serif; font-size:13px; line-height:normal Currently, I have captured packet network card using C++ by Winsocks<br style="font-family:Verdana,Arial,sans-serif; font-size:13px; line-height:normal
<span style="font-family:Verdana,Arial,sans-serif; font-size:13px; line-height:normal So ,I want to drop packets using C ++ based on the destination IP address<br style="font-family:Verdana,Arial,sans-serif; font-size:13px; line-height:normal
<span style="font-family:Verdana,Arial,sans-serif; font-size:13px; line-height:normal help me
<span style="font-family:Verdana,Arial,sans-serif; font-size:13px; line-height:normal my code :
#include "stdafx.h"<br/>
#include <conio.h><br/>
#include <string><br/>
#include <cstring><br/>
#include <stdio.h><br/>
#include <iostream><br/>
#define MAX_PACKET_SIZE 65525<br/>
#include <winsock2.h><br/>
#include <mstcpip.h><br/>
#include <ws2tcpip.h>
using namespace std;
typedef struct iphdr1<br/>
{<br/>
<span style="white-space
re unsigned char VerIHL; //Version and IP Header Length<br/>
<span style="white-space
re unsigned char Tos;<br/>
<span style="white-space
re unsigned short Total_len;<br/>
<span style="white-space
re unsigned short ID;<br/>
<span style="white-space
re unsigned short Flags_and_Frags; //Flags 3 bits and Fragment offset 13 bits<br/>
<span style="white-space
re unsigned char TTL;<br/>
<span style="white-space
re unsigned char Protocol;<br/>
<span style="white-space
re unsigned short Checksum;<br/>
<span style="white-space
re unsigned long SrcIP;<br/>
<span style="white-space
re unsigned long DstIP;<br/>
<span style="white-space
re //unsigned long Options_and_Padding;<br/>
} IpHeader1;<br/>
<br/>
typedef struct port<br/>
{<br/>
<span style="white-space
re unsigned short SrcPort;<br/>
<span style="white-space
re unsigned short DstPort;<br/>
} TcpUdpPort;<br/>
<br/>
void ProcessPacket(char* Buffer, int Size)<br/>
{<br/>
<span style="white-space
re IpHeader1 *iphdr1;<br/>
<span style="white-space
re TcpUdpPort *port;<br/>
<span style="white-space
re struct sockaddr_in SockAddr;<br/>
<span style="white-space
re unsigned short iphdrlen;<br/>
<span style="white-space
re char C;<br/>
<br/>
<span style="white-space
re iphdr1 = (IpHeader1 *)Buffer;<br/>
<br/>
<span style="white-space
re iphdrlen = (iphdr1->VerIHL << 4);<br/>
<span style="white-space
re memcpy(&C, &iphdrlen, 1);<br/>
<span style="white-space
re iphdrlen = (C >> 4) * 4; //20<br/>
<br/>
<br/>
<span style="white-space
re memset(&SockAddr, 0, sizeof(SockAddr));<br/>
<span style="white-space
re SockAddr.sin_addr.s_addr = iphdr1->SrcIP;<br/>
<span style="white-space
re printf("Packet From: %s ", inet_ntoa(SockAddr.sin_addr));<br/>
<span style="white-space
re memset(&SockAddr, 0, sizeof(SockAddr));<br/>
<span style="white-space
re SockAddr.sin_addr.s_addr = iphdr1->DstIP;<br/>
<span style="white-space
re printf("To: %s ", inet_ntoa(SockAddr.sin_addr));<br/>
<br/>
<span style="white-space
re switch (iphdr1->Protocol)<br/>
<span style="white-space
re {<br/>
<span style="white-space
re case 1:<br/>
<span style="white-space
re printf("Protocol: ICMP ");<br/>
<span style="white-space
re break;<br/>
<span style="white-space
re case 2:<br/>
<span style="white-space
re printf("Protocol: IGMP ");<br/>
<span style="white-space
re break;<br/>
<span style="white-space
re case 6:<br/>
<span style="white-space
re printf("Protocol: TCP ");<br/>
<span style="white-space
re if (Size > iphdrlen)<br/>
<span style="white-space
re {<br/>
<span style="white-space
re port = (TcpUdpPort *)(Buffer + iphdrlen);<br/>
<span style="white-space
re printf("From Port: %i To Port: %i ", ntohs(port->SrcPort), ntohs(port->DstPort));<br/>
<span style="white-space
re }<br/>
<span style="white-space
re break;<br/>
<span style="white-space
re case 17:<br/>
<span style="white-space
re printf("Protocol: UDP ");<br/>
<span style="white-space
re if (Size > iphdrlen)<br/>
<span style="white-space
re {<br/>
<span style="white-space
re port = (TcpUdpPort *)(Buffer + iphdrlen);<br/>
<span style="white-space
re printf("From Port: %i To Port: %i ", ntohs(port->SrcPort), ntohs(port->DstPort));<br/>
<span style="white-space
re }<br/>
<span style="white-space
re break;<br/>
<span style="white-space
re default:<br/>
<span style="white-space
re printf("Protocol: %i ", iphdr1->Protocol); <br/>
<span style="white-space
re }<br/>
<br/>
<span style="white-space
re printf("n");<br/>
}<br/>
<br/>
void StartSniffing(SOCKET Sock)<br/>
{<br/>
<span style="white-space
re char *RecvBuffer = (char *)malloc(MAX_PACKET_SIZE + 1);<br/>
<span style="white-space
re int BytesRecv, FromLen;<br/>
<span style="white-space
re struct sockaddr_in From;<br/>
<br/>
<span style="white-space
re if (RecvBuffer == NULL)<br/>
<span style="white-space
re {<br/>
<span style="white-space
re printf("malloc() failed.n");<br/>
<span style="white-space
re exit(-1);<br/>
<span style="white-space
re }<br/>
<br/>
<span style="white-space
re FromLen = sizeof(From);<br/>
<br/>
<span style="white-space
re do<br/>
<span style="white-space
re {<br/>
<span style="white-space
re memset(RecvBuffer, 0, MAX_PACKET_SIZE + 1);<br/>
<span style="white-space
re memset(&From, 0, sizeof(From));<br/>
<br/>
<span style="white-space
re BytesRecv = recvfrom(Sock, RecvBuffer, MAX_PACKET_SIZE, 0, (sockaddr *)&From, &FromLen);<br/>
<span style="white-space
re printf("BytesRecv la:%i",BytesRecv);<br/>
<span style="white-space
re if (BytesRecv > 0)<br/>
<span style="white-space
re {<br/>
<span style="white-space
re ProcessPacket(RecvBuffer, BytesRecv);<br/>
<span style="white-space
re }<br/>
<span style="white-space
re else<br/>
<span style="white-space
re {<br/>
<span style="white-space
re printf( "recvfrom() failed.n");<br/>
<span style="white-space
re }<br/>
<br/>
<span style="white-space
re } while (BytesRecv > 0);<br/>
<span style="white-space
re free(RecvBuffer);<br/>
}<br/>
///////////////////////////////////////////////<br/>
char* GetLocalAddress()<br/>
{<br/>
// WSADATA wsaData;<br/>
struct hostent *remoteHost;<br/>
<span style="white-space
re struct in_addr addr;<br/>
<span style="white-space
re int i=0;<br/>
<span style="white-space
re //WSAStartup(MAKEWORD(2, 2), &wsaData);<br/>
<span style="white-space
re char* buffer="";<br/>
<span style="white-space
re gethostname (buffer,strlen(buffer));<br/>
<span style="white-space
re remoteHost = gethostbyname(buffer);<br/>
<span style="white-space
re if (remoteHost == NULL) <br/>
<span style="white-space
re {<br/>
<span style="white-space
re printf("ko tim thay :");<br/>
<span style="white-space
re }<br/>
else <br/>
<span style="white-space
re {<br/>
//printf("tOfficial name: %sn", remoteHost->h_name);<br/>
<span style="white-space
re addr.s_addr = *(u_long *) remoteHost->h_addr_list[i++];<br/>
<span style="white-space
re //printf("tIP Address #%d: %sn", i, inet_ntoa(addr));<br/>
<span style="white-space
re return (char*)inet_ntoa(addr);<br/>
<span style="white-space
re } <br/>
<br/>
<span style="white-space
re <br/>
}<br/>
////////////////////////////////////////////////<br/>
void main()<br/>
{<br/>
<span style="white-space
re WSAData wsaData;<br/>
<span style="white-space
re SOCKET Sock;<br/>
<span style="white-space
re struct sockaddr_in SockAddr;<br/>
<span style="white-space
re DWORD BytesReturned;<br/>
<span style="white-space
re int I = 1;<br/>
<span style="white-space
re try<br/>
<span style="white-space
re {<br/>
<br/>
<span style="white-space
re if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)<br/>
<span style="white-space
re {<br/>
<span style="white-space
re printf("WSAStartup() failed.n");<br/>
<span style="white-space
re exit(-1);<br/>
<span style="white-space
re }<br/>
<br/>
<span style="white-space
re Sock = socket(AF_INET, SOCK_RAW, IPPROTO_IP);<br/>
<br/>
<span style="white-space
re if (Sock == INVALID_SOCKET)<br/>
<span style="white-space
re {<br/>
<span style="white-space
re printf("socket() failed.n");<br/>
<span style="white-space
re exit(-1);<br/>
<span style="white-space
re }<br/>
<br/>
<span style="white-space
re memset(&SockAddr, 0, sizeof(SockAddr));<br/>
<span style="white-space
re //SockAddr.sin_addr.s_addr = inet_addr(BIND2IP);<br/>
<span style="white-space
re SockAddr.sin_addr.s_addr = inet_addr(GetLocalAddress());<br/>
<span style="white-space
re SockAddr.sin_family = AF_INET;<br/>
<span style="white-space
re SockAddr.sin_port = 0;<br/>
<br/>
<span style="white-space
re if (bind(Sock, (sockaddr *)&SockAddr, sizeof(SockAddr))== SOCKET_ERROR)<br/>
<span style="white-space
re {<br/>
<span style="white-space
re printf("bind(%s) failed.n", GetLocalAddress());<br/>
<span style="white-space
re exit(-1);<br/>
<span style="white-space
re }<br/>
<span style="white-space
re if (WSAIoctl(Sock, SIO_RCVALL, &I, sizeof(I), NULL, NULL, &BytesReturned, NULL, NULL) == SOCKET_ERROR)<br/>
<span style="white-space
re {<br/>
<span style="white-space
re printf("WSAIoctl() failed.n");<br/>
<span style="white-space
re exit(-1);<br/>
<span style="white-space
re }<br/>
<br/>
<span style="white-space
re StartSniffing(Sock);<br/>
<span style="white-space
re }<br/>
<span style="white-space
re catch (...)<br/>
<span style="white-space
re {<br/>
<span style="white-space
re printf("CRASHn");<br/>
<span style="white-space
re }<br/>
<span style="white-space
re closesocket(Sock);<br/>
<span style="white-space
re WSACleanup();<span style="white-space
re
<br/>
<span style="white-space
re getch();<br/>
}<br/>
<br/>
///////////////////////////////////////////////////////////////////////////////////<br/>
<span style="font-family:Verdana,Arial,sans-serif; font-size:13px; line-height:normal
View the full article
<span style="font-family:Verdana,Arial,sans-serif; font-size:13px; line-height:normal So ,I want to drop packets using C ++ based on the destination IP address<br style="font-family:Verdana,Arial,sans-serif; font-size:13px; line-height:normal
<span style="font-family:Verdana,Arial,sans-serif; font-size:13px; line-height:normal help me
<span style="font-family:Verdana,Arial,sans-serif; font-size:13px; line-height:normal my code :
#include "stdafx.h"<br/>
#include <conio.h><br/>
#include <string><br/>
#include <cstring><br/>
#include <stdio.h><br/>
#include <iostream><br/>
#define MAX_PACKET_SIZE 65525<br/>
#include <winsock2.h><br/>
#include <mstcpip.h><br/>
#include <ws2tcpip.h>
using namespace std;
typedef struct iphdr1<br/>
{<br/>
<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

} IpHeader1;<br/>
<br/>
typedef struct port<br/>
{<br/>
<span style="white-space

<span style="white-space

} TcpUdpPort;<br/>
<br/>
void ProcessPacket(char* Buffer, int Size)<br/>
{<br/>
<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<br/>
<span style="white-space

<br/>
<span style="white-space

<span style="white-space

<span style="white-space

<br/>
<br/>
<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<br/>
<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<br/>
<span style="white-space

}<br/>
<br/>
void StartSniffing(SOCKET Sock)<br/>
{<br/>
<span style="white-space

<span style="white-space

<span style="white-space

<br/>
<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<br/>
<span style="white-space

<br/>
<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<br/>
<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<br/>
<span style="white-space

<span style="white-space

}<br/>
///////////////////////////////////////////////<br/>
char* GetLocalAddress()<br/>
{<br/>
// WSADATA wsaData;<br/>
struct hostent *remoteHost;<br/>
<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

else <br/>
<span style="white-space

//printf("tOfficial name: %sn", remoteHost->h_name);<br/>
<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<br/>
<span style="white-space

}<br/>
////////////////////////////////////////////////<br/>
void main()<br/>
{<br/>
<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<br/>
<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<br/>
<span style="white-space

<br/>
<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<br/>
<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<br/>
<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<br/>
<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space

<span style="white-space


<br/>
<span style="white-space

}<br/>
<br/>
///////////////////////////////////////////////////////////////////////////////////<br/>
<span style="font-family:Verdana,Arial,sans-serif; font-size:13px; line-height:normal
View the full article