icmp thru raw sockets

From
Anatoly Skoblov (2:5030/78)
To
Gennady Porev
Date
2001-12-19T12:34:45Z
Area
SU.WINDOWS.NT.PROG
Hello Gennady!

16 Dec 01 18:31, you wrote to All:

 GP> DELPHI5/win2kpro:
 GP> Сделал я приём и отправку ICMP пакетов через raw sockets. А именно:
 GP> сокет создаётся с (af_inet,sock_raw,ipproto_icmp). После чего можно
 GP> принимать _IP_пакеты_ с сообщениями ICMP или отправлять
 GP> _ICMP_сообщения_. Логика чисто мелкософтовская, ну да ладно... Беда в
 GP> том, что не все типы ICMP приходят на такой сокет! А именно - приходят
 GP> такие типы: 0, 1, 2, 6, 7, 9, 10, 14, 15, 16, 18 и далее все подряд.
 GP> "Того самого", родного, 8-го типа, который ping и traceroute, WinSock
 GP> подло фильтрует и отправляет echoreply самостоятельно, гад.

Это достаточно естественно - кто же еще будет отвечать :)

 GP> Ergo, вопросы:
 GP> 1. Как сделать, что бы сокет (sock_raw,ipproto_icmp или другой)
 GP> принимал ВСЕ типы ICMP-сообщений?

Напистаь kernel mode driver (NDIS протокол) или используй wincap.

 GP> 2. Как ПРАВИЛЬНО сделать так, что бы можно было самому отправлять IP
 GP> пакеты? Я делал так - сокет (af_inet,sock_raw,ipproto_raw или
 GP> ipproto_ip), потом setsockopt с ipproto_ip и ip_hdrincl в true. Всё
 GP> как в линуксе. После чего сокет не желает bind'иться и читать\писать
 GP> данные куда бы то ни было.

В документации на winsock2 сказано, Что raw sockets поддерживаются только для ICMP. Вроде бы в P настоящие raw sockets появились.

 GP> Если у кого есть ещё какие-либо идеи относительно того, как ловить и
 GP> отправлять ICMP сообщения типов 0 и 8 с заданным содержанием,
 GP> необязательно через WinSock, очень прошу намылить - в долгу не
 GP> останусь.

Отправть echo request - через icmp.dll или ICMP raw sockets.

Anatoly

---
 * Origin: www.aboutphone.info - АТС Петербурга,литература,фрикинг (2:5030/78)