PHP + RAR

cracking

wenas, teno una duda.. quisiera, en una pagina en php, hacer un funcion o lo que sea, que al llamarla me comprima un archivo en .rar que esta en el ftp de la web(esto mas o menos creo que se) pero que lo comprima con password? con una password q yo le de, para posteriormente descargar ese archivo comprimido y necesite esa password para descomprimirlo, ayuda :$?

BlisZ

http://es2.php.net/manual/en/book.rar.php

suerte xD

cracking

jum thx a ver si encuentro algo.. mientras tanto si alguien sabe alguna forma directamente... XD la agradeceria.. saludos

cracking

nada no me sirve ahi no viene nada..

BlisZ

pues que yo conozca eso es lo maximo que haras con archivos rar desde php

si no te importa usar zip si que hay algunas cosas mas completas

cracking

creo q no me importaria en zip.. y ueno, aunq no sean funciones propias de php, alomejor haciendo uso del exec y ejecutando comandos podria conseguir algo? nuse... esq tenia por ahi un script q hacia copia de la DB y la comprimia en gz, y de ahi me vino la idea.. igual q comprime en gz alomejor hay algo tb pa comprimir (creo q la extension no me importa, mientras no sea muy rara q no tenga nadie) pero poniendole pass.. nuse.. a ver si alguien sabe por donde van los tiros, thx

BlisZ

era una clase, externa a php, que trabajaba con ficheros zip directamente (a bajo nivel o como se diga), loque no se es si tiene lo de poner contraseñas, pero supongo que si

si me acuerdo mañana te digo la url, que no la recuerdo

cracking

oki thx pos mañana exo un vistazo, piro dormir, bye

minipelos

tambien puedes coger el archivo, lo metes en un temporal y con un shell_exec llamas al rar por linea de comandos. un poco bestia pero bueno :P

LOc0

#1 Si lo que quieres es comprimir con la librería ZLIB tienes de sobra. El tema de la contraseña desconozco exactamente por qué lo necesitas, pero si es para evitar que la gente comparta tus ficheros en otras webs, no tiene mucho sentido, porque ya ves tú lo que se tarda con los PCs de hoy día en recomprimir unos ficheros en ZIP, RAR o lo que sea. Si no es por eso, siempre puedes comprimir el fichero con ZLIB y luego cifrarlo con Rijndael-256 por ejemplo

http://es2.php.net/manual/es/ref.mcrypt.php

y habilitar en tu web una herramienta que dándole el archivo cifrado lo devuelva descifrado. Pero no deja de ser marear la perdiz...

Salu2 ;)

BlisZ

esto es lo que uso yo para zips, pero creo que no tiene para passwords asi que igual no te sirve

lo que podrias hacer es hacer que se descargue solo si estas logueado

cracking

thx a todos, la cosa de q necesite comprimirlo con contraseña es porq me lo han pedido asi.. la idea es que la web vende un software, y una vez marcado el pedido como pagado, tienes la opcion de descargartelo desde tu cuenta, pero claro, el software se actualiza cada X meses y esas actualizaciones hay que pagarlas, q es lo que pasa? pues que el software principal (sin las actualizaciones) siempre se vende actualizado, me explico, hoy sale la version 1 (por poner un ejemplo a ver si me entendeis) y si compras el programa pues te descargas la version 1, dentro de un mes, sale la actualizacion 1.5, q estará disponible para comprar y descargar por el usuario y actualizar su software, PERO a partir de ahora, quien compre el software, comprara la version mas reciente, osea la 1.5 (ya q sino todo el que compra el software tendria q comprar tooodas las actualizaciones, y no es cosa). el problema es que si averiguan la ruta de descarga del programa (muy facil) pues yo me compro la version 1 hoy, y dentro de dos meses, cuando haya salido la version 2, en lugar de comprar la actualizacion, pos si soy listo voy a la ruta de descarga y me bajo el programa version 2 actualizado sin pagar un duro.

me dijeron pues, que cada vez que lo fuesen a descargar lo comprima en caliente con una password diferente, asi aunq lo descarguen, necesitaran la password para ejecutarlo, y esa password solo la da el administrador previo pago. nose, es lo q me han pedido y esa es la explicacion q me han dado.. si alguien se le ocurre alguna otra manera.. ocultar la ruta de descarga.. o restringir de alguna forma la descarga..

tb pense en que cada vez q vayan a descargar el archivo haciendo click en la web (ese boton solo estara disponible cuando este pagado el articulo) pues mover el archivo a descargar por ftp a otro directorio temporal, q luego seria borrado y aunq entren en esa ruta, en esa ruta no habra nada, pero no me fula el ftp por algo q he comentado en otro post.. asi q nada

thx saludos

LOc0

#12

Para eso lo más fácil es que tengas en tu FTP un directorio protegido con todos los ficheros descargables y para poder bajarte alguno sea a través de un script en PHP rollo http://www.loquesea.com/descarga.php?id=x

Necesitas tener un sistema de usuarios donde cada cual tenga asignado un nivel de acceso que le permita bajar según qué archivos.

El código PHP para descargar un fichero:

<?
header("Content-type: application/octet-stream");
header("Content-Length: " . filesize($ruta_fichero));
header("Content-Disposition: attachment; filename=\"".basename($nombre_fichero)."\"\n");
@readfile($ruta_fichero);
/* A partir de aquí NO PONER NADA */
?>

Sistemas de usuarios tienes en Google a patadas y para proteger el directorio con los ficheros utiliza CHMOD 750 Esto te asegura que no podrán bajarse ningún fichero a través de la URL directa (no metas el script php en la carpeta protegida porque no sería accesible al público).

Salu2 ;)

PD: si no quieres tener un sistema de usuarios registrados, otra opción es que cada fichero tenga asociada una KEY que se pida en un formulario para poder descargarlo.

K

Joer, haz lo que dice L0c0 y usa lo que usan (en parte) megaupload, etc... Incluso que cada vez que das al link de descarga la 'x' de bajar.php?key=x sea diferente, asi no podrá reutilizarla.

cracking

muchas gracias, la verda q lo de "Incluso que cada vez que das al link de descarga la 'x' de bajar.php?key=x sea diferente, asi no podrá reutilizarla" me parece buena idea, junto con lo de l0c0, pero como hago q esa 'x' sea distinta cada vez? para q pa bajarte el archivo tenga q ser desde bajar.php?key=hola, y la proxima vez q vayas a bajar.php?key=hola no funcione y tenga q ser por ejemplo bajar.php?key=adios ? :$ thx

mañana probare.
y tb se me ha ocurrido como podria implementar eso q decia de a la hora de descargar q el fichero se copie en ./downloads/archivo.rar por ejemplo, y una vez descargado se borre, entonces la proxima vez q vayan a www.loqsea.com/downloads/archivo.rar no exisitira, lo q pasa q se me ocurrio hacerlo via ftp y no supe alfinal como, pero creo q usando copy() pa copiar de mi directorio privado al publico, y luego @unlink() para borrarlo del publico, puede q lo consiga, nose mañana lo miro, la cosa seria saber cuando la descarga finaliza :/ pa no borrarlo antes... weno ya vere, gracias por todo, saludos

LOc0

Si es que no tienes por qué liarte con conexiones por FTP, copiar o mover ficheros. Con tener un directorio downloads con acceso CHMOD 750 donde tengas todos los ficheros descargables y en el directorio principal un script descarga.php te vale. A parte tendrás que tener 2 tablas en la base de datos:

Tabla descargas:

id|nombre_fichero

Tabla ficheros:

nombre_fichero|key

Ejemplo:

Tabla descargas:

1|prueba_1.rar
2|prueba_2.rar

Tabla ficheros:

prueba_1.rar|7174hjhgds
prueba_1.rar|dl273bj138
prueba_1.rar|073981263
prueba_2.rar|172398783

(Puede haber más de una key por fichero, ya que clientes distintos pueden querer bajarse el mismo fichero al mismo tiempo).

Funcionamiento del invento:

Cuando el usuario quiera descargar el fichero, añades una entrada en la tabla ficheros con una KEY generada en el momento de forma aleatoria y le muestras el enlace para que se baje el fichero:

http://loquesea.com/descarga.php?id=1&key=7174hjhgds

El script comprobará si existe alguna descarga en la tabla descargas con esa id y si es así leerá el nombre del fichero y se irá a la tabla de ficheros para ver si además concuerda la key dada con alguna de las grabadas en dicha tabla.

Si es así, borras de la tabla de ficheros la KEY usada y le envías el fichero con el trozo de código php que te puse antes.

Fíjate que en ningún momento muestras la URL directa al fichero (a parte de que aunque el usuario consiguiera adivinarla no le serviría de nada ya que el directorio con CHMOD 750 no es accesible desde fuera).

Es bastante sencillo, la verdad.

Salu2 ;)

cracking

la verda es q si, es bastante sencillo, y algo asi con claves q se generaran, se comprobaran, y se borraran en la BD taba pensando anoche en la cama jaja, pero nunca habia hecho algo asi y la primera vez cuesta pensarlo.. supongo.. jaja, thx, intentare implementarlo^^ thx por todo

cracking

pues muchas gracias, ya lo he conseguido, y queda bastante mejor q lo q yo queria hacer, muchas gracias, hasta otra duda^^ :D

Usuarios habituales

  • cracking
  • LOc0
  • KinderBueno
  • BlisZ
  • minipelos