| Код | //main.cpp #include <winsock2.h> #pragma comment(lib, "ws2_32.lib") #include <windows.h> #include <iostream> using std::cin; using std::cout;
#define IP_HDRINCL 2
struct IPHDR { unsigned char ip_hl:4, ip_v:4; unsigned char ip_tos; unsigned short int ip_len; unsigned short int ip_id; unsigned short int ip_off; unsigned char ip_ttl; unsigned char ip_p; unsigned short int ip_sum; unsigned int ip_src; unsigned int ip_dst; };
struct TCPHDR { unsigned short int th_sport; unsigned short int th_dport; unsigned int th_seq; unsigned int th_ack; unsigned char th_x2:4, th_off:4; unsigned char th_flags; unsigned short int th_win; unsigned short int th_sum; unsigned short int th_urp; }; int optval=1; int main() { LPSTR szIP = (LPSTR)malloc(20); int nPort, nCount; cout << "Address:"; gets(szIP); cout << "Port:"; cin >> nPort; cout << "Packets:"; cin >> nCount; //количество пакетов
WSADATA wsadata; WSAStartup(0x0202, &wsadata);
SOCKADDR_IN socketaddr; socketaddr.sin_family = AF_INET; socketaddr.sin_addr.s_addr = inet_addr(szIP); socketaddr.sin_port = htons((WORD)nPort);
SOCKET sock = socket(AF_INET, SOCK_RAW, 0); if(sock==INVALID_SOCKET) return 0; if ((setsockopt(sock, IPPROTO_IP, IP_HDRINCL, (char *)&optval, sizeof(optval)))<0) cout << "Error: setsockopt IP_HDRINCL\n";
struct IPHDR *ipheader; struct TCPHDR *tcpheader; char *buffer; buffer = (char *)malloc(sizeof(struct IPHDR)+sizeof(struct TCPHDR)+10); ipheader = (struct IPHDR *)buffer; tcpheader = (struct TCPHDR *)(buffer+sizeof(struct IPHDR));
//адрес отправителя и получателя ipheader-> ip_src = inet_addr(szIP); //пробовал ставить сюда реальный сорс-ип - один хер=( ipheader-> ip_dst = inet_addr(szIP); //порт отправителя и получателя tcpheader-> th_sport = socketaddr.sin_port; tcpheader-> th_dport = socketaddr.sin_port;
while(nCount >= 0) { if(sendto(sock, buffer, sizeof(buffer),0,(LPSOCKADDR)&socketaddr,sizeof(SOCKADDR))==sizeof(buffer)) cout << "1"; //отправился else cout << "0"; nCount--; } free(buffer); system("pause"); return 0; }
|
Трабла в том, что снифер не видит пакетов, посылаемых этой прогой. Пробовал слать как на свой ip, так и на другие в локалке, в проге пишет, что пакеты отослались, но снифер этого не видит. Мож если кому не лень, помогите.. так по моему не должно быть.. (снифер с его исходником в аттаче положил)
Присоединённый файл ( Кол-во скачиваний: 2 )
sniffer.rar 6,45 Kb
|