Envois ARP avec libnet.
Dark monk
-
Dark monk -
Dark monk -
Bonjour a tous,
Voila j'aimerais apprendre a utiliser libnet 1.1, le probléme et que je ne trouve pas trop de documentation sur le net. (J'ai trouvé une documentation en anglais mais elle est sur une ancienne version).
J'aimerais bien avoir des liens sur une bonne documentation si vous avez... 8-)
Voici un code que j'ai modifié des exemples fournis avec libnet, permettant d'envoyer des requêtes ARP :
J'envois donc 2 requête ARP, la première fais 42 bytes et la seconde 84 bytes. Je ne comprend pas pourquoi la taille augmente de 42 bytes a chaque nouvelle requêtes. Et comment faire en sorte que sa reste a 42 bytes.
Voila j'aimerais apprendre a utiliser libnet 1.1, le probléme et que je ne trouve pas trop de documentation sur le net. (J'ai trouvé une documentation en anglais mais elle est sur une ancienne version).
J'aimerais bien avoir des liens sur une bonne documentation si vous avez... 8-)
Voici un code que j'ai modifié des exemples fournis avec libnet, permettant d'envoyer des requêtes ARP :
#if (HAVE_CONFIG_H)
#if ((_WIN32) && !(__CYGWIN__))
#include "../include/win32/config.h"
#else
#include "../include/config.h"
#endif
#endif
#include "./libnet_test.h"
int c;
u_int32_t i;
libnet_t *l;
libnet_ptag_t t;
char *device = NULL;
u_int8_t *packet;
u_int32_t packet_s;
char errbuf[LIBNET_ERRBUF_SIZE];
void arp();
int main(int argc, char *argv[])
{
printf("libnet 1.1 packet shaping: ARP[link -- autobuilding ethernet]\n");
if (argc > 1)
{
device = argv[1];
}
l = libnet_init(
LIBNET_LINK_ADV, /* injection type */
device, /* network interface */
errbuf); /* errbuf */
if (l == NULL)
{
fprintf(stderr, "%s", errbuf);
exit(EXIT_FAILURE);
}
else
{
i = libnet_get_ipaddr4(l);
arp();
arp();
}
libnet_destroy(l);
return (EXIT_SUCCESS);
bad:
libnet_destroy(l);
return (EXIT_FAILURE);
}
void arp()
{
t = libnet_build_arp(
ARPHRD_ETHER, /* hardware addr */
ETHERTYPE_IP, /* protocol addr */
6, /* hardware addr size */
4, /* protocol addr size */
ARPOP_REPLY, /* operation type */
enet_src, /* sender hardware addr */
(u_int8_t *)&i, /* sender protocol addr */
enet_dst, /* target hardware addr */
(u_int8_t *)&i, /* target protocol addr */
NULL, /* payload */
0, /* payload size */
l, /* libnet context */
0); /* libnet id */
if (t == -1)
{
fprintf(stderr, "Can't build ARP header: %s\n", libnet_geterror(l));
}
t = libnet_autobuild_ethernet(
enet_dst, /* ethernet destination */
ETHERTYPE_ARP, /* protocol type */
l); /* libnet handle */
if (t == -1)
{
fprintf(stderr, "Can't build ethernet header: %s\n",
libnet_geterror(l));
}
if (libnet_adv_cull_packet(l, &packet, &packet_s) == -1)
{
fprintf(stderr, "%s", libnet_geterror(l));
}
else
{
fprintf(stderr, "packet size: %d\n", packet_s);
libnet_adv_free_packet(l, packet);
}
c = libnet_write(l);
if (c == -1)
{
fprintf(stderr, "Write error: %s\n", libnet_geterror(l));
}
else
{
fprintf(stderr, "Wrote %d byte ARP packet from context \"%s\"; "
"check the wire.\n", c, libnet_cq_getlabel(l));
}
}
/* EOF */
J'envois donc 2 requête ARP, la première fais 42 bytes et la seconde 84 bytes. Je ne comprend pas pourquoi la taille augmente de 42 bytes a chaque nouvelle requêtes. Et comment faire en sorte que sa reste a 42 bytes.
A voir également:
- Envois ARP avec libnet.
- X arp - Télécharger - Pare-feu
- Envois gros fichier - Guide
- Comment se réabonner aux envois - Forum Gmail
- Problème d 'envois avec cegetel.net SMTP 587 - Forum Incredimail
- Requete ARP permanantes ✓ - Forum Réseau