Salut,
pourrais-tu m'en dire d'avantage sur ces restrictions ?
Car je viens d'essayer de renvoyer un packet dont je modifie les adresses comme ceci avec la libpcap :
1 2 3 4 5 6 7 8 9
|
inet_aton("192.192.192.192",&c_ip->source_ip); // on change l'adresse
inet_aton("10.0.0.41",&c_ip->destination_ip);
ether_aton("00:90:d0:53:e2:cb",&c_physique->destination_physique);
ether_aton("00:13:e8:10:54:07",&c_physique->source_physique);
// on verifi que c'est bien changé :
printf("\n Adresse ip de l'expediteur modifié : %s",inet_ntoa(c_ip->source_ip));
printf("\n Adresse ip du destinataire modifié : %s\n\t---------------",inet_ntoa(c_ip->destination_ip));
pcap_sendpacket(handle2, corps, sizeof(corps)); |
Et cela marche a moitier on va dire. Car si je laisse la partie sniffer de mon firewall tourner, je récupère bien le nouveau packet, avec mes modifications sur le réseau. Par contre, avec wireshark, j'obtient une erreur qui me dit que mon packet est mal former. Seulement j'ignore pourquoi pour l'instant.
Edit : je laisse se message pour ceux que ca intéresse, mais j'ai trouvé d'ou vient mon erreur, une bete erreur lol, sizeof(corps) ne vaut pas la taille en mémoire, mais la taille du type qui est u_char donc 4. Voila d'ou vient certainement mon problème. Je vais m'empresser de corriger cela.
Edit bis : Voici la correction :
pcap_sendpacket(handle2, corps, entete->len);
ou entete est une structure du type pcap_pkthdr qui est déclaré dans la fonction appellé pour chaque packet via l'instruction pcap_loop. Donc il est tout a fait possible de manipuler les adresses mac via la libpcap. Bon maintenant je vais aller faire des tests concrets pour natter les packets autoriser. Si cela passe, je serais contant, sinon, je devrais surrement regarder aux checksums que wireshark me signal a chaque réponse.
Merci de votre aide
Partager