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)