begin process at 2010 02 10 11:59:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Réseau / Internet

 > 

Adresse MAC


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Adresse MAC

mercredi 7 mai 2003 à 16:15:20 | Adresse MAC

none77

Bonjour,

j'aimerais savoir s'il est possible de récupérer l'adresse MAC d'un pc distant sur un réseau local.

Merci,
None.
vendredi 9 mai 2003 à 09:00:42 | Re : Adresse MAC

roswell117

Trouvé dans la MSDN, j'espères que ca fera ton bonheur :

[ Lien ]

This function sends an ARP request to obtain the physical address that corresponds to the specified destination IP address.

DWORD SendARP(
IPAddr DestIP,
IPAddr SrcIP,
PULONG pMacAddr,
PULONG PhyAddrLen
);
Parameters
DestIP
Specifies the destination IP address. The ARP request attempts to obtain the physical address that corresponds to this IP address.
SrcIP
Specifies the IP address of the sender. This parameter is optional. The caller may specify zero for the parameter.
pMacAddr
Pointer to a ULONG variable. On successful return, this variable contains the physical address that corresponds to the IP address specified by the DestIP parameter.
PhyAddrLen
Pointer to a ULONG variable. On successful return, this variable contains the length of the physical address pointed to by the pMacAddr parameter.
Return Values
If the function succeeds, the return value is NO_ERROR. If the function fails, an error code is returned.

Requirements
OS Versions: Windows CE 3.0 and later.
Header: Iphlpapi.h.
Link Library: Iphlpapi.lib.


-------------------------------
Réponse au message :
-------------------------------

> Bonjour,
>
> j'aimerais savoir s'il est possible de récupérer l'adresse MAC d'un pc distant sur un réseau local.
>
> Merci,
> None.
vendredi 9 mai 2003 à 09:45:37 | Re : Adresse MAC

none77

Merci;
Mais j'ai peur ke ceci no concerne ke WindowsCE, NON?
Regardes les "Requirements" et également le nom de la doc d'aide ki contient "wcesdk" : Windows CE SDK ????

Mais merci beaucoup de m'avoir répondu, je vais essayer cela , et si ca ne fonctionne pas ca me montre au moins ke c'est possible mais kil fo ke je cherche autre choz.

merci encore,
None.


-------------------------------
Réponse au message :
-------------------------------

> Trouvé dans la MSDN, j'espères que ca fera ton bonheur :
>
> [ Lien ]
>
> This function sends an ARP request to obtain the physical address that corresponds to the specified destination IP address.
>
> DWORD SendARP(
> IPAddr DestIP,
> IPAddr SrcIP,
> PULONG pMacAddr,
> PULONG PhyAddrLen
> );
> Parameters
> DestIP
> Specifies the destination IP address. The ARP request attempts to obtain the physical address that corresponds to this IP address.
> SrcIP
> Specifies the IP address of the sender. This parameter is optional. The caller may specify zero for the parameter.
> pMacAddr
> Pointer to a ULONG variable. On successful return, this variable contains the physical address that corresponds to the IP address specified by the DestIP parameter.
> PhyAddrLen
> Pointer to a ULONG variable. On successful return, this variable contains the length of the physical address pointed to by the pMacAddr parameter.
> Return Values
> If the function succeeds, the return value is NO_ERROR. If the function fails, an error code is returned.
>
> Requirements
> OS Versions: Windows CE 3.0 and later.
> Header: Iphlpapi.h.
> Link Library: Iphlpapi.lib.
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Bonjour,
> >
> > j'aimerais savoir s'il est possible de récupérer l'adresse MAC d'un pc distant sur un réseau local.
> >
> > Merci,
> > None.
>
vendredi 9 mai 2003 à 13:35:20 | Re : Adresse MAC

roswell117

Un exemple trouvé dans la MSDN de la fonction SendARP (j'en trouve beaucoup en ce moment) testé sous W2k et qui marche :

[ Lien ]

//
// Link with ws2_32.lib and iphlpapi.lib
//

#include <windows.h>
#include <stdio.h>
#include <tchar.h>
#include <iphlpapi.h>


int __cdecl main()
{
HRESULT hr;
IPAddr ipAddr;
ULONG pulMac[2];
ULONG ulLen;

ipAddr = inet_addr ("192.168.25.31");
memset (pulMac, 0xff, sizeof (pulMac));
ulLen = 6;

hr = SendARP (ipAddr, 0, pulMac, &ulLen);
printf ("Return %08x, length %8d\n", hr, ulLen);

size_t i, j;
char * szMac = new char[ulLen*3];
PBYTE pbHexMac = (PBYTE) pulMac;

//
// Convert the binary MAC address into human-readable
//
for (i = 0, j = 0; i < ulLen - 1; ++i) {
j += sprintf (szMac + j, "%02X:", pbHexMac[i]);
}

sprintf (szMac + j, "%02X", pbHexMac[i]);
printf ("MAC address %s\n", szMac);

delete [] szMac;

return 0;
}

j'ai du un peu modifier mon fichier iphlpapi.h, mais il marche parfaitement.
Celui-ci devrait faire ton bonheur !!!
vendredi 9 mai 2003 à 14:08:14 | Re : Adresse MAC

none77

Merci encore une fois,

mais j'ai un pti pb
cet exemple m'a l'air vraiement bien mais je ne trouve pas le fichier "iphlpapi.h"
Peux tu me dire ou je peux le trouver et ce que tu as modifier dedans. J'ai chercher le fichier partout sur mon dur et les cd de la msdn mais trouve po :o(
je vais essayer le CD de visual studio ....

Merci c'est vraiment sympa,
None.

PS tu peux aussi m'envoyer ca par mail:
c'est "none77" chez "caramail.com" (j'ai fais exprès de ne pas mettre l'adresse pour les SPAM ;o) ) MERCI

-------------------------------
Réponse au message :
-------------------------------

> Un exemple trouvé dans la MSDN de la fonction SendARP (j'en trouve beaucoup en ce moment) testé sous W2k et qui marche :
>
> [ Lien ]
>
> //
> // Link with ws2_32.lib and iphlpapi.lib
> //
>
> #include <windows.h>
> #include <stdio.h>
> #include <tchar.h>
> #include <iphlpapi.h>
>
>
> int __cdecl main()
> {
> HRESULT hr;
> IPAddr ipAddr;
> ULONG pulMac[2];
> ULONG ulLen;
>
> ipAddr = inet_addr ("192.168.25.31");
> memset (pulMac, 0xff, sizeof (pulMac));
> ulLen = 6;
>
> hr = SendARP (ipAddr, 0, pulMac, &ulLen);
> printf ("Return %08x, length %8d\n", hr, ulLen);
>
> size_t i, j;
> char * szMac = new char[ulLen*3];
> PBYTE pbHexMac = (PBYTE) pulMac;
>
> //
> // Convert the binary MAC address into human-readable
> //
> for (i = 0, j = 0; i < ulLen - 1; ++i) {
> j += sprintf (szMac + j, "%02X:", pbHexMac[i]);
> }
>
> sprintf (szMac + j, "%02X", pbHexMac[i]);
> printf ("MAC address %s\n", szMac);
>
> delete [] szMac;
>
> return 0;
> }
>
> j'ai du un peu modifier mon fichier iphlpapi.h, mais il marche parfaitement.
> Celui-ci devrait faire ton bonheur !!!
vendredi 9 mai 2003 à 14:12:45 | Re : Adresse MAC

roswell117

en fait, je l'ai dvp sous dev-cpp 4.9.8 et j'ai juste mis en commentaires les fonctions qui ressortaient en erreur :

#ifndef _IPHLPAPI_H
#define _IPHLPAPI_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif

//#include <iprtrmib.h>
#include <ipexport.h>
#include <iptypes.h>
#ifdef __cplusplus
extern "C" {
#endif
DWORD WINAPI AddIPAddress(IPAddr,IPMask,DWORD,PULONG,PULONG);
DWORD WINAPI CreateIpForwardEntry(PMIB_IPFORWARDROW);
DWORD WINAPI CreateIpNetEntry(PMIB_IPNETROW);
DWORD WINAPI CreateProxyArpEntry(DWORD,DWORD,DWORD);
DWORD WINAPI DeleteIPAddress(ULONG);
DWORD WINAPI DeleteIpForwardEntry(PMIB_IPFORWARDROW);
DWORD WINAPI DeleteIpNetEntry(PMIB_IPNETROW);
DWORD WINAPI DeleteProxyArpEntry(DWORD,DWORD,DWORD);
DWORD WINAPI EnableRouter(HANDLE*,OVERLAPPED*);
DWORD WINAPI FlushIpNetTable(DWORD);
DWORD WINAPI GetAdapterIndex(LPWSTR,PULONG);
DWORD WINAPI GetAdaptersInfo(PIP_ADAPTER_INFO,PULONG);
DWORD WINAPI GetBestInterface(IPAddr,PDWORD);
//DWORD WINAPI GetBestRoute(DWORD,DWORD,PMIB_IPFORWARDROW);
DWORD WINAPI GetFriendlyIfIndex(DWORD);
DWORD WINAPI GetIcmpStatistics(PMIB_ICMP);
DWORD WINAPI GetIfEntry(PMIB_IFROW);
//DWORD WINAPI GetIfTable(PMIB_IFTABLE,PULONG,BOOL);
DWORD WINAPI GetInterfaceInfo(PIP_INTERFACE_INFO,PULONG);
//DWORD WINAPI GetIpAddrTable(PMIB_IPADDRTABLE,PULONG,BOOL);
//DWORD WINAPI GetIpForwardTable(PMIB_IPFORWARDTABLE,PULONG,BOOL);
//DWORD WINAPI GetIpNetTable(PMIB_IPNETTABLE,PULONG,BOOL);
DWORD WINAPI GetIpStatistics(PMIB_IPSTATS);
DWORD WINAPI GetNetworkParams(PFIXED_INFO,PULONG);
DWORD WINAPI GetNumberOfInterfaces(PDWORD);
DWORD WINAPI GetPerAdapterInfo(ULONG,PIP_PER_ADAPTER_INFO, PULONG);
BOOL WINAPI GetRTTAndHopCount(IPAddr,PULONG,ULONG,PULONG);
DWORD WINAPI GetTcpStatistics(PMIB_TCPSTATS);
//DWORD WINAPI GetTcpTable(PMIB_TCPTABLE,PDWORD,BOOL);
DWORD WINAPI GetUniDirectionalAdapterInfo(PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS,PULONG);
DWORD WINAPI GetUdpStatistics(PMIB_UDPSTATS);
//DWORD WINAPI GetUdpTable(PMIB_UDPTABLE,PDWORD,BOOL);
DWORD WINAPI IpReleaseAddress(PIP_ADAPTER_INDEX_MAP);
DWORD WINAPI IpRenewAddress(PIP_ADAPTER_INDEX_MAP);
DWORD WINAPI NotifyAddrChange(PHANDLE,LPOVERLAPPED);
DWORD WINAPI NotifyRouteChange(PHANDLE,LPOVERLAPPED);
DWORD WINAPI SendARP(IPAddr,IPAddr,PULONG,PULONG);
DWORD WINAPI SetIfEntry(PMIB_IFROW);
DWORD WINAPI SetIpForwardEntry(PMIB_IPFORWARDROW);
DWORD WINAPI SetIpNetEntry(PMIB_IPNETROW);
DWORD WINAPI SetIpStatistics(PMIB_IPSTATS);
DWORD WINAPI SetIpTTL(UINT);
DWORD WINAPI SetTcpEntry(PMIB_TCPROW);
DWORD WINAPI UnenableRouter(OVERLAPPED*, LPDWORD);
#ifdef __cplusplus
}
#endif
#endif /* _IPHLPAPI_H */


et si t'as pas le reste, je te l'enverrais.
vendredi 9 mai 2003 à 14:33:12 | Re : Adresse MAC

none77

Ouai bah la je croi ke je suis complètemen a coté en utilisant visual studio
car il ne veut pas des #include qui se trouve dans le iphlpapi.h ke tu ma filé, et en plus il ne reconnais po les types du genre IPAddr (mais ca je pense ke ca vien des .h kil ne veux po inclure donc je vais me mettre à les chercher ceux la aussi ...)


grrrrrrr......
None.


-------------------------------
Réponse au message :
-------------------------------

> en fait, je l'ai dvp sous dev-cpp 4.9.8 et j'ai juste mis en commentaires les fonctions qui ressortaient en erreur :
>
> #ifndef _IPHLPAPI_H
> #define _IPHLPAPI_H
> #if __GNUC__ >=3
> #pragma GCC system_header
> #endif
>
> //#include <iprtrmib.h>
> #include <ipexport.h>
> #include <iptypes.h>
> #ifdef __cplusplus
> extern "C" {
> #endif
> DWORD WINAPI AddIPAddress(IPAddr,IPMask,DWORD,PULONG,PULONG);
> DWORD WINAPI CreateIpForwardEntry(PMIB_IPFORWARDROW);
> DWORD WINAPI CreateIpNetEntry(PMIB_IPNETROW);
> DWORD WINAPI CreateProxyArpEntry(DWORD,DWORD,DWORD);
> DWORD WINAPI DeleteIPAddress(ULONG);
> DWORD WINAPI DeleteIpForwardEntry(PMIB_IPFORWARDROW);
> DWORD WINAPI DeleteIpNetEntry(PMIB_IPNETROW);
> DWORD WINAPI DeleteProxyArpEntry(DWORD,DWORD,DWORD);
> DWORD WINAPI EnableRouter(HANDLE*,OVERLAPPED*);
> DWORD WINAPI FlushIpNetTable(DWORD);
> DWORD WINAPI GetAdapterIndex(LPWSTR,PULONG);
> DWORD WINAPI GetAdaptersInfo(PIP_ADAPTER_INFO,PULONG);
> DWORD WINAPI GetBestInterface(IPAddr,PDWORD);
> //DWORD WINAPI GetBestRoute(DWORD,DWORD,PMIB_IPFORWARDROW);
> DWORD WINAPI GetFriendlyIfIndex(DWORD);
> DWORD WINAPI GetIcmpStatistics(PMIB_ICMP);
> DWORD WINAPI GetIfEntry(PMIB_IFROW);
> //DWORD WINAPI GetIfTable(PMIB_IFTABLE,PULONG,BOOL);
> DWORD WINAPI GetInterfaceInfo(PIP_INTERFACE_INFO,PULONG);
> //DWORD WINAPI GetIpAddrTable(PMIB_IPADDRTABLE,PULONG,BOOL);
> //DWORD WINAPI GetIpForwardTable(PMIB_IPFORWARDTABLE,PULONG,BOOL);
> //DWORD WINAPI GetIpNetTable(PMIB_IPNETTABLE,PULONG,BOOL);
> DWORD WINAPI GetIpStatistics(PMIB_IPSTATS);
> DWORD WINAPI GetNetworkParams(PFIXED_INFO,PULONG);
> DWORD WINAPI GetNumberOfInterfaces(PDWORD);
> DWORD WINAPI GetPerAdapterInfo(ULONG,PIP_PER_ADAPTER_INFO, PULONG);
> BOOL WINAPI GetRTTAndHopCount(IPAddr,PULONG,ULONG,PULONG);
> DWORD WINAPI GetTcpStatistics(PMIB_TCPSTATS);
> //DWORD WINAPI GetTcpTable(PMIB_TCPTABLE,PDWORD,BOOL);
> DWORD WINAPI GetUniDirectionalAdapterInfo(PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS,PULONG);
> DWORD WINAPI GetUdpStatistics(PMIB_UDPSTATS);
> //DWORD WINAPI GetUdpTable(PMIB_UDPTABLE,PDWORD,BOOL);
> DWORD WINAPI IpReleaseAddress(PIP_ADAPTER_INDEX_MAP);
> DWORD WINAPI IpRenewAddress(PIP_ADAPTER_INDEX_MAP);
> DWORD WINAPI NotifyAddrChange(PHANDLE,LPOVERLAPPED);
> DWORD WINAPI NotifyRouteChange(PHANDLE,LPOVERLAPPED);
> DWORD WINAPI SendARP(IPAddr,IPAddr,PULONG,PULONG);
> DWORD WINAPI SetIfEntry(PMIB_IFROW);
> DWORD WINAPI SetIpForwardEntry(PMIB_IPFORWARDROW);
> DWORD WINAPI SetIpNetEntry(PMIB_IPNETROW);
> DWORD WINAPI SetIpStatistics(PMIB_IPSTATS);
> DWORD WINAPI SetIpTTL(UINT);
> DWORD WINAPI SetTcpEntry(PMIB_TCPROW);
> DWORD WINAPI UnenableRouter(OVERLAPPED*, LPDWORD);
> #ifdef __cplusplus
> }
> #endif
> #endif /* _IPHLPAPI_H */

>
> et si t'as pas le reste, je te l'enverrais.
vendredi 9 mai 2003 à 14:51:21 | Re : Adresse MAC

roswell117

allez, un dernier essai !!!

remplace le #include <Iphlpapi.h> par :

typedef unsigned long IPAddr;
typedef unsigned long FAR *LPULONG;
DWORD WINAPI SendARP(IPAddr,IPAddr,PULONG,PULONG);


et ca devrait finalement marcher (enfin essaye quand même )
vendredi 9 mai 2003 à 15:08:15 | Re : Adresse MAC

none77

Je pense ke l'on approche du but mais c'est po encore ca :o(

Parce que je n'ai pas le fichier "iphlpapi.lib"
donc kan je fais #pragma comment(lib,"iphlpapi.lib") ca me di ke ca ne connais po le fichier et si je mets cette ligne en commentaire et bien après il connai plus SendARP !

GRRRRRR........

désolé,
None.


-------------------------------
Réponse au message :
-------------------------------

> allez, un dernier essai !!!
>
> remplace le #include <Iphlpapi.h> par :
>
> typedef unsigned long IPAddr;
> typedef unsigned long FAR *LPULONG;
> DWORD WINAPI SendARP(IPAddr,IPAddr,PULONG,PULONG);

>
> et ca devrait finalement marcher (enfin essaye quand même )
vendredi 9 mai 2003 à 15:49:12 | Re : Adresse MAC

none77

Tu pourrai pas m'envoyé le fichier par mail STP?

Merci beaucoup, et désolé pour le dérangement,
None.


-------------------------------
Réponse au message :
-------------------------------

> Je pense ke l'on approche du but mais c'est po encore ca :o(
>
> Parce que je n'ai pas le fichier "iphlpapi.lib"
> donc kan je fais #pragma comment(lib,"iphlpapi.lib") ca me di ke ca ne connais po le fichier et si je mets cette ligne en commentaire et bien après il connai plus SendARP !
>
> GRRRRRR........
>
> désolé,
> None.
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > allez, un dernier essai !!!
> >
> > remplace le #include <Iphlpapi.h> par :
> >
> > typedef unsigned long IPAddr;
> > typedef unsigned long FAR *LPULONG;
> > DWORD WINAPI SendARP(IPAddr,IPAddr,PULONG,PULONG);

> >
> > et ca devrait finalement marcher (enfin essaye quand même )
>

1 2

Cette discussion est classée dans : mac, adresse


Répondre à ce message

Sujets en rapport avec ce message

Recuperation adresse MAC des machines d un reseau [ par sicakmustafa ] Je voudrais récupérer les adresses MAC se trouvant dans le meme réseau (LAN), mais je n'ai pas trouver d'appels systèmes qui fait cela.Pouvez-vous m'a Obtenir adress mac local + ca marche à moitié.... [ par emmanuel9 ] Bonjour, J'aurais souhaité récupéré l'adresse mac de ma machine, j'ai essayé le code suivant (c++ managé)String*  machineMacAddress = "";ManagementCla Obtenir l'adresse MAC d'une IP [ par metos ] Bonjour à tous,     J'ai une adresse IP, et je souhaiterais obtenir l'adresse MAC. Comment peut-on le faire en C?Merci d'avancemetos Trouver l'adresse mac d'une connection à partir du serveur [ par wizard512 ] Bonjour,   Je souhaiterais savoir si quelqu'un s'aurais comment  récupéré l'adresse mac d'un programme client se connectant sur  un p Obtenir une mac adresse en c++ [ par Xantra ] Bonjour,Je cherche un code permettant de récupérer la mac adresse de la carte réseau numéro 1 d'un pc. Après une journée de recherche je commence a cr Adresse MAC [ par Jeff_Trek ] Comment récupère-t-on l'adresse matérielle d'une carte réseau (Adresse MAC) et comment la passe-t-on en paramètre dans une socket ?Jeff. Toujours besoin d'aide sur socket avec 2 cartes reseau [ par Jeff_Trek ] Bonjour,Je reçois des trames grace à ma socket cliente (qui doit être liée à une carte reseau), et renvoyer ces trames via une socket serveur (qui doi Activer Internet explorer avec adresse spécifique [ par annielaf ] Bonjour à tous J'ai un petit problème avec mon vpn. Pour le régler, j'ai pensé à un petit programme (visual c++ 6.0), mais je ne connais pas beauco recuperer l'adresse ip derriere un routeur [ par ebooserge ] salut a tous,juste une petite question sur la prog reseau. j'aimerais savoir s'il existe une fonction qui permet de recuperer l'adresse IP publique du Adresse d'une fonction CallBack dans une classe [ par Capa6T ] Bonjour, J'ai un petit souçis pour récupèrer l'adresse d'une fonction CallBack dans une classe. MaClasse.h : ------------ class MaClasse { protected


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,811 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales