Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Pois0n84 en 20 Agosto 2016, 01:44 am



Título: [Python] ayuda con pycrypto
Publicado por: Pois0n84 en 20 Agosto 2016, 01:44 am
Mi dolor de cabeza es este quiero hacer un programa que me encripte ciertos archivos y luego borre la version original, por que lo he intentado solo me funciona con un solo archivo y crea uno nuevo, yo trabajo con archivos delicados y cuando termino de moficarlos es cifrar y borrar la version sin cifrar.

Aqui comienza el codigo:


Código
  1. ## def encrypt(key, filename):
  2.    chunksize = 64*1024
  3.    outputFile = "(encrypted)"+filename
  4.    filesize = str(os.path.getsize(filename)).zfill(16)
  5.    IV = ''
  6.  
  7.    for i in range(16):
  8.        IV += chr(random.randint(0, 0xFF))
  9.  
  10.    encryptor = AES.new(key, AES.MODE_CBC, IV)
  11.  
  12.    with open(filename, 'rb') as infile:
  13.        with open(outputFile, 'wb') as outfile:
  14.            outfile.write(filesize)
  15.            outfile.write(IV)
  16.  
  17.            while True:
  18.                chunk = infile.read(chunksize)
  19.  
  20.                if len(chunk) == 0:
  21.                    break
  22.                elif len(chunk) % 16 != 0:
  23.                    chunk += ' ' * (16 - (len(chunk) % 16))
  24.  
  25.                outfile.write(encryptor.encrypt(chunk))
  26.  
  27.  
  28.  

Este codigo me lo encontre en un foro ya que no encuentro nada relevante en pycrypto.


Código
  1. lista_archivos =  [ [os.path.join(root,file),root.split(path)[1]] for root,dirs,files in os.walk(path)
  2.                    for file in files if os.path.splitext(file)[-1] in extensiones ]
  3.  
  4. encrypt(getKey(password), lista_archivos)

lista_archivos es donde estan todos los archvios con extensiones .xx

luego llamo a la  funcion de encriptacion.


asi genero el cifrado:

Código
  1. password = "xx"
  2.  
  3. > def getKey(password):
  4.  
  5.    hasher = SHA256.new(password)
  6.    return hasher.digest()



lo estoy resumiendo lo mas que puedo

bueno el caso es que, la lista recorre todos los archivos con extensiones .xx, y luego me lo almacena en una lista yo quiero cifrar esos archivos y luego borrar el original, arriba el codigo de cifrar solo me permite cifrar un solo archivo, si alguien me ayuda se los agradecería mucho .

Gracias de antemano!



[MOD]: Menudo desastre con tanto QUOTE. Intenta utilizar la etiqueta CODE como Dios manda...


Título: Re: [Python] ayuda con pycrypto
Publicado por: tincopasan en 20 Agosto 2016, 02:52 am
la verdad que como pusiste el código da asco, ahora supongo que tu problema está acá:
Código
  1.    lista_archivos =  [ [os.path.join(root,file),root.split(path)[1]] for root,dirs,files in os.walk(path)
  2.                        for file in files if os.path.splitext(file)[-1] in extensiones ]
  3.  
  4.    encrypt(getKey(password), lista_archivos)
  5.  

probá con algo así:
Código
  1. for root,dirs,files in os.walk(path):
  2.    for file in files:
  3.        match= re.search(contiene,file)
  4.        if match is not None:
  5.            encrypt(getKey(password), file)
  6.  

por las dudas, tenés que importar re
ahhh y "contiene" es la variable con la extensión de archivos, por si solo es un tipo de archivo

Saludos.


Título: Re: [Python] ayuda con pycrypto
Publicado por: Pois0n84 en 20 Agosto 2016, 04:33 am
ahahaha sorry por el desastre es que soy nuevo en el foro,  al ejecutar me dio este error.

Edito el error no me deja ponerlo en formato python

Código
  1. match= re.search(extensiones,file)
  2. File "C:\Python27\lib\re.py", line 146, in search
  3. return _compile(pattern, flags).search(string)
  4. File "C:\Python27\lib\re.py", line 237, in _compile
  5. p, loc = _cache[cachekey]
  6. TypeError: unhashable type: 'list'


Título: Re: [Python] ayuda con pycrypto
Publicado por: tincopasan en 20 Agosto 2016, 04:38 am
ah! listo, no puedo ayudarte no uso ni por casualidad 2.7, pero supongo que en extensiones pusiste por ejemplo:
Código
  1. extensiones=".pdf"
  2.  

o la extensión que quieras encryptar.


Título: Re: [Python] ayuda con pycrypto
Publicado por: Pois0n84 en 20 Agosto 2016, 04:40 am
pongo ejemplo

Código
  1. ".pdf"

que es lo que quiero filtrar


Título: Re: [Python] ayuda con pycrypto
Publicado por: tincopasan en 20 Agosto 2016, 17:09 pm
la verdad no me interesa buscar las soluciones entre las versiones de python pero creo que podrías probar también:

Código
  1. for root,dirs,files in os.walk(path):
  2.    for file in files:
  3.        (nombreFichero, extension) = os.path.splitext(fichero)
  4.        if(extension == ".pdf"):
  5.            aencriptar=nombreFichero+extension
  6.            encrypt(getKey(password), aencriptar)
  7.  

para no usar el modulo re que es el que está dando problemas.


Título: Re: [Python] ayuda con pycrypto
Publicado por: Pois0n84 en 20 Agosto 2016, 17:20 pm
sabes bro yo tenia algo igual en mente Xd.

Código
  1. for root,dirs,files in os.walk(home):
  2.    for file in files:
  3.        if os.path.splitext(file)[-1] in extensiones:
  4.            encrypt(getKey(password), file)

ese fue lo que puse y tanto ese codigo como el tuyo, me encriptan  los archivos que estan en el directorio donde se encuentra el scrip, me faltaría que me recorra todos los directorios. Y no solo uno.


Título: Re: [Python] ayuda con pycrypto
Publicado por: tincopasan en 20 Agosto 2016, 18:08 pm
¿y si cambias (home) por ("c:")?


Título: Re: [Python] ayuda con pycrypto
Publicado por: Pois0n84 en 20 Agosto 2016, 21:05 pm
tampoco  :-( , y para que funcione tengo que poner el script ej en el escritorio que es donde tengo 2 o 3 archivos de los muchos pero cuando me va a buscar uno que no esta en el escritorio, me da error.


Título: Re: [Python] ayuda con pycrypto
Publicado por: tincopasan en 21 Agosto 2016, 01:24 am
lo probé en windows y desde otra unidad y lo que puse me anda, ahora si usas linux y python 2.7 no tengo la menor idea, porque no uso esos entornos.


Título: Re: [Python] ayuda con pycrypto
Publicado por: Pois0n84 en 21 Agosto 2016, 03:19 am
pero te cifra todos los archivos con dicha extension en los diferentes directorios o solo en un directorio? yo uso windows y python 2.7