Ir al contenido principal

Obtener información de la configuración de la red desde Java.


En estos momentos estoy desarrollando un sistema de control para un consultorio de un Otorrinolaringólogo (creo que así se escribe) y llegó a mi la preocupación sobre el cómo proteger mi aplicación para que no la distribuyan de forma gratuita una vez que la instale (o sea pues que no la 'piratien') y pensé en ligar la licencia de uso directamente con la MAC Address de la tarjeta de red del equipo(s) que utilizará la aplicación, después se podría encriptar (para que no se vea el dato tal cual) para colocarlo en el archivo de la licencia y compararlo con la información de la pc obtenida directamente con una clase dentro de la aplicación. No es la única forma de protegerla, y puede ser que tampoco la más recomendable pero al fin y al cabo es una forma de hacerlo.

Debido a lo anterior me dí a la tarea de localizar o desarrollar un código que fuera capaz de obtener la información de la configuración de red actual para obtener los datos que necesito, lo comparto con ustedes.

 

Código:

import java.net.InterfaceAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;

public class NetworkParameterDemo {
  public static void main(String[] args) throws Exception {
    Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces();
    while (en.hasMoreElements()) {
      NetworkInterface ni = en.nextElement();
      printParameter(ni);

    }
  }

  public static void printParameter(NetworkInterface ni) throws SocketException {
    System.out.println(" Nombre = " + ni.getName());
    System.out.println(" Nombre a mostrar= " + ni.getDisplayName());
    System.out.println(" Está activa = " + ni.isUp());
    System.out.println(" Soporte para multicast = " + ni.supportsMulticast());
    System.out.println(" Es loopback = " + ni.isLoopback());
    System.out.println(" Es virtual = " + ni.isVirtual());
    System.out.println(" Es punto a punto = " + ni.isPointToPoint());
    System.out.println(" Dirección MAC = " + ni.getHardwareAddress());    
    System.out.println(" MTU = " + ni.getMTU());

    System.out.println("\nLista de direcciones de interfaz:");
    List<InterfaceAddress> list = ni.getInterfaceAddresses();
    Iterator<InterfaceAddress> it = list.iterator();

    while (it.hasNext()) {
      InterfaceAddress ia = it.next();
      System.out.println(" Dirección = " + ia.getAddress());
      System.out.println(" Broadcast = " + ia.getBroadcast());
      System.out.println(" Longitud de prefijo de red = " + ia.getNetworkPrefixLength());
      System.out.println("");
    }
  }
}

El resultado es el siguiente (para cada interfaz de red):

 Nombre = eth2
 Nombre a mostrar= Intel(R) 82562V-2 10/100 Network Connection - Minipuerto del administrador de paquetes
 Está activa = true
 Soporte para multicast = true
 Es loopback = false
 Es virtual = false
 Es punto a punto = false
 Dirección MAC = XXXXXXXXX
 MTU = 1500

 Lista de direcciones de interfaz:
 Dirección = /XXX.XXX.XXX.XXX
 Broadcast = /XXX.XXX.XXX.XXX
 Longitud de prefijo de red = 24

En el ejemplo anterior podemos ver cómo es que se obtiene cada uno de los datos de la red, es importante mencionar que sólo funcionará si tienes instalada la versión 6 de Java (que puedes obtener desde aquí), además, la dirección MAC se obtiene en un arreglo de bytes (byte[]). 

Alguna duda o algo qué decir? Deja tu comentario. Saludox.

Fuente | java2s.com 

Comentarios

  1. genial, sabes como se puede hacer para obtener el nombre que tiene la placa de red en windos? por ejemplo, en lugar de que muestre eth2 muestre coneccion de area local 2, ya que sobre eso necesito ejecutar una serie de comando bash

    gracias saludos!

    ResponderBorrar
  2. Uno hace lo que puede...

    ResponderBorrar

Publicar un comentario

Este es un espacio abierto, puedes escribir lo que gustes respetando los siguientes puntos:

1.- Lo que escribas esté relacionado con el post, si gustas contactarme puedes hacerlo aqui.

2.- Todo es cuestionable, aunque ten en cuenta que existen formas de hacerlo, evita las agresiones y revisa tu lenguaje antes de publicar un comentario.

3.- Siempre hay tres verdades: tu verdad, mi verdad y la verdad, por lo que opiniones diferentes no necesariamente son equivocadas.

4.- Los comentarios son una forma de discusión abierta, por lo que al publicar uno, implícitamente entras a una discusión, con todo lo que esto representa.

5. Me reservo el derecho de eliminar comentarios que no respeten las condiciones mencionadas anteriormente.

Toma en cuenta que puedes utilizar emoticones en tu comentario, para ver una lista de los disponibles da clic en este enlace.

Entradas más populares de este blog

3 sencillos pasos para tramitar la ayuda por desempleo de la AFORE

¿Tienes dinero ahorrado en tu AFORE y en este momento no estás trabajando o estás trabajando pero no tienes seguro social? Si respondiste sí a la pregunta anterior entonces hay una buena noticia para ti: puedes retirar una parte del dinero que tienes ahorrado. Y lo mejor, es muy sencillo. En este artículo te diré paso a paso qué hacer para obtener ese dinero, sin tecnicismos legales ni nada por el estilo, simple y sencillamente lo que necesitas saber. Paso Número 1: Obtener los últimos 2 estados de cuenta de tu Afore Esto en la mayoría de los casos es sumamente sencillo ya que dichos estados de cuenta llegan directamente al domicilio del ahorrador, si este es tu caso puedes saltar lo restante en este punto y continuar con el paso número 2, en caso contrario sigue leyendo… Si no tienes tus estados de cuenta debes ponerte en contacto con la empresa encargada de administrar tu ahorro para que te los proporcione, normalmente te van a pedir una identificación oficial, comprobante de

Conectar una base de datos en MySQL con NetBeans

NetBeans es una plataforma para el desarrollo de aplicaciones de escritorio usando Java y a un Entorno integrado de desarrollo (IDE) desarrollado usando la Plataforma NetBeans. Si eres un programador y desarrollas tus aplicaciones en Java seguramente necesitarás conectar una base de datos tipo MySQL a este entorno algún día, bueno, si lo necesitas ahora, he aquí una explicación paso a paso de cómo conectar ambas herramientas.

4 extraordinarias aplicaciones espía para Android

Le andas haciendo al James Bond y necesitas grabar video, voz o tomar fotos desde tu dispositivo Android sin ser notado? Aquí 4 excelentes aplicaciones que facilitarán tus hazañas de 007 en menos de lo que canta un gallo.

c606 c6nf5g4r6 e3 tec3ad6 [Como configurar el teclado]

¿Problemas al escribir con el teclado? ¿Tratas de escribir la letra ‘o’ y sale el número ‘6’ o algo por el estilo? La solución puede ser más simple de lo que parece. La solución a tu problema tras el salto...

Conexión, consulta y ejecución de sentencias en MySQL con Java

Anteriormente escribí este mismo artículo pero para bases de datos en Oracle . En este artículo prácticamente me copio y pego para explicar paso a paso cómo realizar la conexión a MySQL en Java, así como la forma de realizar consultas a los registros existentes y ejecutar sentencias de inserción, borrado y actualización de datos. Al final del artículo tendremos una clase que encapsulará todos los procedimientos necesarios para trabajar con la base de datos.