FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Como saber la contraseña de un ZIP
Posts: 408
Joined: Fri Jan 29, 2010 08:14 PM
Como saber la contraseña de un ZIP
Posted: Tue Apr 17, 2012 10:01 PM

Hola a todos:

¿ Alquien sabe si existe alguna función que nos devuelva la contraseña que le hemos insertado a un fichero ZIP ?

Comento:

He retomado los modulos que tenia para hacer backup y restores en los programas para añadirle una contraseña al ZIP. Al crear el fichero ZIP guarda correctamente la contraseña en en ZIP ( si abres el ZIP desde fuera del programa, efectivamente te pide contraseña ), pero mi problema ahora es que, cuando hago el restore y compruebo si ese fichero contiene clave ( con las funciones de harbour es hb_ZipWithPassword( cSourceZip ) ), no veo que exista alguna función que extraiga la contraseña de dicho ZIP para poder comprobar antes de descomprimir si la contraseña que han introducido es = a la que contiene el ZIP.

¿ alguna idea ?

Un saludo
JLL

Libreria: FWH/FWH1109 + Harbour 5.8.2 + Borland C++ 5.8.2
Editor de Recursos: PellecC
ADA, OURXDBU
S.O: XP / Win 7 /Win10
Blog: http://javierlloris.blogspot.com.es/
e-mail: javierllorisprogramador@gmail.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Como saber la contraseña de un ZIP
Posted: Wed Apr 18, 2012 08:22 AM
JL,

Aqui tienes la documentación de las funciones para ZIP:

http://harbour.vouch.info/index.html?hbziparch.htm

Creo que no existe lo que buscas. Tendrás que intentar descomprimir y ver si descomprime o no. En esta misma documentación hay ejemplos de uso.
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 408
Joined: Fri Jan 29, 2010 08:14 PM
Re: Como saber la contraseña de un ZIP
Posted: Wed Apr 18, 2012 05:08 PM

Gracias antonio.

Gracias por la documentación, como he estado varios meses sin estar en este mundillo y no quería meterme en el tema harbour en profundidad no tenia la documentación necesaria, pero al final es inevitable meterse en ello para sacar un buen partido.

Según las funciones por la visto no hay ninguna al respecto, me extraña porque si hay forma de crear el zip con contraseña, se tendría que haber planificado el poder obtener la contraseña mediante una función para poder comprobar si tenemos que descomprimir o no.

  • El problema viene por lo siguiente: si se crea un zip con Hb_ZipFile() con parametro que le añades una contraseña, ( si se abre el ZIP fuera del programa, efectivamente te pido la contraseña ), pero usando la función Hb_UnZipFile() con el parametro de contraseña, sea cual sea la contraseña que le metas descomprime el archivo, solo no lo descomprime si la contraseña es NIL. ( en voz bajita, supongo que sera un pequeño bug de la función ).

Un saludo
JLL

Libreria: FWH/FWH1109 + Harbour 5.8.2 + Borland C++ 5.8.2
Editor de Recursos: PellecC
ADA, OURXDBU
S.O: XP / Win 7 /Win10
Blog: http://javierlloris.blogspot.com.es/
e-mail: javierllorisprogramador@gmail.com
Posts: 408
Joined: Fri Jan 29, 2010 08:14 PM
Re: Como saber la contraseña de un ZIP
Posted: Wed Apr 18, 2012 09:30 PM
Antonio;

Viendo la documentación sino me equivoco creo que hay un pequeño bug en la función Hb_ZipFile(), te comento y a ver si es correcto:

- Cuando se crea el fichero ZIP en la función Hb_ZipFile() dentro de esta función esta la siguiente función Hb_ZipFileCreate():
Code (fw): Select all Collapse
hb_ZipFileCreate( hZip, hb_FNameMerge( iif( lWithPath, cPath, NIL ), cName, cExt, iif( lWithDrive, cDrive, NIL ) ),;
                tTime, NIL, NIL, NIL, NIL, nLevel, cPassword, iif( Empty( cPassword ), NIL, hb_ZipFileCRC32( cFileToZip ) ), NIL )

Para mi este parámetro no tiene sentido para poder controlar las contraseñas en el ZIP:
Code (fw): Select all Collapse
iif( Empty( cPassword ), NIL, hb_ZipFileCRC32( cFileToZip ) )

Por lo siguiente:

Sino se le indica contraseña, graba NIL, pero sino lo que guarda es el CRC del fichero, en vez de guardar la contraseña en hexadecimal por ejemplo. Como cada vez que se crea un fichero ZIP su CRC es distinto, nunca esta relacionado el CRC con la contraseña, por tanto, es imposible poder obtener la contraseña que le hemos indicado.

Esta linea creo que debería ser algo así:
Code (fw): Select all Collapse
iif( Empty( cPassword ), NIL, HB_STRTOHEX(  cPassword ) )


Y luego, antes de descomprimir los ficheros podriamos hacer hb_ZipFileCRC32() para obtener el CheckSum del fichero que en realiadad sera la contraseña que a su vez podemos compararla con la que ha introducido el usuario haciendo :

Code (fw): Select all Collapse
If( cPassw == Hb_HexToStr( hb_ZipFileCRC32( cFile ) ) )
 ? "descomprimimos"
ELSE
? "La contraseña no es la correcta"

¿ es correcto todo esto ?

A la espera de noticias;
Un saludo
JLL
Libreria: FWH/FWH1109 + Harbour 5.8.2 + Borland C++ 5.8.2
Editor de Recursos: PellecC
ADA, OURXDBU
S.O: XP / Win 7 /Win10
Blog: http://javierlloris.blogspot.com.es/
e-mail: javierllorisprogramador@gmail.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Como saber la contraseña de un ZIP
Posted: Thu Apr 19, 2012 05:52 AM

JL,

Este tema deberias proponerlo en la lista de desarrollo de Harbour.

Mi sugerencia es que lo pruebes y si funciona correctamente puedes implementarlo para ti, puesto que todos los fuentes estan disponibles, y si se aprueba en la lista de desarrollo pues lo logico seria que lo integren de forma oficial.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 408
Joined: Fri Jan 29, 2010 08:14 PM
Re: Como saber la contraseña de un ZIP
Posted: Mon Apr 23, 2012 06:04 PM
Hola antonio:

Si lo voy a plantear en la lista porque por lo que he visto y probado, hay un pequeño error en la creación del ZIP con temas de contraseña, ya que no graba la contraseña en el ZIP sino siempre graba el CRC del fichero.

De momento para no modificar el fuente en C de harbour hasta plantearlo en la lista de desarrollo de harbour, lo he solucionado de otra forma.

Se pueden ver algunas imagenes en mi blog: http://javierlloris.blogspot.com.es/

Un saludo
JLL
Libreria: FWH/FWH1109 + Harbour 5.8.2 + Borland C++ 5.8.2
Editor de Recursos: PellecC
ADA, OURXDBU
S.O: XP / Win 7 /Win10
Blog: http://javierlloris.blogspot.com.es/
e-mail: javierllorisprogramador@gmail.com

Continue the discussion