Les Forums

Les Forums

Les forums sont fermés. Ils restent présent pour consultation et archivage.
Vous pouvez désormais poser vos questions directement dans les commentaires en bas de chaque page du site.
Alors n'hésitez pas à participer

Entetes IP/ICMP/ARP

Étant donné que dans de nombreux forums, je vois beaucoup de personnes ayant des problèmes avec les déclarations / types à utiliser pour élaborer des paquets, je vais vous donner quelques entetes avec lesquelles je travaille:

[u:65443e0d70]ARP[/u:65443e0d70]:
[code:1:65443e0d70]
#define ETH_ADD_LEN 6 /* Ethernet Address Length */
#define ARP_ETH_PADDING 18 /* 18 bytes ethernet padding */
#define ARP_ETH_ADDR_SPACE 6 /* Ethernet Address Space */
#define ARP_IP_ADDR_SPACE 4 /* IP Address Space */

struct arppkt
{
// Ethernet Header
unsigned char eth_daddr[ETH_ADD_LEN]; /* +00 - Destination ethernet address */
unsigned char eth_saddr[ETH_ADD_LEN]; /* +06 - Source ethernet address */
unsigned short eth_type; /* +12 - EtherType */

// ARP Header
unsigned short ar_hrd; /* +14 - Hardware address space */
unsigned short ar_pro; /* +16 - Protocol address space */
unsigned char ar_hln; /* +18 - Length of hardware address */
unsigned char ar_pln; /* +19 - Length of protocol address */
unsigned short ar_op; /* +20 - ARP opcode (command) */
unsigned char ar_sha[ETH_ADD_LEN]; /* +22 - Source Hardware address */
IPAddr ar_sip; /* +28 - Source Protocol address */
unsigned char ar_tha[ETH_ADD_LEN]; /* +32 - Destination Hardware address */
IPAddr ar_tip; /* +38 - Destination Protocol address */
/* 42 bytes */

/* Ethernet padding */
//unsigned char eth_pad[ARP_ETH_PADDING]; /* Ethernet padding */
}; // End of arppkt
[/code:1:65443e0d70]


[u:65443e0d70]IP[/u:65443e0d70]:
[code:1:65443e0d70]
struct ip_hdr
{
unsigned char hlv; /* +00 - header len. & version */
unsigned char tos; /* +01 - type of service */
unsigned short tot_len; /* +02 - total packet length */
unsigned short id; /* +04 - identification */
unsigned short fo_flag; /* +06 - fragment offset field & flags */
unsigned char ttl; /* +08 - time to live */
unsigned char protocol; /* +09 - ip protocol */
unsigned short checksum; /* +10 - ip checksum */
unsigned long saddr; /* +12 - source address */
unsigned long daddr; /* +16 - destination address */
/* 20 bytes */
};
[/code:1:65443e0d70]


[u:65443e0d70]ICMP[/u:65443e0d70]:
[code:1:65443e0d70]
struct icmp_hdr
{
unsigned char type; /* +00 - message type */
unsigned char code; /* +01 - type sub-code */
unsigned short checksum; /* +02 - icmp checksum */
unsigned short id; /* +04 - identification */
unsigned short sequence; /* +06 - sequence number */
/* 8 bytes */
};
[/code:1:65443e0d70]

[u:65443e0d70]PS[/u:65443e0d70]: Pour le reste des entetes (UDP, etc), n'ayant pas encore eu l'occasion de les utiliser, je les posterais en temps utile.
yep 4n4lyz3R,

merci pr le c/c

faudrai que tu expliques (si ta le tps) comment on peut en tirer profit

il s'agit uniquement des declarations a passer ?

sous quel environnement tu dev ? unix dows interface ?? (kdev etc...)

Merci
Ceci constitue les structures permettant de stocker les entetes IP/ICMP/ARP.

Concernant l'IDE/OS, je suis sous XP SP2 et je développe sous VS 2005 🙂

+