GetMac
 

Fecha: 09/Sep/2004 (04/09/2004)
Autor: Erick Aragón hackjavasun@yahoo.com.mx

.

Introducción.

En este articulo mostraré como obtener la dirección MAC (Control de Acceso al Medio).

Algo sobre dirección MAC:

Dirección de capa de enlace de datos estandarizada, necesaria para cada puerto o dispositivo que se conecta a una LAN. Otros dispositivos de la red usan estas direcciones para ubicar puertos específicos en la red y para crear y actualizar las tablas de enrutamiento y las estructuras de los datos. Las direcciones MAC tienen una longitud de 6 bytes y son controladas por el IEEE. También denominada dirección de hardware, dirección de capa MAC o dirección física.

En la mayoría de las NIC, la dirección MAC está grabada de forma indeleble en la ROM. Cuando se inicializa la NIC, esta dirección se copia en la RAM.

Las direcciones MAC son únicas, esto es no hay dos NIC (Tarjeta de Red) que tengan la misma dirección MAC.

Ahora ¿Para que me sirve a mi sacar la dirección MAC de la NIC?

La podemos usar para evitar que nuestros programas sean pirateados y no habla de que nos roben el código, sino que el programa sea ejecutado en otras PC.

Entonces para evitar esto lo que podríamos hacer es Comparar la Dirección MAC de la PC donde se ejecuta el Programa con una(s) serie(s) de Direccion(es) MAC a la(s) cual(es) se tiene permitido el acceso al sistema. 

Por ejemplo si hacemos en Sistema para la Empresa A y a la ves dicho sistema le serviría a la Empresa Patito, lo que haríamos para que Patito no ejecute nuestro sistema en sus PC le asignamos a nuestro sistema la serie de MAC en las que tiene permitido ser ejecutado, dichas MAC serian de las NIC de las PCs de la Empresa A y hecho esto si Patito quiere correr nuestro sistema tendría por lo menos que secuestrar la NIC de la PC de la empresa A o bien que nos compre el Sistema :D.

En VB.NET el proceso de obtener la dirección MAC es muy fácil de comprender y nada complejo.

Para esto usaremos el componente Process el cual es una herramienta útil para iniciar, detener, controlar y supervisar aplicaciones. Aquí lo usaremos para iniciar un proceso.

El proceso que iniciaremos será GetMac.exe el cual devuelve la dirección de control de acceso a medios (MAC, media access control) y una lista de los protocolos de red asociados con cada la dirección de todas las tarjetas de red de cada equipo, ya sea localmente o a través de una red. Nota.- Aquí solo sacaremos la dirección MAC.

A continuación muestro el código.

Función GetMac, en esta pequeña función iniciaremos el proceso GetMac.exe y redirigiremos la salida a una variable de nuestro Programa.

Public Function GetMAC() As String

        Dim str As String

        Dim p As New Process

        'StartInfo representa el conjunto de parámetros que se van a

        utilizar para iniciar un proceso.

        p.StartInfo.UseShellExecute = False

        p.StartInfo.RedirectStandardOutput = True

        p.StartInfo.FileName = "GetMac.exe"

        p.StartInfo.Arguments = "/fo list"

        p.Start()

        'StandardOutput Obtiene una secuencia que se utiliza

        para leer la salida de la aplicación.

        str = p.StandardOutput.ReadLine

        str = p.StandardOutput.ReadLine

        p.WaitForExit()

        Return str.Substring(23)

End Function

Ahora veremos como seria el código para comparar la MAC de la NIC donde se ejecuta el programa con la MAC que debería tener la NIC para acceder. 

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        If (GetMAC().Equals("A5-37-95-45-C1-3E")) Then

        MsgBox("Acceso permitido a la Aplicación")

        Else

        MsgBox("Acceso denegado a la Aplicación")

                       Me.Close()

        End If

End Sub

Bueno esto es todo por hoy.

Nota.- Este programa solo se probo en SO Windows XP, no se si en otros SO de Microsoft exista el comando GetMac.


ir al índice

Fichero con el código de ejemplo: ErickAragon_GetMac - Tamaño 8KB