Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: kub0x en 16 Abril 2012, 14:19 pm



Título: [Ejemplo] Utilizando Namespace NetworkInformation
Publicado por: kub0x en 16 Abril 2012, 14:19 pm
Buenas tardes a todos,

bueno hoy tuve un rato mañanero libre y me puse a investigar por cuenta propia las clases del Namespace Networkinformation. Básicamente me recuerda al mítico comando ipconfig, que si te esmeras programando es como teclear ipconfig /all para listar todas las propiedades de los adaptadores de red.

Bueno lo que hace este sencillo ejemplo es listar todas las interfaces de Red, despues se pide ingresar un número que concuerde con una de las interfaces del menu y acto seguido se recogen las propiedades en un método y se muestran. Cabe decir que si no estás conectado a la red pues poca información obtendrás de la interfaz. Os dejo una screen de como queda.

(http://img100.imageshack.us/img100/22/networkp.jpg)

Source:

Código
  1. Imports System.Net.NetworkInformation
  2. Imports System.Text
  3. Imports System.Net
  4. Module Module1
  5.    Private Sub Enumerar_Interfaces()
  6.        Dim InterfazRed() As NetworkInterface = NetworkInterface.GetAllNetworkInterfaces
  7.        For i As Int32 = 0 To InterfazRed.Length - 1
  8.            If InterfazRed(i).Name.Contains("Loopback") Then
  9.            Else
  10.                Console.WriteLine(i & ")" & InterfazRed(i).Name)
  11.            End If
  12.        Next
  13.        Console.WriteLine()
  14.        Obtener_Propiedades(InterfazRed)
  15.    End Sub
  16.    Private Sub Obtener_Propiedades(ByVal InterfazRed() As NetworkInterface)
  17.        Dim k As Int32 = 0
  18.        Console.WriteLine("Introduce un indice para visualizar las propiedades del adaptador deseado")
  19.        k = Int32.Parse(Console.ReadLine())
  20.        If k >= 0 And k <= 9 Then
  21.            Console.Clear()
  22.            Console.WriteLine("Nombre de la Interfaz: " & InterfazRed(k).Name)
  23.            Console.WriteLine("{0} " & InterfazRed(k).Speed / 1000000 & " {1}", "Velocidad Adaptador:", _
  24.                              "Mbps")
  25.            Console.WriteLine("Descripción: " & InterfazRed(k).Description)
  26.            Console.WriteLine("GUID: " & InterfazRed(k).Id)
  27.            Dim operativo As OperationalStatus = InterfazRed(k).OperationalStatus
  28.            Select Case operativo
  29.                Case 1
  30.                    Console.WriteLine("Estado: Conectado")
  31.                    Dim PropiedadesIp As IPInterfaceProperties = InterfazRed(k).GetIPProperties
  32.                    With PropiedadesIp
  33.                        For Each unicast As UnicastIPAddressInformation In .UnicastAddresses
  34.                            If unicast.Address.AddressFamily = Sockets.AddressFamily.InterNetwork Then
  35.                                Console.WriteLine("Dirección IPv4: " & unicast.Address.ToString)
  36.                                Console.WriteLine("Máscara de Subred: " & unicast.IPv4Mask.ToString)
  37.                            Else
  38.                                Console.WriteLine("Direccion IPv6: " & unicast.Address.ToString)
  39.                            End If
  40.                        Next
  41.                        Console.Write("Servidor DHCP: ")
  42.                        For Each dhcp As IPAddress In .DhcpServerAddresses
  43.                            Console.WriteLine(dhcp)
  44.                        Next
  45.                        Console.WriteLine("Servidores DNS:")
  46.                        For Each servidor As IPAddress In .DnsAddresses
  47.                            Console.WriteLine(servidor)
  48.                        Next
  49.                        Console.Write("Puerta de Enlace: ")
  50.                        For Each gateway As GatewayIPAddressInformation In .GatewayAddresses
  51.                            Console.WriteLine(gateway.Address)
  52.                        Next
  53.                        Console.Write("Direccion Multicast: ")
  54.                        For Each multicast As MulticastIPAddressInformation In .MulticastAddresses
  55.                            Console.WriteLine(multicast.Address)
  56.                        Next
  57.                    End With
  58.                Case 2
  59.                    Console.WriteLine("Estado: Desconectado")
  60.            End Select
  61.            Dim MACByte As Byte() = InterfazRed(k).GetPhysicalAddress.GetAddressBytes
  62.            Dim MAC As String = Nothing
  63.            For Each byteMac As Byte In MACByte
  64.                MAC += Hex((byteMac)) & ":"
  65.            Next
  66.            Console.WriteLine("MAC: " & MAC.Remove(MAC.Length - 1, 1) & vbNewLine)
  67.        Else
  68.            Console.Clear()
  69.            Main()
  70.        End If
  71.    End Sub
  72.    Sub Main()
  73.        Try
  74.            Enumerar_Interfaces()
  75.        Catch ex As Exception
  76.        End Try
  77.        Console.Read()
  78.    End Sub
  79. End Module
  80.  

Saludos.