Показать сообщение отдельно

  #3  
Старый 13.07.2006, 14:57
Rabid Rabbit
Участник форума
Регистрация: 31.08.2003
Сообщений: 177
Провел на форуме:
249275

Репутация: 22
По умолчанию

изза GET мутить ТАКОЕ? ты лучше скажи зачем? Если ты начитался "умных" статей про спуфинг то забудь, для TCP не покатит. Впрочем как хочешь, на вот, лови:
Код:
//Подробно IP протокол описан в RFC за номером 791.
typedef struct _IPHeader{
  UCHAR  len:4, ver:4;	// версия и длина заголовка (4 бита версия и 4 бита длина)
  UCHAR  tos;		// тип сервиса 
  USHORT length;	// длина всего пакета 
  USHORT id;		// Id (идентификатор, используется для сборки фрагментов, все фрагменты имеют одинаковый id) 
  USHORT offset;	// флаги и смещения
#define	IP_DF 0x4000	// dont fragment flag
#define	IP_MF 0x2000	// more fragments flag
  UCHAR  ttl;		// TTL (time to live) - время жизни 
  UCHAR  proto;		// протокол 
  USHORT chksum;	// контрольная сумма  
  ULONG  src;		// IP-адрес отправителя 
  ULONG  dest;		// IP-адрес назначения 
}sIPHeader, *pIPHeader;
//далее идут параметры (до 320 бит)
//далее идут данные (до 65535 быйт минус заголовок) - в твоем случае TCP-фрейм

Поле pIPHeader->proto (определены в winsock.h = [1], только в winsock2.h - [2]):
	IPPROTO_IP	//   0	[1]
	IPPROTO_ICMP	//   1	[1]
	IPPROTO_IGMP	//   2	[1]
	IPPROTO_GGP	//   3	[1]
	IPPROTO_TCP	//   6	[1]
	IPPROTO_PUP	//  12	[1]
	IPPROTO_UDP	//  17	[1]
	IPPROTO_IDP	//  22	[1]
	IPPROTO_IPV6	//  41	[2]
	IPPROTO_ND	//  77	[1]
	IPPROTO_ICLFXBM	//  78	[2]
	IPPROTO_RAW	// 255  [1]
	IPPROTO_MAX	// 256	[1]	//это просто си-константа, не более (макс значение чар=255)

// TCP header. Per RFC 793, September, 1981. In Little Endian
typedef struct _TCPHeader{
  USHORT sport;		// порт источника
  USHORT dport;		// порт назначения
  ULONG  sqn;		// номер последовательности
  ULONG  ack;		// номер подтверждения
  UCHAR  x2:4, off:4;	// x2-не исп., off-смещение данных
  UCHAR  flags;		// флаги
#define	F_FIN	0x01
#define	F_SYN	0x02
#define	F_RST	0x04
#define	F_PSH	0x08
#define	F_ACK	0x10
#define	F_URG	0x20
  USHORT win;		// окно
  USHORT chcksm;	// контрольная сумма  
  USHORT urp;		// указатель важности (urgent pointer)
  ULONG  opt1;		// опции (необязательное)
  USHORT opt2;		// опции (продолжение)
  USHORT res;		// выравнимание до 32
  UCHAR	 data[];	// данные
}sTCPHeader, *pTCPHeader;
Чем собирать пакеты с нуля, намного проще заюзать халявную (для некоммерческого использования) run-time либу WinpkFilter от ntkernel.com, которая позволяет реализовать прозрачную фильтрацию и обработку пакетов в user mode. Скачать её можно отсюда: WinpkFilter.

Последний раз редактировалось Rabid Rabbit; 13.07.2006 в 16:36..
 
Ответить с цитированием