sábado, 22 de enero de 2011

HCF

Pues bien, prometí nuevos programas y mejoras para los programas que ya tengo hechos, para este año, y ya empiezo a cumplir lo dicho. Acabo de hacer un pequeño Script en Python, para llevar el control de nuestros archivos. A simple vista, los mas indagadores, pensaréis "Esto ya existe para GNU/Linux, y seguro que mejor que tu Script". No, no os equivocáis. Pero, a los que estamos aprendiendo a programar nos gusta hacer nuestros propios programas para ir aprendiendo cosas. Y creedme, este en concreto, me ha enseñado que un error de planteamiento a la hora de escribir código, te puede llevar a la locura.

¿Qué es HCF?

HCF (Hash Control Files) es un programa capaz de almacenar, chequear, mostrar y eliminar sumas MD5 de los archivos que deseemos. Pongamos un ejemplo. Tenemos un archivo importante, y sospechamos que alguien se dedica a modificarlo. Basta con crear una suma del archivo, con HCF, y esta quedará almacenada. En el momento que queramos, podemos chequear el archivo, para comprobar si ha sido modificado desde la última vez que lo editamos.


¿Dónde lo puedo usar?

En tu ordenador (Siempre que uses un sistema operativo GNU/Linux)

¿Cómo se usa?

Una vez preparado para usarse (Mas abajo lo explicaré) disponemos de 6 comandos (Ni uno mas, ni uno menos)

about: Muestra información "Acerca de"
help: Muestra la ayuda del programa
new <ruta>: Añade el archivo
del <ruta>: Borra el archivo
show <ruta>: Muestra el archivo
check <ruta>: Comprueba el archivo

Por ejemplo, para añadir un archivo, escribimos:
sudo ./hcf new /home/user/Escritorio/archivo.txt
Como veis, fácil de usar y de recordar.

HCF

Nota: Las rutas deben ser totales. Por ejemplo, en vez de /Escritorio/archivo, debemos pasar la ruta /home/usuario/Escritorio/archivo.


¿Cómo preparo el programa para ejecutarlo?

Una vez descargado, nos vamos al directorio donde se encuentra, y otorgamos al programa permisos de ejecución (chmod +x hcf).

Para ejecutarlo, lo hacemos como cualquier otro programa de GNU/Linux:
./hcf <argumentos>
Por ejemplo:
./hcf show /var/www/index.html


¿Cómo chequeo archivos?

Una vez tengamos la suma guardada de varios archivos, podemos comprobar si han sufrido modificaciones con el comando check. Por ejemplo,
./hcf check /var/www/index.html
Este comando puede producir 2 salidas: Una indicando que el archivo no ha sufrido modificaciones, y otra indicando que si las ha sufrido (Y la prueba del delito, los hashes, tanto el antiguo como el nuevo).

En caso de que el hash sea distinto, y queramos añadir de nuevo la ruta del archivo, debemos borrarlo previamente, para evitar tener 2 rutas iguales con distinto hash. 


Información "Un poco mas técnica"

Lo primero, el programa no está completamente listo para ser usado. Funcionar funciona, pero como ocurre con todos los nuevos programas, puede contener multitud de errores.

Lo segundo, para las 4 acciones sobre archivos, se necesita ser super-usuario, pues creamos/accedemos al fichero /etc/hcffile

No funciona en Windows. Si alguien lo quiere portar, es libre.


Requerimientos

Necesitas tener Python instalado en tu equipo. No es gran cosa, pues viene pre-instalado por defecto en la mayoría de los sistemas GNU/Linux.



Licencia

HCF es Software Libre (GPLv3), por lo tanto, tienes...
...la libertad de usar el programa, con cualquier propósito.

...la libertad de estudiar cómo funciona el programa y modificarlo, adaptándolo a tus necesidades.

...la libertad de distribuir copias del programa, con lo cual puedes ayudar a tu prójimo.

...la libertad de mejorar el programa y hacer públicas esas mejoras a los demás, de modo que toda la comunidad se beneficie.



Programa

Página en SourceForge

-> Código fuente

Versión inicial: Aquí

-> Ejecutable

Descarga versión inicial: Aquí


Discusión

Podéis enviarme sugerencias, fallos, ideas, (lo que sea) sobre el programa a mi correo electrónico para el blog: daemonfreedom93@gmail.com

O para mas comodidad, podéis dejar comentarios en esta misma entrada.

6 comentarios:

  1. Muy bueno, no encuetro el sentido de que sea root quien tiene que manejar la lista de hash de archivos...

    La imposibilidad de que no corra sobre windows es que específicamente utilizas un archivo en /etc, por ahí cambiando eso se puede lograr mayor portabilidad. Yo optaría por hacer que la lista que almacenas vaya a parar al directorio del usuario que está usando la aplicación (como todo en la vida, /home/usuario/.hcffile (en un windows podría ser algo como C:\Documents and settings\Usuario\.hcffile, así cada usuario puede tener su lista.

    Una búsqueda rápida por google para saber cómo solucionar ésto y tengo algo así:
    PATH_TO_HCFFILE= os.path.join(os.path.expanduser('~'), '.hcffile')

    tonces, luego en todos los lugares que aparece '/etc/hcffile' puede ser reemplazado por PATH_TO_HCFFILE.

    PD: salvo por os.path.expanduser (que por lo visto no te va a retornar el home en windows), el resto es multiplataforma, os.path.join te retorna un path con el separador correspondiente.

    ResponderEliminar
  2. Hola Anibal, me alegro mucho de volver a verte comentar en mi blog, aprecio mucho tus comentarios.

    Cuando planteé el programa, lo hice pensando en seguridad. Si alguien es capaz de modificar tus archivos en tu home de usuario, también podría modificar las sumas en el fichero hcffile (estando en /home/usuario/.hcffile), por eso decidí alojarlo en /etc.

    Sobre hacerlo portable a Windows, me ha gustado mucho lo que propones, intentaré ponerlo en práctica en febrero, ahora estoy empezando con otro proyecto.

    ResponderEliminar
  3. Muy buena pinta Serch. Ya esperaba algo nuevo tuyo XD.
    A menos que en breve lo portes a Win., no podré usarlo hasta que vuelva a instalar GNU/Linux...
    Pero bueno, lo probaré.
    Un saludo.

    ResponderEliminar
  4. Bueno, espero pronto tu comentario sobre si te gusta el programa jeje.

    ResponderEliminar
  5. Eres muy grande crack!. Espero que sigas asi y no dejes de darlo todo.

    Un abrazo.

    Vic.

    ResponderEliminar