Bonjour tout le monde !
Voilà je viens ici pour vous demander votre aide pour un pti programme(un pti sniffer) que je suis en train de faire .
Je voudrais que le programme s'exécute sur un réseau local et renvoi les Adresses IP et MAC associées , ensuite qu'il détermine si les équipements découverts sont serveurs ou client(étude des ports ouverts). Ensuite récupérer le hostname de chaque IP et pourquoi pas le système d'exploitation.
C'est sur ces deux derniers points que je n'arrive pas encore à arriver à mes fins ^^
En effet pour trouver le hostname ,en cherchant sur le net j'ai vu des fonctions (gethostbyaddr) qui renvoient le nom d'hôte du poste sur lequel est exécutè le programme, code qui serait comme ceci :
Code :
- #include <netdb.h>
- #include <netinet/in.h>
- #include <sys/socket.h>
- int main ( int argc, char *argv[] ) {
- struct hostent *sn;
- struct in_addr in;
- if ( argc != 2 )
- exit(1);
- in.s_addr = inet_addr(argv[1]);
- sn = gethostbyaddr((char *)&in, 4, AF_INET);
- if ( sn )
- printf("%s\n", sn->h_name);
- else
- printf("?\n" );
- return 0;
- }
|
Je n'utilise pas ce code, je ne sais pas si la fonction conviendrait a mon prog.
Moi je voudrais l'exécuter pour chacune de mes IP trouvée (stockées dans une mémoire partagée), et je n'arrive pas à me servir de cette fonction.
Y aurait il une autre solution (ou requête DNS ?) ?
A oui j'allais oublier , je suis sous Ubuntu
Merci d'avance
P.S : Et au pire en bonus si quelqu'un aurait une idée comment déterminer les équipements d'interconnexions présents ( Switch , Routeur ( Cisco CDP..) je suis preneur !
ShNaKeUr