elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 22:30  


Tema destacado: Grupo de Facebook de elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  MAC address
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: MAC address  (Leído 1,532 veces)
<<<-Underwar->>>


Desconectado Desconectado

Mensajes: 300



Ver Perfil
MAC address
« en: 18 Septiembre 2011, 20:49 »

Hola estuve googleando XD y no he conseguido nada así que pregunto aquí, me podrían ayudar, es que ando buscando cual función es capaz de devolverme la MAC address de mi NIC, en C


En línea

<<<--Underwar-->>>
madpitbull_99
Moderador Global
***
Conectado Conectado

Mensajes: 1.898



Ver Perfil WWW
Re: MAC address
« Respuesta #1 en: 18 Septiembre 2011, 20:58 »

Hay varios métodos, los que menciono funcionan en Windows, desconozco si en las demás plataformas también.

1.) Con el comando getmac, se la pasas a la función system() y después parseas el resultado.

2.) Mediante WinAPI. Usando NDIS [Ethernet]. Otro tema similar: Get Mac Address.




En línea



«Si quieres la paz prepárate para la guerra» Flavius Vegetius

[Taller]Instalación/Configuración y Teoría de Servicios en Red
El_Java

Desconectado Desconectado

Mensajes: 132



Ver Perfil WWW
Re: MAC address
« Respuesta #2 en: 18 Septiembre 2011, 23:22 »

En Ubuntu puedes usar "sudo iwconfig" o "sudo ifconfig 'nombre interfaz' | grep HW", pero claro, tienes que sacar de ahi la info que te interese
En línea
<<<-Underwar->>>


Desconectado Desconectado

Mensajes: 300



Ver Perfil
Re: MAC address
« Respuesta #3 en: 20 Septiembre 2011, 06:07 »

es que estoy leyendo y digamos con los sockets puedes crear paquetes y hay funciones para obtener tu dirección IP también, pero lo que andaba buscando era una función para obtener la dirección MAC, si se puede para linux :S,

Sin tener que llamar al system
En línea

<<<--Underwar-->>>
madpitbull_99
Moderador Global
***
Conectado Conectado

Mensajes: 1.898



Ver Perfil WWW
Re: MAC address
« Respuesta #4 en: 20 Septiembre 2011, 14:33 »

No hay ninguna función que devuelva directamente la dirección MAC. Tienes que hacerlo por tu cuenta.

Código
#include <sys/ioctl.h>
#include <net/if.h>
#include <unistd.h>
#include <netinet/in.h>
#include <string.h>
 
int main()
{
   ifreq ifr;
   ifconf ifc;
   char buf[1024];
   int success = 0;
 
   int sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
   if (sock == -1) { /* handle error*/ };
 
   ifc.ifc_len = sizeof(buf);
   ifc.ifc_buf = buf;
   if (ioctl(sock, SIOCGIFCONF, &ifc) == -1) { /* handle error */ }
 
   ifreq* it = ifc.ifc_req;
   const ifreq* const end = it + (ifc.ifc_len / sizeof(ifreq));
 
   for (; it != end; ++it) {
       strcpy(ifr.ifr_name, it->ifr_name);
       if (ioctl(sock, SIOCGIFFLAGS, &ifr) == 0) {
           if (! (ifr.ifr_flags & IFF_LOOPBACK)) { // don't count loopback
               if (ioctl(sock, SIOCGIFHWADDR, &ifr) == 0) {
                   success = 1;
                   break;
               }
           }
       }
       else { /* handle error */ }
   }
 
   unsigned char mac_address[6];
 
   if (success) memcpy(mac_address, ifr.ifr_hwaddr.sa_data, 6);
}

Éste es otro ejemplo:

Código
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <linux/if.h>
#include <netdb.h>
#include <stdio.h>
 
int main()
{
 struct ifreq s;
 int fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP);
 
 strcpy(s.ifr_name, "eth0");
 if (0 == ioctl(fd, SIOCGIFHWADDR, &s)) {
   int i;
   for (i = 0; i < 6; ++i)
     printf(" %02x", (unsigned char) s.ifr_addr.sa_data[i]);
   puts("\n");
   return 0;
 }
 return 1;
}

Los he sacado todos de StackOverflow:

_How to get MAC address of your machine using a C program?
_How to get mac address for an interface in linux using a C Program?
_Detecting MAC Address using C application

En línea



«Si quieres la paz prepárate para la guerra» Flavius Vegetius

[Taller]Instalación/Configuración y Teoría de Servicios en Red
<<<-Underwar->>>


Desconectado Desconectado

Mensajes: 300



Ver Perfil
Re: MAC address
« Respuesta #5 en: 21 Septiembre 2011, 22:42 »

madpitbull_99 aunque no lo hayas hecho tu, encontraste algo que yo había buscado durante días eres de gran ayuda  :D
En línea

<<<--Underwar-->>>
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Mac address
Redes
sederick 2 3,006 Último mensaje 23 Septiembre 2002, 06:53
por sederick
MAC address a IP
Redes
-[ §@NTTI ]- 8 8,216 Último mensaje 12 Octubre 2004, 01:37
por ElPutilla
HFC MAC ADDRESS
Redes
Krilyn 3 3,739 Último mensaje 30 Mayo 2006, 18:02
por yahikochan1
MAC Address
Juegos y Consolas
zysus 1 570 Último mensaje 13 Julio 2008, 21:49
por T0rete
MAC Address
Programación Visual Basic
moises9633 3 827 Último mensaje 16 Agosto 2008, 07:52
por moises9633
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines