Comprimir directorios completos de tu sitio web

Iniciado por arthusu, Marzo 16, 2015, 02:39:33 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Buenas hoy estaba escuchando musica y luego un amigo (NoVaTo) me hablo por Skype diciendome que si tenia algun script o shell que comprimiera toda la pagina web para bajarsela, entonces como no tenia me puse a buscar como hacerlo uno a mi manera... hasta que al final di con bola... pues nada mas les dejo el script par aque lo usen cuando quieran:

Código: php
 <?php
// Si son demasiados archivos colocamos el tiempo limite en 0 (sin limite)
set_time_limit(0);
/*
  @autor : Arthusu
  @fecha : 15/03/2015
  @descripcion : Compresor de todos los archivos del directorio
  @archivo : compresor.php
*/

// definimos las variables (las podemos modificar segun sea nuestro caso)
$nombre_del_archivo_comprimido = "comprimido.zip"; // el nombre del archivo a generar
$ruta_relativa = ""; // el directorio que nos encontremos. Ejemplo: images/algo/ para generar un link correcto

if(phpversion() >= "5.2.0"){ // verificamos que contengan la version correcta para crear archivos zip
  $zip = new ZipArchive(); // Creamos un nuevo objeto
  if($zip->open($nombre_del_archivo_comprimido,ZIPARCHIVE::CREATE) === TRUE){ // creamos un archivo
   $iterator = new RecursiveDirectoryIterator(__DIR__); // recorremos el directorio
   $recursiveIterator = new RecursiveIteratorIterator($iterator); // recorremos los directorios dentro de otros directorios y asi sucesivamente

   foreach($recursiveIterator as $entry){ // recorremos los archivos
     if(is_file($entry->getRealPath())){ // verificamos que sea archivo
      // debug
      //echo $entry->getRealPath()."\n";
         $zip->addFile($entry->getRealPath()); // lo agregamos al zip
        }
   }
   // mostramos un enlace con los archivos
   echo $zip->numFiles .' archivos comprimidos: <a href="http://'.strip_tags($_SERVER["HTTP_HOST"]. "/" . $ruta_relativa . $nombre_del_archivo_comprimido).'">Descargar Archivo</a>';
  }else{
   // si no se crea el archivo mostramos el error
   echo "Ha ocurrido un error: ".$zip->getStatusString();
  }
  // cerramos el archivo zip
  $zip->close();
}else{
  // si la version no es correcta mostramos un mensaje
  echo "Su version de PHP debe ser 5.2.0 o superior";
}
?>


El uso es bastante facil.

1.- Subir el archivo a la carpeta que quieras comprimir
2.- Ejecutar el archivo en la url: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
3.- Te generara un link donde descargar el archivo

Hay dos variables que puedes modificar dentro del archivo:

$ruta_relativa - Esta variable la modificas en caso de que te encuentres en una ruta relativa en alguna carpeta de la web, ejemplo: jquery/imagenes/, con eso nos generaria un link como el siguiente:  You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

$nombre_del_archivo_comprimido - Aqui puedes especificar el nombre del archivo resultante

Nota: Otra cosa a tomar en cuenta es que el script tarda dependiendo de que tantos archivos tenga que guardar o recorrer, puede tardar varios minutos dependiendo de que tantos archivos contenga tu sitio.

Y bueno eso es todo espero que la herramienta les sea de utilidad.
Pentest - Hacking & Security Services

Contact me: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Muchas gracias por el Script, nunca es malo tener algo así a la mano especialmente cuando se trabaja con algun CMS.

Saludos!
Nivel 77 You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Primero muchas gracias por el aporte.

Funciona muy bien el script, mi pregunta es si cuando lo guardamos en el zip comprimido puedo guardar los directorios y archivos de las carpetas que le indique y no que me guarde toda la ruta absoluta. Por ejemplo si quiero comprimir la carpeta /images/* que en el zip me aparezca esa carpeta y su contenido y no toda la ruta relativa :C:\..\...\..\images\*

Gracias.