Использую WinpkFilter 3.0 и VC++ 2005
Перехватив пакет, получаю, что значения некоторых полей IP заголовка неверные, а некоторые верные. Вот значения переменных для перехваченного ICMP эхо-пакета, пингующего ntoskrnl.com.
http://img314.imageshack.us/img314/8563/strbagzu6.jpg
Структура, описывающая IP заголовок:
typedef struct iphdr
{
u_char ip_hl:4, /* header length */
ip_v:4; /* version */
u_char ip_tos; /* type of service */
u_short ip_len; /* total length */
u_short ip_id; /* identification */
short ip_off; /* fragment offset field */
#define IP_DF 0x4000 /* dont fragment flag */
#define IP_MF 0x2000 /* more fragments flag */
u_char ip_ttl; /* time to live */
u_char ip_p; /* protocol */
u_short ip_sum; /* checksum */
struct in_addr ip_src,ip_dst; /* source and dest address */
} iphdr, *iphdr_ptr;
Думал, может в ней ошибка, но IP адреса, которые находятся в самом конце заголовка, верные!
Подскажите, в чем может быть моя ошибка?