MikelSV
Сообщений: 2
Оценки: 0
Присоединился: 2007-10-11 22:24:35.656666
|
Задача - послать сформированный RAW пакет, под windows. SOCKET sock=socket(AF_INET, SOCK_RAW, IPPROTO_IP); int i=1; //устанавливать заголовки пакетов if(setsockopt(sock, IPPROTO_IP, IP_HDRINCL, (const char*)&i, sizeof(i))<0){ perror("setsockopt IP_HDRINCL"); closesocket(sock); return ; } SOCKADDR_IN sa; sa.sin_family = AF_INET; sa.sin_addr.s_addr = ip->daddr; sa.sin_port = 0; int er = sendto(sock, (char*)pack, sz, 0, (LPSOCKADDR)&sa, sizeof(sa)); closesocket(sock); в er получаю размер отправленного пакета. Пакет отправляется на локальный ip. считается, что сформирован правильно. ip адреса и crc соответствует. Но сниффер пакет не видит. Если не включаю IP_HDRINCL, сниффер пакет видит. но ip шапку естественно устанавливает свою. Не могу понять, куда девается пакет и как это исправить. В поисках ответа наткнулся на исходники 10 летней давности. http://www.sources.ru/cpp/cpp_raw_tcp_win2000.shtml Насколько я вижу, код посылки похож на мой. Сниффер видит лишь пакеты при UDP Fluding. Хотелось бы разобраться, что я делаю не так. Или починить найденную программу, чтобы потом найти различия.
|