Sujet : [API Win32] Récupérer les Echo Reply ICMP en réponse à un ping

Bonjour,

Je développe dans Windev. Je ne trouve aucune fonction qui me permette d'écouter ce qui passe par ma carte réseau à part les Socket. Or les socket dans mon cas ne peuvent me servir puisque je travaille sans numéro de port.

J'ai besoin de faire un Ping de broadcast pour pouvoir récupérer les postes présents sur un réseau local. Je cherche donc le moyen de faire tout ça grâce à l'API Win32 :

* Envoyer une trame IP de type Echo Request en broadcast,
* Ecouter tous les Echo Reply renvoyés par les machines présentes qui auront répondu,
* Pouvoir aussi récupérer les noms NetBios correspondants aux IP reçues.

Est-t-il donc possible de faire tout ça avec l'API Win32 ?

ps : a priori j'ai réussi à trouver une fonction pour Windev qui fait du ping grâce au dll wsock32 et icmp. Le hic c'est que l'envoi sur l'adresse de broadcast ne semble pas vouloir fonctionner ; de même qu'un ping de broadcast en console ne fonctionne pas non plus...

-------------------------------
"Keyboard not detected, press a key to continue..."

WWW

Re : [API Win32] Récupérer les Echo Reply ICMP en réponse à un ping

Re,

Ca réflexionne ?

De mon côté, une autre idée m'est venue :

* Lancer un message en broadcast pour forcer la machine à mettre à jour sa table ARP et ainsi récupérer les IP des postes vus : toujours pareil, comment on fait un envoi de broadcast sous Windows ? (ce qui est rageant c'est que sous Linux, c'est d'une simplicité enfantine : ping -b x.x.x.255),
* Reste plus qu'à lire cette fameuse table ARP : elle est où sur la machine ? quel est son format ? Comment la lit-on ?
* Ensuite pour la résolution de nom netBios, il y a la commande nbtstat qui permet de faire ça (sous DOS) : elle retourne le nom de la machine ainsi que son groupe de travail.

Dernier problème : comment faire tout ça dans Windev ?! hmm Je continue mon investigation...:)

-------------------------------
"Keyboard not detected, press a key to continue..."

WWW

Re : [API Win32] Récupérer les Echo Reply ICMP en réponse à un ping

Salut !

Je viens de faire un petit test chez moi :

1) Le ping broadcast a été modifié avec XP pour qu'il ne réponde plus il me semble mais je ne sais plus ce qu'il faut faire ... sad

RFC1122: "An ICMP Echo Request destined to an IP broadcast or IP multicast address MAY be silently discarded"

Donc le ping est bien 192.168.0.255 mais aucun windows ne répond smile

Tu peux essayer de faire ping 224.0.0.1 (adresse multicast) (source)

2) un petit [c]arp -a > monFichier.txt[/c] et un petit "parsage" de ce fichier et c'est bon !
3) C'est pas un peu de la daube cette commande ?? big_smile

PS : C'est dans quel but ? Car il y a peut-être un autre moyen d'y parvenir ... wink

----------------------------------------------------------------------------------------------------------------------------
On peut être intelligent toute sa vie et stupide un instant.

WWW

Re : [API Win32] Récupérer les Echo Reply ICMP en réponse à un ping

Salut !

Merci de m'avoir répondu !

Récapitulons :

- j'ai trouvé comment lire le cache ARP avec l'API win32 : IPHLPAPI.dll, fonction GetIpNetTable. Ma fonction de lecture n'est pas encore tout à fait au point car j'ai encore des soucis de conversions de chaînes des données reçues de la dll, mais je suis sur la voie.

- Pour ce qui est du broadcast, j'ai aussi cru comprendre que sous XP, Martine pouvait se brosser pour que sa fonctionne (d'ailleur Martine est complètement irritée à force de se brosser...promis je sors quand j'ai fini le post big_smile). Je vais regarder du côté du multicast.

-

Cyberbob002 a écrit:

C'est pas un peu de la daube cette commande ??

Pas compris, qu'est-ce que tu veux dire par là ?

- Pour finir, je cherche à construire un arbre (une treeview) qui représente le réseau local où se trouve la bécane qui exécutera mon appli. Je pars de l'IP de la machine et je cherche toutes les autres machines présentes...Simple comme tout smile J'ai essayé de lancer une boucle qui lance un ping par adresse IP du réseau (en attendant de trouver comment faire un broadcast), mais c'est bien trop long ! J'ai essayé en lançant des pings en parallèle (en lançant des threads) mais même si c'est plus rapide, c'est pas forcément l'extase et j'ai des soucis avec mes threads. C'est un peu pénible pour la synchro et le pc n'aimait pas qu'il y ai une centaine de threads actifs...D'où trouver comment faire un broadcast et récupérer le cache ARP...C'est BEAUCOUP plus simple !

-------------------------------
"Keyboard not detected, press a key to continue..."

WWW

Re : [API Win32] Récupérer les Echo Reply ICMP en réponse à un ping

Je viens de tester en multicast : "Délai de la demande dépassé".

Je viens aussi de me renseigner sur le multicast :

Wikipedia a écrit:

"Lorsqu'un poste veut envoyer un paquet à un groupe multicast, il envoie ce paquet à l'adresse IP identifiant ce groupe"

"La réception est réalisée par un routeur abonné au groupe et le paquet est alors dupliqué et renvoyé grâce à une trame de niveau 2 Multicast."

"Le protocole IGMP est utilisé par le protocole IP pour l'abonnement aux groupes multicast."

Dans ces 3 citations, j'ai retenu les notions de "groupe" et d'"abonnement". Pour recevoir un paquet multicast il faut donc appartenir au groupe identifié par une adresse multicast et y être abonné...Il me paraît alors difficile de pouvoir scanner un réseau par ce biais puisque la contrainte sur le réseau est trop importante.

Je continue à chercher...

-------------------------------
"Keyboard not detected, press a key to continue..."

WWW

Re : [API Win32] Récupérer les Echo Reply ICMP en réponse à un ping

regarde du coté de fping, ça n'a pas l'air mal comme truc. Ex :

ex. To ping the class C 192.168.1.x, the specified command line could look like either:

      fping -g 192.168.1.0/24

      or

      fping -g 192.168.1.0 192.168.1.255

Sinon il y a la solution nmap mais je ne sais pas du tout comment tu peux intégrer ces soft là dans le tiens.

----------------------------------------------------------------------------------------------------------------------------
On peut être intelligent toute sa vie et stupide un instant.

WWW

Re : [API Win32] Récupérer les Echo Reply ICMP en réponse à un ping

Ok merci, je regarderai fping. Mais je ne sais pas si je vais pouvoir le compiler sur Windows. Je vais étudier tout ça. Merci !

-------------------------------
"Keyboard not detected, press a key to continue..."

WWW