PMAKE
Description
pmake est un générateur de paquets réseau. A la différence
de PacketMaker, il fonctionne sans interface graphique.
Des fichiers de configuration permettent de spécifier les protocoles
utilisés ainsi que les valeurs des différents champs des entêtes.
Protocoles pris en charge : Ethernet, ARP, IP, ICMP, TCP, UDP.
Utilisation
Les paramètres
suivants peuvent être spécifiés :
-c fichier
: spécifie le fichier contenant les directives de construction du paquet.
-i interface : sous Windows, c'est le numéro de l'adaptateur
que l'on veut utiliser ; sous Linux, c'est le nom de l'interface (par exemple,
eth0).
-w : lance l'assistant de construction de paquet (todo).
Fichier de configuration
Les fichiers de configuration décrivent la constitution d'un paquet.
Chaque ligne est construite de la manière suivante :
protocole.champ=valeur
protocole
indique le nom du protocole à configurer (par exemple : eth, ip...)
champ indique le nom du champ qui aura pour valeur valeur.
Suivant le type de données requis, valeur peut être spécifié
sous différentes formes :
- décimale
- hexa : la valeur doit commencer par "0x"
(par exemple, 0x0800)
- string : caractères ascii ; caractères spéciaux : \r,
\n, \t, \x
- décimale pointée, pour les adresses IP (par exemple, 192.168.0.1)
Protocoles,
champs et paramètres
- eth (Ethernet)
- dest : adresse
MAC destination
- source :
adresse MAC source
- type : type/longueur
de la trame
- type_auto
: si différent de 0, pmake remplit automatiquement le champ "type"
- arp (ARP)
- ip (IP)
- ihl : version
et longueur de l'entête
- tos : type
de service
- tot_len
: longueur totale du paquet
- id : identifiant
- fragg_off
: flags de fragmentation et offset du fragment
- ttl : time
to live
- protocol
: protocole encapsulé (ICMP, TCP...)
- checksum
: somme de contrôle
- saddr :
adresse source
- daddr :
adresse destination
- proto_auto
: si différent de 0, pmake remplit automatiquement le champ "protocol"
- auto_checksum
: si différent de 0, pmake calcule automatiquement le total de
contrôle sur l'entête IP.
- auto_len
: si différent de 0, pmake fixe automatiquement la valeur du champ
"tot_len"
- icmp (ICMP)
- type : type
de message
- code : code
du message
- checksum
: total de contrôle
- misc : données
optionnelles
- tcp (TCP)
- source :
port source
- dest : port
destination
- seq : numéro
de séquence
- ack : numéro
d'acquittement
- hl : taille
de l'entête
- flags :
drapeaux de gestion de connexion (SYN, ACK...)
- window :
fenêtre
- checksum
: total de contrôle
- urgent :
pointeur de données urgentes
- auto_checksum
: si différent de 0, pmake calcule automatiquement le total de
contrôle.
- fin : état
du bit FIN
- syn : état
du bit SYN
- rst : état
du bit RST
- psh : état
du bit PSH
- ack : état
du bit ACK
- urg : état
du bit URG
- udp (UDP)
- source :
port source
- dest : port
destination
- len : longueur
- checksum
: total de contrôle
- auto_checksum
: si différent de 0, pmake calcule automatiquement le total de
contrôle.
- auto_len
: si différent de 0, pmake fixe automatiquement la valeur du champ
"tot_len"
- raw (données
brutes)
- data : données
brutes
- datacat
: concaténation des données
- file : utilise
les données contenues dans le fichier spécifié
- offset :
offset des données dans la trame
Compilation
Windows : projet Visual C++
Linux : gcc pmake.c protocols.c -o pmake
Liens
Download du kit de développement (Packet32) : http://winpcap.polito.it/
Télécharger
la source du projet
Mai
2003