Otro día y otro tutorial
En este caso se hablará del REFLATE, que principalmente es para trabajar con compresiones ZLIB/DEFLATE/ZIP
MINI-FAQ:
=======
P-¿Si ya uso el pZzlib tengo de usar este?
R-No, con el pZlib ya vas bien
P-¿Que diferéncias hay entre este y el pZlib?
R-P7zlib se ayuda de usar las librerias de REFLATE en caso de que no consiga extrar los datos adecuadamente
P-¿Y que pasa con precomp?
R-Llevo con ese programa desde sus inicios, su autor decidió de abrir el código lo cual para mi y cualquier otro que le guste trastear y hacer modificaciones o ver como funciona es ideal, si bien está algo verde en algunas cosas, el cual REFLATE lo supera
P-¿Cuando tengo de usar reflate o precomp?
R-Por norma general si ves que con precomp te da malos resultados prueba con REFLATE, si eres vago y pasas de hacer tests usa directamente REFLATE o pZlib (recomendando este último).
P-Vale ¿pero que recomiendas?
R-Ya lo he dicho, creo, pZlib con parámetros de REFLATE
Vamos a examinar el programa
Una vez descargado (está adjunto) veremos que hay varios .exe y .bat
254,464 nz.exe
71,680 raw2hif.exe
25,600 rawdet.exe
4,096 rawrest.exe
528 reflate_c.bat
22,528 reflate_c.exe
303 reflate_d.bat
22,528 reflate_d.exe
nz= nanozip
raw2hif =convierte los raw a hif previamente los descomprime, los hif son "parches" (como xdelta) para cuando se restauran lso datos sean 100% igual al original, depende de lo complejo que sea el fichero el .hif será más grande o no.
rawdet = Detector de compresiones del .raw (ficheros comprimidos)
rawrest = Para "restaurar" los datos
Después tenemos los .bat que tienen variables para comprimir y descomprimir (véase la letra c y d)
Ahora vamos a modificar el .bat para descomprimir ficheros
ORIGINAL
VERSION MODIFICADA que nos ahorra de usar el nanozip (recomiendo usar este código y guardarlo como .bat)
Os explico por encima que hace este .bat
if not (%level%)==() set level=6 => Variable para nivel de compresión, por defecto es 6, ya va bien así, si quremos mejorarla le podemos poner hasta level 9
rawdet %1 temp\.out temp\.str temp\ => Detecta y extrae fichero raw en un directorio tempora, el fichero .out son los datos no extraidos
for %%a in (temp\*.raw) do (
raw2hif c%level% %%a temp\%%~na.unp temp\%%~na.hif
=> Cada %%a es un .raw, el comando seria, cada .raw que encuentres llama al programa raw2hif con el nivel de compresión, descomprimelo a .unp y haz un parche diferencial .hif
Para que quede más claro
raw2hif c6 fichero.raw temp\fichero.unp temp\fichero.hif
Para ejecutar el .bat
reflate_c.bat datos.zip
Asi seria a grandes rasgos como extrae los datos, para recuperarlo ya directament os pongo una utilidad que hizo KPS que solo se ha de ejecutar donde estén los datos extraidos, que se llama hif2raw, es necesario que tengas los ficheros raw2hif.exe y rawrest.exe para que funcione, principalmente es un contador y usa el nivel de compresión 6
Para más info os podeis dirigir al autor del REFLATE
https://encode.su/threads/1399-reflate-a-new-universal-deflate-recompressor/page1