Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Mario Núñez en 28 Diciembre 2015, 19:40 pm



Título: [Vb.Net] Obtener información de dirección MAC
Publicado por: Mario Núñez en 28 Diciembre 2015, 19:40 pm
se puede obtener en VB.net la IP asociada a una MAC dentro del equipo??

Gracias por adelantado :)


Título: Re: duda con VB.net
Publicado por: Eleкtro en 29 Diciembre 2015, 09:05 am
Puedes hacerlo con WMI

  • Win32_NetworkAdapterConfiguration class - MSDN (https://msdn.microsoft.com/en-us/library/windows/desktop/aa394217%28v=vs.85%29.aspx)

Código
  1.    Public Shared ReadOnly Iterator Property MacAddresses() As IEnumerable(Of KeyValuePair(Of String, String))
  2.        Get
  3.            For Each mo As ManagementObject In New ManagementClass("Win32_NetworkAdapterConfiguration").GetInstances
  4.  
  5.                If CBool(mo("IPEnabled")) Then
  6.                    Dim mac As String = DirectCast(mo("MACAddress"), String)
  7.                    Dim ipv4 As String = DirectCast(mo("IPAddress"), String())(0)
  8.  
  9.                    Yield New KeyValuePair(Of String, String)(mac, ipv4)
  10.                End If
  11.  
  12.            Next mo
  13.        End Get
  14.    End Property

Código:
obj.Key   = dirección MAC
obj.Value = dirección IPv4

También puedes hacerlo con la class System.Net.NetworkInformation.NetworkInterface, encontrarás muchos ejemplos en Google, pero a mi modo de ver requiere bastante más esfuerzo para realizar al detalle las condicionales con las que filtrar las interfaces indeseadas/falsos positivos que puedas tener instalados en el equipo.

La desventaja de utilizar WMI es que las peticiones tardan un tiempo desproporcionado (relativamente hablando en milisegundos).

Nota: Los títulos de los mensajes deben ser descriptivos, "duda con Vb.Net" no describe el problema.

Saludos!


Título: Re: [Vb.Net] Obtener información de dirección MAC
Publicado por: Mario Núñez en 3 Enero 2016, 00:49 am
muchísimas gracias Electro; y tienes razón lo probé con "System.Net.NetworkInformation.NetworkInterface" y el código se alargaba demasiado, ademas es para un programa que funcionara en servidores así que creo que ir capturando cada tarjeta de red una por una puede ser un coñazo XD,  lo probare con WMI, muchas gracias.

Saludos :)