lunes, 30 de mayo de 2011

Recuperación de password del Usuario Root de MySQL en Windows

Hace ya algún tiempo publique una forma de recuperar los datos de MySql de cuando una Base de datos no responde peor ahora se me presento que realizando pruebas entre distintos proyectos confundi la clave que al root de la Base de Datos y pues tuve que buscar la forma de accesar, encontre muchas paginas de como hacer esto en Linux pero en Windows tuve algunos problemas aqui les muestro los pasos para realizar el cambio de clave al usuario root en Windows...


  1. Iniciar una consola de comandos, en modo administrador, si no lo ejecutas como administrador no podrás realizar los cambios.
  2. Paramos el servicio :  C:\> net stop mysql
  3. Ejecutamos desde el directorio bin (es decir donde lo tengamos instalado + \ bin\):
    • C:\MySQL\bin> mysqld --skip-grant-tables --user=root
  4. Desde otro teminal (también como administrador), también desde el diretorio bin: 
    • C:\MySQL\bin> mysql -u root
  5. Accedemos automáticamente y sin necesidad de contraseña a mysql
  6. Ejecutamos:
    •  mysql> UPDATE mysql.user SET Password=PASSWORD('contraseña') WHERE User='root';
  7. y después
    •  mysql> FLUSH PRIVILEGES;
  8. Salimos del editor mysql: 
    • mysql> exit;
  9. Desde el administrador de tareal paramos mysql, el proceso se llama mysqld.exe o ejecutamos de nuevo 
    • C:\> net stop mysql
  10. Y Volvemos a arrancar el servicio desde un terminal:
    • C:\>net start mysql
Luego volemos a intentar entrar con la calve: contraseña y ya podremos accesar claro que podemos cambiar Contraseña en el Query por la clave que deseemos usar... y eso sera suficiente.

viernes, 18 de marzo de 2011

Vulnerabilidad en la seguridad de las aplicaciones ASP.NET

Hoy en día el tópico de la seguridad es muy discutido, es importare el saber que al desarrollar una aplicación y sobre todo una web las aplicaciones pueden ser un punto importare de entrada para aquellas personas que de forma mail intencionada o "ética" intentan vulnerar los sistemas.Y como siempre descuidos del hombre son los mas fáciles de encontrar. Pues bien navegando en la red buscando las funciones de unas clases me tope con la advertencia de esta vulnerabilidad la cual es fácil de resarcir y no presenta mucha dificultad. y de alguna forma es responsabilidad de nosotros como programadores el tomarla en cuenta.

¿De qué forma impacta es ta vulnerabilidad?

ASP .NET utiliza el cifrado para ocultar datos confidenciales y proteger a los mismos de manipulación por parte del cliente. Solo existe un problema en la implementacion del cifrado permite al atacante descifrar y manipular los datos.

Pero, ¿qué puede hacer el atacante con esta capacidad? Parte de la respuesta depende de la aplicación ASP.Net ala cual se va atacadar. Por ejemplo, si la aplicación ASP.Net almacena información confidencial, como contraseñas o cadenas de conexión de base de datos, en el objeto ViewState estos datos podrían verse comprometidos. El objeto ViewState se cifra y se envía al cliente en una variable de formulario oculto, por lo que es un posible objetivo de este ataque.


       Si la aplicación ASP.Net utiliza ASP.Net 3.5 SP1 o posterior, el atacante podría utilizar esta vulnerabilidad de cifrado para solicitar el contenido de un archivo arbitrario dentro de la aplicación ASP.Net. La revelación pública demostrado mediante esta técnica para recuperar el contenido de web.config. Cualquier archivo en la aplicación ASP.Net que este ejecutando el proceso de trabajo si se tiene acceso se devolverán al atacante.

Como funciona esta Vulnerabilidad

` Para entender cómo funciona esta vulnerabilidad, necesita saber acerca de los oráculos criptográficos. Un oráculo en el contexto de la criptografía es un sistema que proporciona sugerencias a medida que se le hacen preguntas. En este caso, existe una vulnerabilidad en ASP.Net que actúa como un oráculo de relleno. Esto permite a un atacante enviar el texto cifrado elegido al servidor y aprender si se descifra correctamente examinando qué código de error fue devuelta por el servidor. Haciendo muchas peticiones, el atacante puede aprender lo suficiente como para correctamente descifrar el resto del texto cifrado. El atacante puede alterar el texto sin formato y cifrarlo.

Como solucionar esta Vulnerabilidad

Una solución que puede utilizar para evitar esta vulnerabilidad es para activar la función CustomErrors de ASP.NET, y explícitamente configurar sus aplicaciones para volver siempre la misma página de error - sin importar el error encontrado en el servidor. Mediante el mapeo de todas las páginas de error a una sola página de error , esto impide que un hacker pueda distinguir entre los diferentes tipos de errores que se producen en el servidor.
El ejemplo que se describe a continuacion pretende como solucionar la vulnerabilidad existente en las Aplicaciones ASP.NET o para tener mas informacion acerca de como funciona esta vulnerablidad.
Si está utilizando ASP.NET 3.5 o ASP.NET 4.0, entonces debería seguir los siguientes pasos para habilitar CustomErrors y mapear todos los errores a una sola página de error.
  1. Editar el archivo de su aplicación ASP.NET raíz Web.config. Si el archivo no existe, crear uno en el directorio raíz de la aplicación.
  2. Creación o modificación de la sección de CustomErrors del archivo web.config para tener la siguiente configuración Observe el uso de redirectMode = "ResponseRewrite" con NET 3.5 SP1 y NET 4.0.               
  < customErrors mode ="On" redirectMode ="ResponseRewrite" defaultRedirect ="~/error.aspx" />
 

miércoles, 2 de febrero de 2011

Cortar Imágenes con un rectángulo

Hoy necesitaba cortar una imagen de una fotografía para dejar únicamente la cara de la persona, así que me di a la tare de buscar como cortar la imagen usando un rectangulo dobre un picturebox y recortando pegarlo en otro:


Para Cortar la Imagen se utiliza un rectángulo y en realidad es bastante sencillo de realizar.
Simplemente se utiliza el siguiente código


private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                CordenadaX.Text = e.X.ToString();
                CordenadaY.Text = e.Y.ToString();


                pictureBoxOrigen.Refresh();
                
                int A = 250;
                int B = 50;
                int C = 150;
                int D = 200;
                try
                {
                    A = Convert.ToInt32(CordenadaX.Text);
                    B = Convert.ToInt32(CordenadaY.Text);
                    C = Convert.ToInt32(Largo.Text);
                    D = Convert.ToInt32(Ancho.Text);


                    Bitmap imagen2 = new Bitmap(C, D);
                    Graphics lienzo = Graphics.FromImage(imagen2);


                    Pen cropPen = new Pen(Color.Red, 3);
                    cropPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;
                   
                    Rectangle recorte = new Rectangle(A, B, C, D);
                    pictureBox1.CreateGraphics().DrawRectangle(cropPen, recorte);
                    lienzo.DrawImage(pictureBoxOrigen.Image, 0, 0, recorte, GraphicsUnit.Pixel);
                    this.pictureBoxDestino.Image = imagen2;
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Surgio un Error: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

Código Completo : Codigo Completo

martes, 11 de enero de 2011

Cargar imágenes en WPF de forma dinamica.

Ya tenia tiempo sin poner nada por falta de tiempo...

Como dice me enfrente a un pequeño problema al intentar cargar un stream directamente sobre un componente System.Windows.Controls.Image al invocar al propiedad Source se requiere un objeto ImageSource, investigando y haciendo pruebas descubri que igual puede usarse un elemento System.Windows.Media.Imaging.BitmapImage, el problema y radicaba en como crear el BitmapImage desde WPF.

Generalmente para trabajar con imágenes windows forms se utiliza un picturebox para el cual   se utiliza System.Windows.Forms.PictureBox.Image el cual es un objeto: System.Drawing.Image para cargar este existen miles de ejemplos en Internet y funciones nativas como System.Drawing.Image.FromFile()System.Drawing.Image.FromStream() los cuales nos facilitan la vida; pues bien me di a la tarea de buscar una solución.

La solución que deduje  en base a códigos y referencias que vi es la siguiente diseñe una función que recibe un objeto de tipo System.Drawing.Imag y devuelve el requerido System.Windows.Media.Imaging.BitmapImage el cual se puede cargar de forma dinámica en el objeto System.Windows.Controls.Imag de WPF.

EJEMPLO:
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            image1.Source = FromStream(System.Drawing.Image.FromFile(@"C:\....\Pictures\666666.jpg"));
            
        }

Lo cual invoca mi solución a groso modo:
        public BitmapImage FromStream(System.Drawing.Image Imagen)
        {
            BitmapImage bmp = new BitmapImage();
            var image = Imagen;
            bmp.BeginInit();
            MemoryStream memoryStream = new MemoryStream();
            image.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Bmp);
            memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
            bmp.StreamSource = memoryStream;
            bmp.EndInit();
            return bmp;
        }
Por cierto es necesario agregar las librerias :

using System.Windows.Forms;
using System.IO;
using System.Drawing;
Agregalas tanto en referencia como en el .CS de tu ventana WPF.

Tambien puede usuarse:

image.Source = new BitmapImage(
          new Uri(@"pack://application:,,,/MyReferencedAssembly/images/Globe.png",
                  UriKind.RelativeOrAbsolute));

jueves, 9 de septiembre de 2010

Instalar Code Snippets

En esta página te explicaré cómo agregar tus code snippets a Visual, para que puedas agregar  nuevos o adaptar algunos de los existentes  y así poder usarlos desde Visual C#.



Instalar los Snippets

Para agregar estos snippets a los que ya tiene Visual Studio, tienes que hacer lo siguiente:
  1. En el menú Tools, selecciona Code Snippets Manager co como se ve en la imagen Ctrl+K+B. 
  2. Te mostrará un cuadro de diálogo desde el que puedes crear nuevas carpetas, añadir snippets existentes, puedes incluso crear directorios para tus snippets en este caso yo agregue la carpeta MySql donde agregare los Snippets que cree para Mysql.
  3. Para iniciar la instalación de los snippets simplemente damos click en el botón "Import...", es  el cual nos abrirá una pantalla para seleccionar los archivos de los Snippes a instalar como podrán ver se pueden seleccionar mas de 1 en cada importación; importante que si deseamos que se instale en una carpeta seleccionemos dicha carpeta antes de pulsar Import.
  4. Como se ve ahora aparecen los snippets seleccionados y seleccionamos del lado derecho en que sub-categorías deseamos que estén disponibles. y damos finalizar
  5. Una ves realizado esto los nuevos snippets estan disponibles.

Con esto hemos terminado en estos dias publicare otra entrada de como hacer los Snippets y subire el archivo de los snippets que hice para MySql






    martes, 7 de septiembre de 2010

    Snippets Visual Studio

    ¿Que son los Snippets?

    Bueno la pagina de MSDN los describe como:
    Los fragmentos de código de IntelliSense son archivos XML con la extensión .snippet que son conformes al esquema XML de fragmentos de código de IntelliSense.En este tema, creará un fragmento de código básico que muestra un cuadro de mensaje.Para obtener más información sobre el esquema XML de fragmentos de código.
    De una forma mas facil de comprender es codigo que puedes tener almacenado para no estar copiando y pegando simplemente lo mandas llamar del almacen y este aparece listo lo unico que tienes que cambiar son los nombre de algunas variables y cosas, para que funcione en tu proyecto.

    El ingresar un Snippet a nuestro proyecto es sencillo solo se da botón derecho y nos muestra la opción aquí están las imagen en VS 2010 y 2008


    Ahora bien agregarlos es sencillo y nos muestra una lista de los Snippets disponibles para su uso





    También pueden ser llamarlos desde el teclado:


    La forma de uso es muy sencilla, por ejemplo, en el caso de un “if”, tecleamos la palabra clave “if” y oprimimos 2 veces la tecla “TAB”. Visual Studio genera automáticamente el bloque y se posiciona dentro del paréntesis (en C#) marcando un rectángulo resaltando el lugar para escribir inmediatamente la condición:



     una vez escrita la condición, basta con teclear “ENTER” y Visual Studio posiciona el cursor en la primera línea dentro del bloque del If si es verdadero y nos perite terminar nuestra programación .

    Para un bloque “try catch” la lógica es similar. Tecleamos “try” y después 2 veces la tecla “TAB”: en este caso, el rectángulo se posiciona en el lugar para teclear el tipo de exepción, igualmente, después de escribir el tipo de exepción, basta con teclear “ENTER” para escribir el código correspondiente.


    Como se puede ver esto tiene un potencial grande para automatizar nuestros desarrollos y terminar mas rápidamente nuestras aplicaciones optimizando los tiempos de desarrollo

    jueves, 1 de julio de 2010

    "Back to Basics" entrenamiento en linea de C#

    Bueno creo que el primer post de este blog fue la oportunida de que Microsoft te diera un servidor por un año gratis reciente recibi un correo de la persona que esta acargo de este proyecto en microsoft donde decia:


    Tú fuiste una de las personas que recibieron servidor, entre los comentarios que me han mandado, el más frecuente ha sido, ¿Cómo puedo comenzar a desarrollar con .NET? y el segundo fue, “Ya tengo mi servidor ¿Ahora qué hago con él? ¿Cómo puedo empezar mi negocio con este servidor?”
    Lo primero es aprender .NET, para eso comenzamos una serie de entrenamientos semanales enfocados a que aprendas los fundamentos de programación, C# y después vamos a grabar algunos videos que te van a ayudar a configurar tu servidor y que puedas comenzar a desarrollar proyectos de alto impacto y venderlos en línea.

    Por lo que ahora microsoft México ha lanzado una serie de entrenamientos vituales en linea denomindos "Back to Basics"; estos entrenamientos pintan bien para personas que inician en esto y no estarian mal que aquellos que saben programar o que alguna ves lo hicieron y no lo recuerdan retomen lo que han olvidado como dice el nombre volver a lo basico no siempre es retroceder si es para mejorar y para reforzar la base de un conocimiento solido.

    Aquii esta la la informacion completa si tienen el server segistrense y si no pues tambien

    Description: http://www.microsoft.com/latam/technet/envios/2010/mai_me_VisualStudio_entrenamientos/mai_me_VisualStudio_entrenamientos.jpg
    Description: http://www.microsoft.com/latam/technet/envios/2010/mai_me_VisualStudio_entrenamientos/izq.jpg
    9 julio - 5:00 a 7:00 pm
    Introducción al desarrollo de aplicaciones Microsoft .NET utilizando Visual Studio 2010 y Visual C#.
    Primera Sesión: Los fundamentos
    En esta sesión se describen los conceptos fundamentales para el desarrollo de aplicaciones Microsoft .NET.

    Los temas que se cubren en esta sesión son:
    • Introducción a la plataforma de desarrollo Microsoft .NET
    • El entorno de desarrollo de Visual Studio 2010
    • Desarrollando aplicaciones Orientadas a Objetos utilizando Visual C#

    Description: Regístrate
    Description: http://www.microsoft.com/latam/technet/envios/2010/mai_me_VisualStudio_entrenamientos/linea.jpg
    16 julio - 5:00 a 7:00 pm
    Introducción al desarrollo de aplicaciones Microsoft .NET utilizando Visual Studio 2010 y Visual C#.
    Segunda Sesión: Construyendo aplicaciones
    En esta sesión se describen algunos de los tipos de aplicaciones principales que podemos desarrollar para la plataforma Microsoft .NET utilizando Visual Studio.

    Los temas que se cubren en esta sesión son:
    • Desarrollo de aplicaciones de escritorio
    • Desarrollo de aplicaciones Web
    • Desarrollo de aplicaciones para dispositivos móviles
    • Desarrollo de aplicaciones de acceso a datos

    Description: Regístrate
    Description: http://www.microsoft.com/latam/technet/envios/2010/mai_me_VisualStudio_entrenamientos/linea.jpg
    23 julio - 5:00 a 7:00 pm
    Introducción al desarrollo de aplicaciones Microsoft .NET utilizando Visual Studio 2010 y Visual C#.
    Tercera Sesión: Arquitectura de software
    En esta sesión se muestran algunos ejemplos de arquitectura de software y patrones de diseño que pueden ser desarrollados utilizando Visual Studio.

    Los ejemplos que se describen en esta sesión son:
    • Programación por capas
    • Modelo Vista Controlador (MVC)
    • Arquitectura orientada a servicios

    Description: Regístrate
    Una vez terminada la sesión podrás volver a consultar estas sesiones en el sitio de Channel9 México.
    Description: http://www.microsoft.com/latam/technet/envios/2010/mai_me_VisualStudio_entrenamientos/channel9.jpg