IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

lancer une requete ARP


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 38
    Par défaut lancer une requete ARP
    Bonjour,

    Je chercher à envoyer une requete ARP (et bien sur à en lire le résultat) en C# mais je ne trouve rien à ce sujet.

    J'ai uniquement trouvé un code qui fabrique la requete à la main mais qui n'en exploite pas la réponse.

    N'existe pas des classes réseau en C# ?

    Merci de votre aide.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par waxman2 Voir le message
    N'existe pas des classes réseau en C# ?
    Si, bien sûr, mais elles travaillent au niveau IP (couche 3 du modèle OSI) ou au dessus. ARP est un protocole de couche 2...
    La seule chose que j'ai vue à ce sujet est la classe PhysicalAdress, mais ça sert juste à représenter l'adresse MAC des interfaces réseau de ta machine...

    EDIT: tu peux toujours récupérer la sortie de la commande arp -a...
    Et apparemment c'est possible aussi de récupérer l'info avec WMI

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 38
    Par défaut
    Bonjour,

    Merci de ta réponse.

    La commande arp -a ne permet d'afficher que ce qui est dans le cache local de la machine. Il faudrait donc provoquer, avant cette commande, la mise en cache d'adresse mac qu'on veut. Via un ping par exemple.

    Seulement cette table a une taille limitée et les entrées sont effacées au fur et à mesure que d'autres arrivent.

    Pour scanner un réseau entier, il faudrait donc faire un ping sur une premiere ip, lancer le arp -a, parser les résultats pour trouver l'adresse cherchée parmi les adresses présentes et recommencer ainsi de suite pour chaque adresse ip du réseau....

    J'ai réussi à arriver à mes fins via des dll deja présentes sur les systemes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    [DllImport("Ws2_32.dll")] 
            private static extern Int32 inet_addr(string ip);
     
            [DllImport("Iphlpapi.dll")]
            private static extern int SendARP (Int32 dest,Int32 host,ref Int64 mac,ref Int32 len); 
     
            static void Main(string[] args)
            {
                 return;
            }
     
            public static Int64 getRemoteMAC(string localIP,string remoteIP)
            { 
                Int32 ldest = inet_addr(remoteIP);
                Int32 lhost = inet_addr(localIP); 
     
                try 
                { 
                    Int64 macinfo = 0; 
                    Int32 len = 6;
                    int res = SendARP(ldest, 0, ref macinfo, ref len);
                    return macinfo;
                } 
                catch(Exception e) 
                {                                            
                    return 0; 
                } 
            }
     
            public static string formatMac(Int64 mac, char separator)
            {
                if (mac <= 0)
                    return "-";
     
                char[] oldmac = Convert.ToString(mac, 16).PadLeft(12, '0').ToCharArray();
     
                System.Text.StringBuilder newMac = new System.Text.StringBuilder(17);
     
                if (oldmac.Length < 12)
                    return "00-00-00-00-00-00";
     
                newMac.Append(oldmac[10]);
                newMac.Append(oldmac[11]);
                newMac.Append(separator);
                newMac.Append(oldmac[8]);
                newMac.Append(oldmac[9]);
                newMac.Append(separator);
                newMac.Append(oldmac[6]);
                newMac.Append(oldmac[7]);
                newMac.Append(separator);
                newMac.Append(oldmac[4]);
                newMac.Append(oldmac[5]);
                newMac.Append(separator);
                newMac.Append(oldmac[2]);
                newMac.Append(oldmac[3]);
                newMac.Append(separator);
                newMac.Append(oldmac[0]);
                newMac.Append(oldmac[1]);
     
                return newMac.ToString();
            }

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    bien vu !
    n'oublie pas le tag , ça pourra toujours resservir à quelqu'un

Discussions similaires

  1. [AJAX] Impossible de lancer une requete avec firefox
    Par thomasse dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 12/10/2007, 11h21
  2. lancer une requete HTTP en java
    Par Jérémy Lefevre dans le forum Applets
    Réponses: 2
    Dernier message: 31/05/2007, 17h05
  3. Impromptu : lancer une requete imr sur access
    Par kikie43 dans le forum Autres SGBD
    Réponses: 1
    Dernier message: 06/12/2006, 22h26
  4. Lancer une requête par du code
    Par Kyrha dans le forum Access
    Réponses: 8
    Dernier message: 30/05/2006, 09h10
  5. [VBA-E]Ecrire et lancer une requete sur Access
    Par marie10 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/03/2006, 14h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo