lcrzo_spoof(3)

NAME
lcrzo_spoof - bibliotheque lcrzo : spoofing (emission de paquets)

CONTENU
/*    Bibliotheque reseau de Laurent Constantin (lcrzo)
                 Module lcrzo_spoof
  Les fonctions presentes dans ce module permettent d'envoyer
  des packets spoofes.
*/
/*-------------------------------------------------------------*/
/* definition d'un lcrzo_spoof. Vous ne devriez pas utiliser
   directement ses champs. */
/*-------------------------------------------------------------*/
typedef struct
{ lcrzo_int16 spooftype;
  lcrzo_device device;
  lcrzo_uint16       para_fragoctosize;
  lcrzo_bool         para_printbeforesending;
  lcrzo_printprofile para_printprofile;
  lcrzo_bool         para_useethforip;
  int fd;
  void *plli;
  void *padapter;
} lcrzo_spoof;
/*-------------------------------------------------------------*/
/* Nom : lcrzo_spoof_init
   Description :
     Initialise un lcrzo_spoof.
   Parametre(s) d'entree :
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     *pspoof : lcrzo_spoof initialise
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_spoof_init(lcrzo_spoof *pspoof);
/* Nom : lcrzo_spoof_close
   Description :
     Ferme un lcrzo_spoof.
   Parametre(s) d'entree :
   Parametre(s) d'entree-sortie :
     *pspoof : lcrzo_spoof a fermer
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_spoof_close(lcrzo_spoof *pspoof);
/*-------------------------------------------------------------*/
/* Nom : lcrzo_spoof_eth
   Description :
     Spoofe (emet sur le reseau) un paquet Ethernet
   Parametre(s) d'entree :
     device : device a utiliser (ex: "eth0")
     packet : paquet a envoyer
     packetsize : taille de packet
   Parametre(s) d'entree-sortie :
     *pspoof : lcrzo_spoof de travail
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_spoof_eth(lcrzo_spoof *pspoof,
		    lcrzo_constdevice device,
		    lcrzo_constdata packet,
		    lcrzo_int32 packetsize);
/* Nom : lcrzo_spoof_ip
   Description :
     Spoofe (emet sur le reseau) un paquet IP
   Parametre(s) d'entree :
     packet : paquet a envoyer
     packetsize : taille de packet
   Parametre(s) d'entree-sortie :
     *pspoof : lcrzo_spoof de travail
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_spoof_ip(lcrzo_spoof *pspoof,
		   lcrzo_constdata packet,
		   lcrzo_int32 packetsize);
/*-------------------------------------------------------------*/
/* Nom : lcrzo_spoof_ipoptdata
   Description :
     Spoofe un paquet avec {entete IP, options IP, donnees IP}
   Parametre(s) d'entree :
     hdrlip : entete IP
     ipopt : options IP
     ipoptsize : taille des options IP
     data : donnees IP
     datasize : taille des donnees IP
   Parametre(s) d'entree-sortie :
     *pspoof : lcrzo_spoof de travail
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_spoof_ipoptdata(lcrzo_spoof *pspoof,
			  lcrzo_hdrlip hdrlip,
			  lcrzo_constipopt ipopt,
			  lcrzo_uint8 ipoptsize,
			  lcrzo_constdata data,
			  lcrzo_uint16 datasize);
/* Nom : lcrzo_spoof_ipoptudpdata
   Description :
     Spoofe un paquet avec {entete IP, options IP,
     entete UDP, donnees UDP}
   Parametre(s) d'entree :
     hdrlip : entete IP
     ipopt : options IP
     ipoptsize : taille des options IP
     hdrludp : entete UDP
     data : donnees UDP
     datasize : taille des donnees UDP
   Parametre(s) d'entree-sortie :
     *pspoof : lcrzo_spoof de travail
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_spoof_ipoptudpdata(lcrzo_spoof *pspoof,
			     lcrzo_hdrlip hdrlip,
			     lcrzo_constipopt ipopt,
			     lcrzo_uint8 ipoptsize,
			     lcrzo_hdrludp hdrludp,
			     lcrzo_constdata data,
			     lcrzo_uint16 datasize);
/* Nom : lcrzo_spoof_ipopttcpdata
   Description :
     Spoofe un paquet avec {entete IP, options IP,
     entete TCP, options TCP, donnees TCP}
   Parametre(s) d'entree :
     hdrlip : entete IP
     ipopt : options IP
     ipoptsize : taille des options IP
     hdrltcp : entete TCP
     tcpopt : options TCP
     tcpoptsize : taille des options TCP
     data : donnees TCP
     datasize : taille des donnees TCP
   Parametre(s) d'entree-sortie :
     *pspoof : lcrzo_spoof de travail
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_spoof_ipopttcpoptdata(lcrzo_spoof *pspoof,
				lcrzo_hdrlip hdrlip,
				lcrzo_constipopt ipopt,
				lcrzo_uint8 ipoptsize,
				lcrzo_hdrltcp hdrltcp,
				lcrzo_consttcpopt tcpopt,
				lcrzo_uint8 tcpoptsize,
				lcrzo_constdata data,
				lcrzo_uint16 datasize);
/* Nom : lcrzo_spoof_ipopticmpdata
   Description :
     Spoofe un paquet avec {entete IP, options IP,
     entete ICMP, donnees ICMP}
   Parametre(s) d'entree :
     hdrlip : entete IP
     ipopt : options IP
     ipoptsize : taille des options IP
     hdrlicmp : entete ICMP
     data : donnees ICMP
     datasize : taille des donnees ICMP
   Parametre(s) d'entree-sortie :
     *pspoof : lcrzo_spoof de travail
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_spoof_ipopticmpdata(lcrzo_spoof *pspoof,
			      lcrzo_hdrlip hdrlip,
			      lcrzo_constipopt ipopt,
			      lcrzo_uint8 ipoptsize,
			      lcrzo_hdrlicmp hdrlicmp,
			      lcrzo_constdata data,
			      lcrzo_uint16 datasize);
/* Nom : lcrzo_spoof_ethdata
   Description :
     Spoofe un paquet avec {entete Ethernet, donnees Ethernet}
   Parametre(s) d'entree :
     device : device a utiliser (ex: "eth0")
     hdrleth : entete Ethernet
     data : donnees Ethernet
     datasize : taille des donnees Ethernet
   Parametre(s) d'entree-sortie :
     *pspoof : lcrzo_spoof de travail
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_spoof_ethdata(lcrzo_spoof *pspoof,
			lcrzo_constdevice device,
			lcrzo_hdrleth hdrleth,
			lcrzo_constdata data,
			lcrzo_uint16 datasize);
/* Nom : lcrzo_spoof_ethipoptdata
   Description :
     Spoofe un paquet avec {entete Ethernet, entete IP,
     options IP, donnees IP}
   Parametre(s) d'entree :
     device : device a utiliser (ex: "eth0")
     hdrleth : entete Ethernet
     hdrlip : entete IP
     ipopt : options IP
     ipoptsize : taille des options IP
     data : donnees IP
     datasize : taille des donnees IP
   Parametre(s) d'entree-sortie :
     *pspoof : lcrzo_spoof de travail
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_spoof_ethipoptdata(lcrzo_spoof *pspoof,
			     lcrzo_constdevice device,
			     lcrzo_hdrleth hdrleth,
			     lcrzo_hdrlip hdrlip,
			     lcrzo_constipopt ipopt,
			     lcrzo_uint8 ipoptsize,
			     lcrzo_constdata data,
			     lcrzo_uint16 datasize);
/* Nom : lcrzo_spoof_ethipoptudpdata
   Description :
     Spoofe un paquet avec {entete Ethernet, entete IP,
     options IP, entete UDP, donnees UDP}
   Parametre(s) d'entree :
     device : device a utiliser (ex: "eth0")
     hdrleth : entete Ethernet
     hdrlip : entete IP
     ipopt : options IP
     ipoptsize : taille des options IP
     hdrludp : entete UDP
     data : donnees UDP
     datasize : taille des donnees UDP
   Parametre(s) d'entree-sortie :
     *pspoof : lcrzo_spoof de travail
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_spoof_ethipoptudpdata(lcrzo_spoof *pspoof,
				lcrzo_constdevice device,
				lcrzo_hdrleth hdrleth,
				lcrzo_hdrlip hdrlip,
				lcrzo_constipopt ipopt,
				lcrzo_uint8 ipoptsize,
				lcrzo_hdrludp hdrludp,
				lcrzo_constdata data,
				lcrzo_uint16 datasize);
/* Nom : lcrzo_spoof_ethipopttcpoptdata
   Description :
     Spoofe un paquet avec {entete Ethernet, entete IP,
     options IP, entete TCP, options TCP, donnees TCP}
   Parametre(s) d'entree :
     device : device a utiliser (ex: "eth0")
     hdrleth : entete Ethernet
     hdrlip : entete IP
     ipopt : options IP
     ipoptsize : taille des options IP
     hdrltcp : entete TCP
     tcpopt : options TCP
     tcpoptsize : taille des options TCP
     data : donnees TCP
     datasize : taille des donnees TCP
   Parametre(s) d'entree-sortie :
     *pspoof : lcrzo_spoof de travail
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_spoof_ethipopttcpoptdata(lcrzo_spoof *pspoof,
				   lcrzo_constdevice device,
				   lcrzo_hdrleth hdrleth,
				   lcrzo_hdrlip hdrlip,
				   lcrzo_constipopt ipopt,
				   lcrzo_uint8 ipoptsize,
				   lcrzo_hdrltcp hdrltcp,
				   lcrzo_consttcpopt tcpopt,
				   lcrzo_uint8 tcpoptsize,
				   lcrzo_constdata data,
				   lcrzo_uint16 datasize);
/* Nom : lcrzo_spoof_ethipopticmpdata
   Description :
     Spoofe un paquet avec {entete Ethernet, entete IP,
     options IP, entete ICMP, donnees ICMP}
   Parametre(s) d'entree :
     device : device a utiliser (ex: "eth0")
     hdrleth : entete Ethernet
     hdrlip : entete IP
     ipopt : options IP
     ipoptsize : taille des options IP
     hdrlicmp : entete ICMP
     data : donnees ICMP
     datasize : taille des donnees ICMP
   Parametre(s) d'entree-sortie :
     *pspoof : lcrzo_spoof de travail
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_spoof_ethipopticmpdata(lcrzo_spoof *pspoof,
				 lcrzo_constdevice device,
				 lcrzo_hdrleth hdrleth,
				 lcrzo_hdrlip hdrlip,
				 lcrzo_constipopt ipopt,
				 lcrzo_uint8 ipoptsize,
				 lcrzo_hdrlicmp hdrlicmp,
				 lcrzo_constdata data,
				 lcrzo_uint16 datasize);
/* Nom : lcrzo_spoof_ethipopticmpdata
   Description :
     Spoofe un paquet avec {entete Ethernet, entete ARP/RARP}
   Parametre(s) d'entree :
     device : device a utiliser (ex: "eth0")
     hdrleth : entete Ethernet
     hdrlarp : entete ARP
   Parametre(s) d'entree-sortie :
     *pspoof : lcrzo_spoof de travail
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_spoof_etharp(lcrzo_spoof *pspoof,
		       lcrzo_constdevice device,
		       lcrzo_hdrleth hdrleth,
		       lcrzo_hdrlarp hdrlarp);
/*-------------------------------------------------------------*/
/* Nom : lcrzo_spoof_get_fds
   Description :
     Obtient les descripteurs de fichier.
   Parametre(s) d'entree :
     *pspoof : lcrzo_spoof dont on veut les fds
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     *pwritefd : descripteur de fichier utilise en ecriture (-1 si ferme)
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_spoof_get_fd(lcrzo_spoof *pspoof,
		       int *pwritefd);
/*-------------------------------------------------------------*/
/***************************************************************
 * Note sur les lcrzo_spoofeasy_xxx :                          *
 * Ces fonctions envoient des packets simples. En effet, dans  *
 * la majorite des cas, on ne veut pas specifier l'id, la      *
 * window, le type eth, etc.                                   *
 ***************************************************************/
/* Nom : lcrzo_spoofeasy_ipudp
   Description :
     Spoofe un paquet avec {entete IP, entete UDP, donnees UDP}
   Parametre(s) d'entree :
     srcipl : adresse IP source
     dstipl : adresse IP destination
     srcport : port source
     dstport : port destination
     udpdata : donnees UDP
     udpdatasize : taille des donnees UDP
   Parametre(s) d'entree-sortie :
     *pspoof : lcrzo_spoof de travail
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_spoofeasy_ipudp(lcrzo_ipl srcipl,
			  lcrzo_ipl dstipl,
			  lcrzo_uint16 srcport,
			  lcrzo_uint16 dstport,
			  lcrzo_constdata udpdata,
			  lcrzo_uint16 udpdatasize);
/* Nom : lcrzo_spoofeasy_iptcp
   Description :
     Spoofe un paquet avec {entete IP, entete TCP, donnees TCP}
   Parametre(s) d'entree :
     srcipl : adresse IP source
     dstipl : adresse IP destination
     srcport : port source
     dstport : port destination
     seqnum : numero de sequence
     acknum : numero d'acquittement
     syn : bit syn
     ack : bit ack
     fin : bit fin
     rst : bit rst
     tcpdata : donnees TCP
     tcpdatasize : taille des donnees TCP
   Parametre(s) d'entree-sortie :
     *pspoof : lcrzo_spoof de travail
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_spoofeasy_iptcp(lcrzo_ipl srcipl,
			  lcrzo_ipl dstipl,
			  lcrzo_uint16 srcport,
			  lcrzo_uint16 dstport,
			  lcrzo_uint32 seqnum,
			  lcrzo_uint32 acknum,
			  lcrzo_bool syn,
			  lcrzo_bool ack,
			  lcrzo_bool fin,
			  lcrzo_bool rst,
			  lcrzo_constdata tcpdata,
			  lcrzo_uint16 tcpdatasize);
/* Nom : lcrzo_spoofeasy_ipicmp
   Description :
     Spoofe un paquet avec {entete IP, entete ICMP, donnees ICMP}
   Parametre(s) d'entree :
     srcipl : adresse IP source
     dstipl : adresse IP destination
     type : type ICMP
     code : code ICMP
     icmpdata : donnees ICMP
     icmpdatasize : taille des donnees ICMP
   Parametre(s) d'entree-sortie :
     *pspoof : lcrzo_spoof de travail
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_spoofeasy_ipicmp(lcrzo_ipl srcipl,
			   lcrzo_ipl dstipl,
			   lcrzo_uint8 type,
			   lcrzo_uint8 code,
			   lcrzo_constdata icmpdata,
			   lcrzo_uint16 icmpdatasize);
/* Nom : lcrzo_spoofeasy_ethipudp
   Description :
     Spoofe un paquet avec {entete Ethernet, entete IP,
     entete UDP, donnees UDP}
   Parametre(s) d'entree :
     device : device sur lequel le paquet est emis
     srcetha : adresse Ethernet source
     dstetha : adresse Ethernet destination
     srcipl : adresse IP source
     dstipl : adresse IP destination
     srcport : port source
     dstport : port destination
     udpdata : donnees UDP
     udpdatasize : taille des donnees UDP
   Parametre(s) d'entree-sortie :
     *pspoof : lcrzo_spoof de travail
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_spoofeasy_ethipudp(lcrzo_constdevice device,
			     lcrzo_constetha srcetha,
			     lcrzo_constetha dstetha,
			     lcrzo_ipl srcipl,
			     lcrzo_ipl dstipl,
			     lcrzo_uint16 srcport,
			     lcrzo_uint16 dstport,
			     lcrzo_constdata udpdata,
			     lcrzo_uint16 udpdatasize);
/* Nom : lcrzo_spoofeasy_ethiptcp
   Description :
     Spoofe un paquet avec {entete Ethernet, entete IP,
     entete TCP, donnees TCP}
   Parametre(s) d'entree :
     device : device sur lequel le paquet est emis
     srcetha : adresse Ethernet source
     dstetha : adresse Ethernet destination
     srcipl : adresse IP source
     dstipl : adresse IP destination
     srcport : port source
     dstport : port destination
     seqnum : numero de sequence
     acknum : numero d'acquittement
     syn : bit syn
     ack : bit ack
     fin : bit fin
     rst : bit rst
     tcpdata : donnees TCP
     tcpdatasize : taille des donnees TCP
   Parametre(s) d'entree-sortie :
     *pspoof : lcrzo_spoof de travail
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_spoofeasy_ethiptcp(lcrzo_constdevice device,
			     lcrzo_constetha srcetha,
			     lcrzo_constetha dstetha,
			     lcrzo_ipl srcipl,
			     lcrzo_ipl dstipl,
			     lcrzo_uint16 srcport,
			     lcrzo_uint16 dstport,
			     lcrzo_uint32 seqnum,
			     lcrzo_uint32 acknum,
			     lcrzo_bool syn,
			     lcrzo_bool ack,
			     lcrzo_bool fin,
			     lcrzo_bool rst,
			     lcrzo_constdata tcpdata,
			     lcrzo_uint16 tcpdatasize);
/* Nom : lcrzo_spoofeasy_ethipicmp
   Description :
     Spoofe un paquet avec {entete Ethernet, entete IP,
     entete ICMP, donnees ICMP}
   Parametre(s) d'entree :
     device : device sur lequel le paquet est emis
     srcetha : adresse Ethernet source
     dstetha : adresse Ethernet destination
     srcipl : adresse IP source
     dstipl : adresse IP destination
     type : type ICMP
     code : code ICMP
     icmpdata : donnees ICMP
     icmpdatasize : taille des donnees ICMP
   Parametre(s) d'entree-sortie :
     *pspoof : lcrzo_spoof de travail
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_spoofeasy_ethipicmp(lcrzo_constdevice device,
			      lcrzo_constetha srcetha,
			      lcrzo_constetha dstetha,
			      lcrzo_ipl srcipl,
			      lcrzo_ipl dstipl,
			      lcrzo_uint8 type,
			      lcrzo_uint8 code,
			      lcrzo_constdata icmpdata,
			      lcrzo_uint16 icmpdatasize);
/*-------------------------------------------------------------*/
/* si l'on veut emettre des paquets fragmentes, on peut
   affecter le fragoctosize d'un lcrzo_spoof. Cette valeur
   correspond a :
     taille_maxi_des_donnees_IP / 8
   Par exemple, pour envoyer des paquets avec uniquement
   24 octets de donnees :
     lcrzo_spoof_set_fragoctosize(&spoof, 3);
 */
int lcrzo_spoof_set_fragoctosize(lcrzo_spoof *pspoof,
				 lcrzo_uint16 fragoctosize);
int lcrzo_spoof_get_fragoctosize(lcrzo_spoof *pspoof,
				 lcrzo_uint16 *pfragoctosize);
/*-------------------------------------------------------------*/
/* on peut affecter cette valeur si l'on veut afficher
   tous les paquets avant qu'ils soient emis sur le reseau.
   Par exemple :
     lcrzo_spoof_set_printbeforesending(&spoof, 1);
*/
int lcrzo_spoof_set_printbeforesending(lcrzo_spoof *pspoof,
				       lcrzo_bool printbeforesending);
int lcrzo_spoof_get_printbeforesending(lcrzo_spoof *pspoof,
				       lcrzo_bool *pprintbeforesending);
/*-------------------------------------------------------------*/
/* si on affiche les paquets avant de les emettre, on peut
  changer leur profil d'affichage. Par exemple :
     lcrzo_spoof_set_printprofile(&spoof,
                                  LCRZO_PRINTPROFILE_HEXANCHMS);
*/
int lcrzo_spoof_set_printprofile(lcrzo_spoof *pspoof,
				 lcrzo_printprofile printprofile);
int lcrzo_spoof_get_printprofile(lcrzo_spoof *pspoof,
				 lcrzo_printprofile *pprintprofile);
/*-------------------------------------------------------------*/
/* definit si l'on spoofe des paquets Ethernet lorsque l'utilisateur
     veut spoofer des paquets IP. C'est tres utile sur des
     systemes comme Solaris qui modifient les valeurs des entetes
     IP. */
int lcrzo_spoof_set_useethforip(lcrzo_spoof *pspoof,
				lcrzo_bool useethforip);
int lcrzo_spoof_get_useethforip(lcrzo_spoof *pspoof,
				lcrzo_bool *puseethforip);

VOIR AUSSI
lcrzo(3), lcrzo_types(3), lcrzo_data(3), lcrzo_string(3), lcrzo_time(3), lcrzo_file(3), lcrzo_address(3), lcrzo_device(3), lcrzo_list(3), lcrzo_process(3), lcrzo_ipc(3), lcrzo_header(3), lcrzo_ipopt(3), lcrzo_tcpopt(3), lcrzo_packet(3), lcrzo_icmp(3), lcrzo_print(3), lcrzo_record(3), lcrzo_conf(3), lcrzo_spoof(3), lcrzo_sniff(3), lcrzo_sock(3), lcrzo_wait(3), lcrzo_global(3), lcrzo_error(3) lcrzo_misc(3),