Crear archivo log

Cuando una aplicacion falla y hay que averiguar donde esta el error, resulta util tener tener un registro donde hayan quedado guardados, tanto las acciones realizadas como una descripcion de los posibles errores. El siguiente codigo puede ser una solucion rapida y sencilla si necesitamos crear un log, solo tenemos que llamar a la funcion con el mensaje a registrar y la propia funcion se encarga de guardar tambien la fecha, se preocupa de no entrar en conflicto con otros threads y cuando el tamaño del archivo se vuelve excesivo lo renombra y crea uno nuevo. Es decir, nosotros solo tenemos que añadir esta funcion a nuestro codigo y despreocuparnos de lo demas.

Calcular hash sha1 y md5

En un artículo anterior mostraba como calcular el hash md5. Partiendo del código que mostraba en ese articulo, añadiremos la posibilidad de calcular el hash sha1 además del md5. Se usan las mismas funciones de la API, solo se hacen algunos ajustes para poder usar ambos algoritmos.

Compartir objetos del kernel entre procesos (SECURITY_DESCRIPTOR)

En el siguiente ejemplo demuestro como crear un descriptor de seguridad (security descriptor) para permitir el acceso a un objeto del kernel a todos los usuarios, de esta manera puede ser compartido por procesos pertenecientes a diferentes cuentas de usuario. Esto puede resultar útil, por ejemplo, cuando un servicio tiene que compartir un objeto con una aplicación que se esta ejecutando bajo una cuenta de usuario diferente.

FTPS usando Indy y OpenSSL

Supongo que si has llegado a esta pagina buscando información sobre FTPS en Indy, o lo que lo mismo, como hacer un ftp seguro usando Indy, te habrás dado cuenta de la poca información que existe sobre este tema. Yo mismo le tuve que dar varias vueltas a internet antes de encontrar algo útil. Así que me he decidido a dejar aquí un poco de información, que puede que le resulte útil a alguien que comience un proyecto de este tipo, al menos a mi me fue útil.

Cifrado AES-256

Advanced Encryption Standard (AES), también conocido como Rijndael, es un sistema de cifrado por bloques adoptado como un estándar por el gobierno de los Estados Unidos. Actualmente es uno de los algoritmos más populares usados en criptografía simétrica.

Recuperar imagenes jpeg 2

En un artículo anterior hablaba de como recuperar las imágenes borradas de un disco, o tarjeta de memoria, examinando cluster a cluster en busca de las imágenes. Ese programa estaba pensado para utilizarlo directamente sobre un disco o sobre la imagen de un disco, no sirve para examinar otro tipo de archivos, pero usando un sistema parecido podríamos extraer imágenes de cualquier archivo. La única diferencia es que en vez de ir buscando cluster a cluster, tendríamos que ir buscando byte a byte. Este proceso es mucho mas lento así que no es el mas adecuado para examinar discos enteros, sin embargo es perfecto para explorar archivo de un tamaño normal.

Funcion FtpCommand de Wininet.pas

Conversor de csv

Esta es una pequeña herramienta que nos permite convertir archivos csv (comma separated values). Podemos modificar los archivos de diferentes maneras, por ejemplo, cambiando el carácter que se utiliza como separador o el orden de las columnas. El código es bastante sencillo, gracias a que se hace un uso intensivo de la clase TStringList. Una de las clases mas útiles con las que cuenta delphi.

Recuperar imagenes jpeg

El siguiente programa sirve para recuperar imágenes jpeg borradas. Se basa en la suposición de que la imagen que se quiere recuperar esta guardada en clusteres consecutivos dentro del disco duro. Esta suposición no siempre tiene que ser cierta, pero si lo es en la mayoría de los casos. Así que si hay suerte, podremos recuperar la imagen.

Pico y xinetd

Bueno, yo sigo jugando con mi micro-servidor web pico. Ahora buscando un poco de seguridad me he fijado en xinetd. Xinetd es un demonio presente en muchos sistemas tipo Unix que gestiona las conexiones de varios demonios. La ejecución de una única instancia de Xinetd reduce la carga del sistema, en comparación con lo que significaría ejecutar cada uno de los demonios que gestiona, de forma individual. Cuando una petición llega a nuestro equipo, a uno de los puertos controlados por el, ejecuta una instancia del programa encargado de manejar esa conexión. Por ejemplo, en el caso de pico, cuando alguien se conecte al puerto 1978 xinetd ejecutara una instancia de nuestro programa para que se encargue de esa conexión, una vez cerrada la conexión nuestro programa también se cierra.

Distribuir contenido