Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: Meta en 7 Enero 2017, 19:12 pm



Título: Obtener información de un PC
Publicado por: Meta en 7 Enero 2017, 19:12 pm
(https://i.ytimg.com/vi/AuUWhIwTkf8/maxresdefault.jpg)
Imagen corregida respecto a las reglas del foro
Hola:

Como curiosidad, quiero saber si con C# se puede programar un pequeño programón que recoja información de un PC, quiero hacer una prueba con otro PC que tengo.

Por ejemplo, saber la MAC de la tarjeta de red de una placa de un PC, como es único, me parece una información importante. Luego se guarda la información en un archivo txt bien legible, ya se hará técnicas de cifrado.

Si quieres información de alguien, ese alguien ejecuta tu aplicación y recopila información.

Para que tengan una idea, a parte de recoger la MAC, quiero saber que unidades de disco duro tiene instalado en su PC, como se llama su etiqueta, capacidad de disco duro, y el árbol de todos los archivos que tiene, en el txt se guarda nombre de las carpetas, subcarpetas y archivos con extensión completas. También que marca y cantidad de RAM que tiene instalada.

Tengo la idea de hacer una apliación que se guarda en inicio o servivio, que analiza todo del PC. Ya en la casa  cuando le visite, recuperaré ese archivo en un Pendrive cifrado por si acaso.

Si veo que se baja películas X y fotos peor que X.  ;D ;D ;D ;D ;D ;D ;D, el programa dentro de tres meses borra dichas fotos y vídeos. ;) Muchas veces inserta por USB un disco duro extraible, quiero hacer un programa que tamién te analice algo y que al conectar una unidad, borre todo, nada más al detectarlo al tercer mes de usar el programa.

Si quieren información de un PC con sus contenidos. ¿Qué buscaría ustedes?

Saludos.

PD: Lo del lenguaje puede ser el más que te guste.


Título: Re: Obtener información de un PC
Publicado por: engel lex en 8 Enero 2017, 05:55 am
esto no es hacking... esto es programación, lo que propones es normal y lo hacen muchos programas para armar un identificador unico del pc...

con las apis de windows obtienes todo eso, busca en google

Citar
Si veo que se baja películas X y fotos peor que X.  ;D ;D ;D ;D ;D ;D ;D, el programa dentro de tres meses borra dichas fotos y vídeos. ;) Muchas veces inserta por USB un disco duro extraible, quiero hacer un programa que tamién te analice algo y que al conectar una unidad, borre todo, nada más al detectarlo al tercer mes de usar el programa.


eso te tocaría analizar el disco constantemente en busca de nombres en una lista... y prepara tus regex para que no falle en la busqueda...

Tema movido a programación general


Título: Re: Obtener información de un PC
Publicado por: Eleкtro en 15 Enero 2017, 09:58 am
Como curiosidad, quiero saber si con C# se puede programar un pequeño programón que recoja información de un PC, quiero hacer una prueba con otro PC que tengo.

Has mencionado una mezcla de recopilación programática de información del sistema, seguido de tareas de supervisión o monitorización. pero si, te puedo confirmar que todo lo que has mencionado lo puedes llevar a cabo en los lenguajes C#/VB.NET/VC++, tanto recurriendo como sin recurrir directamente al uso de código no administrado mediante las APIS de Windows.

Si quieren información de un PC con sus contenidos. ¿Qué buscaría ustedes?

Si la idea que te has propuesto es buscar pero no sabes el que buscar, ¡entonces mal empezamos!. Creo que te sería de gran utilidad analizar y comparar herramientas profesionales como la suite de programas gratuitos de análisis de sistemas de la compañia NirSoft, y sobre todo una aplicación de pago llamada System Information Viewer (también conocida como SIW).

PD: Lo del lenguaje puede ser el más que te guste.

No entiendo ese comentario, se supone que es tu idea, tu proyecto, y el lenguaje que tu hayas decidido usar.

Bueno, ¡un saludo!.


Título: Re: Obtener información de un PC
Publicado por: Meta en 20 Enero 2017, 17:02 pm
Buenos días:

Tengo claro lo que quiero. Saber la MAC de su tarjeta de red,saber que idioma usa el Windows, unidad de disco duro y particiones. Quiero hacerle como si estuviera haciendo un tree en cmd y guardar esos datos en un archivo de texto, eso si, lo pasaréa binario para que no lo lean.

Saber MAC y guardarlo en un archivo. (Lo de encriptarlo o no es otro cantar).
Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. using System.Net.NetworkInformation; // No olvidar.
  8.  
  9. namespace Leer_MAC
  10. {
  11.    class Program
  12.    {
  13.        static void Main(string[] args)
  14.        {
  15.            Console.Title = "En busca del MAC";
  16.  
  17.            string Nombre_HostName = null;
  18.            string Nombre_Dominio = null;
  19.            string MAC = null;
  20.  
  21.            IPGlobalProperties Propiedades_PC = IPGlobalProperties.GetIPGlobalProperties();
  22.            NetworkInterface[] Interfaz_red = NetworkInterface.GetAllNetworkInterfaces();
  23.            Console.WriteLine("Información de interfaz para {0}.{1}     ",
  24.                    Propiedades_PC.HostName, Propiedades_PC.DomainName);
  25.            if ((Interfaz_red == null) || (Interfaz_red.Length < 1))
  26.            {
  27.                Console.WriteLine("  No hay interfaces de red encontrados.");
  28.                return;
  29.            }
  30.  
  31.            Console.WriteLine("  Número de interfaces .................... : {0}", Interfaz_red.Length);
  32.            foreach (NetworkInterface Adaptador in Interfaz_red)
  33.            {
  34.                IPInterfaceProperties Propiedades = Adaptador.GetIPProperties(); //  .GetIPInterfaceProperties();
  35.                Console.WriteLine();
  36.                Console.WriteLine(Adaptador.Description);
  37.                Console.WriteLine(String.Empty.PadLeft(Adaptador.Description.Length, '='));
  38.                Console.WriteLine("  Tipo interfaz ........................... : {0}", Adaptador.NetworkInterfaceType);
  39.                Console.Write("  Dirección física ........................ : ");
  40.                PhysicalAddress Direccion = Adaptador.GetPhysicalAddress();
  41.                byte[] bytes = Direccion.GetAddressBytes();
  42.                // Variable que tendra la dirección visible.
  43.                string direccion_MAC = string.Empty;
  44.                // Recorrer todos los bytes de la dirección.
  45.                for (int i = 0; i < bytes.Length; i++)
  46.                {
  47.                    // Muestra la dirección física en hexadecimal.
  48.                    direccion_MAC += bytes[i].ToString("X2");
  49.                    Console.Write("{0}", bytes[i].ToString("X2"));
  50.                    // Inserte un guión después de cada bocado, a menos que estemos al final de la dirección.
  51.                    if (i != bytes.Length - 1)
  52.                    {
  53.                        // Agregar un separador, por formato.
  54.                        direccion_MAC += "-";
  55.                        Console.Write("-");
  56.                    }
  57.                    MAC = direccion_MAC;
  58.                }
  59.                Console.WriteLine();
  60.            }
  61.  
  62.            // Guarda el nombre del hostname en la variable Nombre_HostName.
  63.            Nombre_HostName = Propiedades_PC.HostName;
  64.  
  65.            // Guarda el nombre del dominio si lo tiene.
  66.            Nombre_Dominio = Propiedades_PC.DomainName;
  67.  
  68.  
  69.            // Guarda la MAC recibida con sus - en la varible MAC.
  70.            //MAC = direccion_MAC;
  71.  
  72.            Console.WriteLine();
  73.            Console.WriteLine(@"Nombre del HostName: {0}", Nombre_HostName);
  74.            Console.WriteLine(@"Nombre del domninio: {0}", Nombre_Dominio);
  75.            Console.WriteLine(@"MAC es: {0}", MAC);
  76.            Console.ReadKey(); // Pulsa cualquier tecla y sale.
  77.        }
  78.    }
  79. }
  80.  

Más simplificado y guardar en un .txt y en un .bin en C#:
Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. using System.Net.NetworkInformation; // No olvidar.
  8. using System.IO;
  9.  
  10. namespace Leer_MAC_2
  11. {
  12.    class Program
  13.    {
  14.        static void Main(string[] args)
  15.        {
  16.            Console.Title = "Leer MAC 2";
  17.            var macAddr =
  18.    (
  19.        from nic in NetworkInterface.GetAllNetworkInterfaces()
  20.        select nic.GetPhysicalAddress().ToString()
  21.    ).ToArray();
  22.  
  23.            // Para escribir datos en un archivo.
  24.            StreamWriter Texto = new StreamWriter("Archivo.txt");
  25.  
  26.            FileStream Archivo = new FileStream("Archivo_bin.txt", FileMode.Append);
  27.            BinaryWriter Binario = new BinaryWriter(Archivo); // Escribe en bibario.
  28.  
  29.            Console.WriteLine("numero de direcciones " + macAddr.Count());
  30.  
  31.            foreach (var address in macAddr)
  32.            {
  33.                Texto.WriteLine(address);
  34.                Binario.Write(address);
  35.                Console.WriteLine(address);
  36.            }
  37.  
  38.            Texto.Close(); // Cerrar archivo.
  39.            Archivo.Close(); // Cierra archivo binario.
  40.            Console.ReadKey(); // Pulse cualquier tecla para salir.
  41.        }
  42.    }
  43. }
  44.  

También saber que dispositivos tiene conectado en red, otros ordenadores, impresoras, todos los datos posibles de las impresotas que tenga en red o por USB marca y modelo.

Seguiré ampliando cosas. ;)