elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Mensajes
Páginas: 1 ... 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 [68] 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 ... 261
671  Programación / .NET (C#, VB.NET, ASP) / Re: Hacer cambios de este código. en: 25 Enero 2017, 15:26 pm
Buenas:

Gracias porlainformación.
Cómo: Analizar cadenas mediante String.Split (Guía de programación de C#).

Antes de seguir programando, hay que tener las ideas claras y se me ha cambiado.

Cosas tener en cuenta.

Arduino tiene dos fotos dentro del microcontrolador.
Usa tres pulsadores.
Pulsador 1: Le envía información del contenido sobre Arduino que lee C. Por ejemplo:
Citar
Arduino UNO r3.
Versión: 1.26.
---------------------
Contenido:
Foto 1: 17729 Bytes. (Pulsador 2).
Foto 2: 5000 Bytes. (Pulsador 3).
---------------------

Como puedes ver arriba, Arduino le envía esa información y C# lo lee y muestra en pantalla.

Pulsador 2: Envía la primera foto a C#.
Pulador 3: Envía la otra foro.

Está bien lo de usar delimitadores, en este caso prefiero comandos y respuesta.

1. C# espera algún dato por parte de Arduino.
2. Como la placa de Arduino usa tres botones, pues si pulsa el primero envía información del contenido de Arduino.
3. Si pulsa el segundo o tercer botón, lo primero que hace Arduino es enviar números, por ejemplo, pulso el segundo pulsador y le envía solo esto: 17729.
4. C# lo recibe, en el cual ya modifica el tamaño del array.
5. C# le envía un este dato: OK.
6. Arduino empieza a enviar tramas de bytes de la primera foto.

¿Qué les parece?

Saludos.

PD: Dejo claro que es una idea, no tiene que ser la mejor, de esta idea puede aparecer otras ideas por parte de los visitantes, pueden participar. Ánimos y adelante.
672  Programación / .NET (C#, VB.NET, ASP) / Re: Hacer cambios de este código. en: 25 Enero 2017, 13:18 pm
Hola:

Leyendo por aquí:
Cómo: Convertir una cadena en un número (Guía de programación de C#)

Se puede hacer algo como esto.
Código
  1.                int cantidadBytes = Int32.Parse("17729");
  2.                byte[] datosArray = new byte[cantidadBytes];

Lo que hace Arduino en enviar esta trama así:

Código
  1. 17729pcomsfgocfgmpsomhgpodmgpdfgsioidchg954y90y4h30x50hg98c9oc0m9vy509hc596h509

Como se puede ver, los 5 primeros bytes corresponde al 17729, es es la cantidad del tamaño del array llamado datosArray en el ejemplo de arriba.

Lo veo así complicado. A lo mejor hay que cambiar la forma de hacer las cosas.

1. C# espera que le lleguen datos.
2. Arduino envía solo este valor 17729.
3. C# convierte de string a int y el arrayDatos ya tiene el tamaño deseado.
4. C# le envía por el puerto serie estos caráscteres, OK.
5. Arduino entiende el OK y envía el resto de tramas de bytes.
6. C# almacena los datos en el arrayDatos, crea el archivo al disco duro y lo abre, en este caso es una foto.

Me parece que aí está mejor que enviar todo de golpe como pretendía en un principio. La pregunta es.

¿Cómo se hace?

Mira que me lavé el cerebro, ajjajaj jaj ajaja para lograr donde he llegado.

Saludos.
673  Programación / .NET (C#, VB.NET, ASP) / Hacer cambios de este código. en: 25 Enero 2017, 03:05 am
Hola:

Tengo este código de abajo que funciona bien. Lo que hace es, al recibir algún dato por el puerto serie, me lo almacena en un array y guarda el archivo en el disco duro. Hecho en C#.
Código
  1. using System;
  2. using System.Diagnostics;
  3. using System.IO;
  4. using System.IO.Ports;
  5.  
  6. namespace Recibir_archivo_desde_Arduino_consola_02
  7. {
  8.    class Program
  9.    {
  10.        static void Main(string[] args)
  11.        {
  12.            string COM = "";
  13.  
  14.            // Tamaño ventana consola.
  15.            Console.WindowWidth = 55; // X. Ancho.
  16.            Console.WindowHeight = 15; // Y. Alto.
  17.            Console.Title = "Recoger foto desde Arduino y crearlo en el disco duro"; // Título de la ventana.
  18.  
  19.            // Crear un nuevo objeto SerialPort con la configuración predeterminada.
  20.            SerialPort Puerto_serie = new SerialPort();
  21.  
  22.            // Configuración.
  23.            Console.Write(@"
  24. Introduzca un número para seleccionar puerto COM.
  25. Por ejemplo el 4, sería COM4.
  26.  
  27. Puerto: ");
  28.            COM = Console.ReadLine(); // Escribir el número del puerto.
  29.            Console.Clear();
  30.  
  31.            Puerto_serie.PortName = "COM" + COM; // Número del puerto serie.
  32.  
  33.  
  34.            Puerto_serie.BaudRate = 115200; // Baudios. 115200.
  35.            Puerto_serie.Parity = Parity.None; // Paridad.
  36.            Puerto_serie.DataBits = 8; // Bits de datos.
  37.            Puerto_serie.StopBits = StopBits.Two; // Bits de parada.
  38.            Puerto_serie.Handshake = Handshake.None; // Control de flujo.
  39.  
  40.            // Establecer la lectura / escritura de los tiempos de espera.
  41.            Puerto_serie.ReadTimeout = -1; // 500.
  42.            Puerto_serie.WriteTimeout = -1; // 500.
  43.  
  44.            try
  45.            {
  46.                Puerto_serie.Open(); // Abrir el puerto serie.
  47.            }
  48.  
  49.            catch (IOException)
  50.            {
  51.                Console.ForegroundColor = ConsoleColor.Red; // Texto en rojo.
  52.                Console.CursorVisible = false;
  53.                Console.SetCursorPosition(16, 6);
  54.                Console.WriteLine(@"El puerto " + Puerto_serie.PortName + @" no existe
  55.                o no lo encuentra.");
  56.                Console.ReadKey(); // Pulse cualquier tecla para salir.
  57.            }
  58.  
  59.            catch (UnauthorizedAccessException e)
  60.            {
  61.                Console.WriteLine(e);
  62.            }
  63.            Puerto_serie.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
  64.  
  65.            Console.WriteLine("Esperando datos desde Arduino...");
  66.            Console.Read();
  67.            Puerto_serie.Close(); // Cerrar puerto.
  68.        }
  69.  
  70.        private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
  71.  
  72.        {
  73.            try
  74.            {
  75.                SerialPort sp = (SerialPort)sender;
  76.                int contador = 0;
  77.                byte[] datosArray = new byte[17729]; // Aquí tengo que cambiar el valor cuando recibo datos desde el puerto serie.
  78.  
  79.                while (contador < datosArray.Length)
  80.                {
  81.  
  82.                    contador += sp.Read(datosArray, contador, datosArray.Length - contador);
  83.  
  84.                    Console.SetCursorPosition(10, 2);
  85.                    Console.Write("Datos recibidos:  {0}", contador);
  86.                    Console.WriteLine("                   ");
  87.  
  88.                    if (contador == 17729)
  89.                    {
  90.                        Console.WriteLine();
  91.                        Console.WriteLine("Creando archivo al disco duro...");
  92.                        File.WriteAllBytes("fotón.jpg", datosArray); // Crear archivo en el disco duro.
  93.                        Console.WriteLine();
  94.                        Console.WriteLine("Archivo creado. Ejecutando imagen.");
  95.                        Process.Start("fotón.jpg"); // Ejecutar visualizador de imágenes.
  96.                        Console.WriteLine();
  97.                        Console.WriteLine("Imagen ejecutada.");
  98.                        Console.WriteLine();
  99.                        Console.ForegroundColor = ConsoleColor.Yellow; // Letras amarillas.
  100.                        Console.WriteLine("FIN DE PROGRAMA.");
  101.                        Console.ForegroundColor = ConsoleColor.Gray; // Letras grises otra vez.
  102.                    }
  103.                }
  104.            }
  105.  
  106.  
  107.            catch (TimeoutException)
  108.            {
  109.                //maybe increase ReadTimeout or something, use exponential backoff, your call
  110.            }
  111.  
  112.            catch (IOException)
  113.            {
  114.                // Console.WriteLine("La operación de E/S se anuló por una salida de subproceso o por una solicitud de aplicación.");
  115.            }
  116.        }
  117.    }
  118. }
  119.  

Quiero tener ideas para modificar este programa.

Los datos del puerto serie puede llegar desde Arduino o desde otro PC. Como llega desde Arduino en este caso, tiene dos botones, si pulsa el primer botón, C# recibe ciertos comandos que son estos:

Si en Arduino presiono el primer botón, C# le llega este número de 5 Bytes en este caso, 17729. Ese valor tiene que incluirse aquí, en esta parte del código indicado abajo.

Código
  1. byte[] datosArray = new byte[17729];

Como puedes ver, he puesto manualmente el valor de este array 17729.

¿Cómo hago que al detectar cualquier valor, en este caso 17729 sea para el array datosArray?

Digo 17729 como ejemplo, si le llega 478, pues que sea 478.

Lo que no entiendo que luego de llegar 17729, que son solo 5 dígitos, llegará de inforamación 17729 Bytes detrás.

Si no haz entendido algo, preguntar para explicarlo de otra manera.

Saludos.
674  Programación / Programación General / Curioseando lenguajes que apenas he tocado y algunos ni eso en: 24 Enero 2017, 16:42 pm
Hola:

Quiero saber vuestras experiencias sobre lenguajes de programación que voy a nombrar si lo han probado.

Quiero probar con Visual Studio Community 2015 (Gratuito) este lenguaje llamado R. Se puede programar bajando un programa apra añadirlo en Visual Studio, aunque ya vendrá de forma oficial en Visual Studio 2017, por ahora solo está la versión RC.

Lenguaje F#. En su día lo probé en consola, creo que no tiene modo Visual. He intentado hacer este código de ejemplo en C# a F# sin éxito para saber si puedo controlar el puerto serie, hay que conocer muchas cosas.

estuve un tiempo con [url0https://es.wikipedia.org/wiki/Windows_PowerShell]PowerShell[/url], he leído noticias de este tipo, adiós a CMD y el sustituto es PowerShell. No se consiedra este lenguaje para desarroladores, si F#. Por esono se encuentra en los foros oficiales del MSDN y si en TechNET, es más bien para administración mediante Scrips sobre todo para Windows Server.

En Resumen:
Lenguaje R, F# y PowerShell.

¿Qué opinas?

Saludos.
675  Sistemas Operativos / GNU/Linux / Lograr comunicar puerto serie con VirtaulBox en: 23 Enero 2017, 17:46 pm
Hola:

Tengo en el virtual Box instalado openSUSE v42.2. (No me digan po rprivado que use Kali Linux porque lo usa mucho en Mr Robot, xd).

Instalé el minicom, que es el equivalente del HyperTerminal de Windows, desde ahí envio y recibo datos por el puerto serie, quiero comunicarlo con Arduino y no me lo detecta.

Aquí hay un documento que si me funciona si tengo instalado en el disco duro openSuse, pero no si lo tengo instalado en una máuina virtual como Virtual Box.

Ver tutorial.

¿Alguna ayuda?

Saludos.
676  Programación / .NET (C#, VB.NET, ASP) / Re: Problema con visualizar tablas en datagrid C# y MySQL en: 21 Enero 2017, 12:53 pm
Hola:

Mira la página 437 de este documento.

Saludos.
677  Programación / Programación General / Re: [DUDA] Leer archivos que se van a imprimir(Impresora Física) en: 20 Enero 2017, 17:14 pm
Hola:

Aquí en C# hay ejemplos.

Saludos.
678  Programación / Programación General / Re: Obtener información de un PC 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. ;)
679  Programación / .NET (C#, VB.NET, ASP) / Re: Modificar el array de byte[] en: 14 Enero 2017, 12:46 pm
Hola de nuevo:

Urgando en mi grupo de amigos con esto.
Código
  1.    for (int i = 0; i < rawData.Length; i++)
  2.    {
  3.        rawData[i] = (byte)(rawData[i] ^ 10);
  4.    }

En el cual estoy agradecido porque funciona de maravilla. Si hago un programa para cifrar de C# una foto, usando el mismo efecto puede desemcriptarlo.

  • Hago tres programas de C#.
  • Programa 1 de C# para cifrar cualquier archivo, es este caso una imagen.
  • Meto la escriptación en el .hex de Arduino ya explicado atrás.
  • Programa 2 de C# capturo los datos de Arduino por el puerto serie/USB.
  • Programa 3 de C# lo desemcripta.

Cuidado una cosa, al menos no he caido antes y lo comento por aquí mismo. ;)
Si cifra una imagen con el programa 1 de C#, lo cifra, si lo vuelve hacer, se descompila y se recupera la imagen. MEnudo fallo y no me di cuenta.
680  Programación / Programación General / Re: ¿Que programacion me recomendais? en: 10 Enero 2017, 10:49 am
Hola:

Libros tienes una guía, internet muchos ejemplosy documentación.

Los programadores de Java son los más “tristes” y los de C++ los más “viejos”

Escoja el que escojas, prueba con uno.

Saludos.
Páginas: 1 ... 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 [68] 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 ... 261
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines