Une solution relativement simpl(ist)e consisterait à émettre un ECHO REQUEST sur l'adresse de broadcast réseau et d'en afficher les réponses ECHO REPLY.
# ping -b 10.169.27.255/24
Cette solution présente le défaut que toutes les machines risquent de ne pas répondre, ou toutes les réponses risquent de ne pas être prises en compte.
Une solution plus simple et fiable (mais qui ne fonctionne que sur des réseaux locaux (même réseau IP)) consiste à scanner ton réseau à coups de requetes sur les machines. Tu sais que, avant de tenter une ouverture de connexion sur un port quelconque, une requete ARP sera émise afin de déterminer l'adresse physique de la machine, et seule la machine en question va répondre à cette requete, si elle est allumée. Du coup, le simple fait de faire la résolution d'adresse physique peut te permettre de déterminer quelles machines sont présentes sur ton réseau, ce sont celles qui seront dans ta table ARP une fois le scan terminé.
1 2
| # nmap -sP 10.169.27.0/24
# arp -a |
Quelques API qui pourraient être utiles :
http://jpcap.sourceforge.net/javadoc/index.html
http://www.j-sim.org/v1.3/api/index.html
Partager