jueves, 31 de marzo de 2011

Script Python que obtiene la suma hash de un archivo.

Hola a todos, en este post les mostrare como obtener la sumahash de un archivo usando distintos algoritmos. Para esto usare el lenguaje de programación Python, ya que tiene una librería que se llama hashlib, esta librería cuenta con todos los elementos que necesitamos para crear nuestra aplicación para obtener las sumahash, bueno, esto solo será un script loco, lo que si me gustaría intentar sería hacer es implementar el algoritmo, en fin este es el script, en un inicio lo publique en Portal Hacker y ahora esta aca:

Código Python:
#!/usr/bin/python
# Name: sum.py
# Desc: Realiza la suma hash de cualquier archivo segun el algoritmo que se especifique
# Coded by SerG
 
import hashlib
import sys
 
def usage():
   print "Hacklab Bolivia - Sumador v1.1"
   print "Algoritmo: md5, sha1, sha224, sha256, sha384, sha512"
   print "sum.py [Algoritmo] [filename]"
 
def realizarSuma(file, algoritmo):
 f = open(file, "r")
 # Leemos cada linea del archivo
 # y vamos actualizando nuestro algoritmo
 for line in f.readlines():
  algoritmo.update(line)
 f.close()
 # Mostramos la suma en formato de cadena simple
 print algoritmo.hexdigest(),file
 
def main(args):
   if len(args)<=1:
      usage()
   else:
      algoritmo = obtenerAlgoritmo(args[1])
      if algoritmo == None:
         usage()
      else:
         realizarSuma(args[2], algoritmo)
 
def obtenerAlgoritmo(tipo):   
   # Retornamos la referencia de la funcion
   # del tipo de algoritmo se solicite  
   algoritmos = {"md5":hashlib.md5(),
                 "sha1":hashlib.sha1(),
                 "sha224":hashlib.sha224(),
                 "sha256":hashlib.sha256(),
                 "sha384":hashlib.sha384(),
                 "sha512":hashlib.sha512()
                }
   try:
      temp = algoritmos[tipo]
      return temp
   except:
      return None
 
if __name__=="__main__":
   main(sys.argv)


Bueno como podran ver, no es cosa del otro mundo, esto nos muestra la simplicidad del lenguaje python y su robustez. 
 
Saludos.

No hay comentarios:

Publicar un comentario