Adresse MAC

none77 Messages postés 31 Date d'inscription mardi 7 janvier 2003 Statut Membre Dernière intervention 16 juillet 2004 - 7 mai 2003 à 16:15
squezzyb Messages postés 10 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 19 mai 2005 - 2 juin 2004 à 13:00
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.

12 réponses

roswell117 Messages postés 61 Date d'inscription jeudi 31 janvier 2002 Statut Membre Dernière intervention 18 novembre 2005
9 mai 2003 à 09:00
Trouvé dans la MSDN, j'espères que ca fera ton bonheur :

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcetcpip/htm/_wcesdk_win32_sendarp.asp

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.
0
none77 Messages postés 31 Date d'inscription mardi 7 janvier 2003 Statut Membre Dernière intervention 16 juillet 2004
9 mai 2003 à 09:45
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.
0
roswell117 Messages postés 61 Date d'inscription jeudi 31 janvier 2002 Statut Membre Dernière intervention 18 novembre 2005
9 mai 2003 à 13:35
Un exemple trouvé dans la MSDN de la fonction SendARP (j'en trouve beaucoup en ce moment) testé sous W2k et qui marche :

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iphlp/iphlp/sendarp.asp

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

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

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 !!!
0
none77 Messages postés 31 Date d'inscription mardi 7 janvier 2003 Statut Membre Dernière intervention 16 juillet 2004
9 mai 2003 à 14:08
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
roswell117 Messages postés 61 Date d'inscription jeudi 31 janvier 2002 Statut Membre Dernière intervention 18 novembre 2005
9 mai 2003 à 14:12
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
#include
#include
#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.
0
none77 Messages postés 31 Date d'inscription mardi 7 janvier 2003 Statut Membre Dernière intervention 16 juillet 2004
9 mai 2003 à 14:33
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.
0
roswell117 Messages postés 61 Date d'inscription jeudi 31 janvier 2002 Statut Membre Dernière intervention 18 novembre 2005
9 mai 2003 à 14:51
allez, un dernier essai !!!

remplace le #include 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 ;) )
0
none77 Messages postés 31 Date d'inscription mardi 7 janvier 2003 Statut Membre Dernière intervention 16 juillet 2004
9 mai 2003 à 15:08
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.
0
none77 Messages postés 31 Date d'inscription mardi 7 janvier 2003 Statut Membre Dernière intervention 16 juillet 2004
9 mai 2003 à 15:49
Tu pourrai pas m'envoyé le fichier par mail STP?

Merci beaucoup, et désolé pour le dérangement,
None.
0
kornfr Messages postés 25 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 6 mars 2014
22 mai 2003 à 11:19
il faut pense a ajouter le fichier iphlpapi.lib dans les link de ton projet Visual C++ !

iphlpapi.lib est dipo avec le SDK de M$.
kornfr
0
sicakmustafa Messages postés 7 Date d'inscription jeudi 1 janvier 2004 Statut Membre Dernière intervention 8 mars 2005
5 avril 2004 à 21:34
salut korfr

g le meme probleme pour recuperer l adresse mac d un IP
si tu a recu les fichier pour faire ca peut tu me l envoyer please

g essayer en copiant le source et en compilant no prob mais en link il ne reconnait po la fonction sendarp

merci bcp

8-)
0
squezzyb Messages postés 10 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 19 mai 2005
2 juin 2004 à 13:00
Bonjour a vous:)

Ca m'interesse bp aussi ce projet de recup l'adresse mac a partir de l'ip, est-ce qu'il serait possible de m'envoyer les sources??
Mon mail, c'est squezzyb chez hotmail:)

Par avance, merci beaucoup, et j'espere avoir vite de vos nouvelles:)

Céd
0
Rejoignez-nous