Discussion:
Zip
(trop ancien pour répondre)
Kloug
2008-11-01 16:56:02 UTC
Permalink
Bonjour,
Y a t il un moyen de protéger un fichier
compressé par un mot de passe ?
Merci de vos pistes
K
Chris Hamza
2008-11-01 23:26:38 UTC
Permalink
Oui bien sûr .
à l'aide de winrar
"ajouter aux archives " ==> choisir l'onglet " avancé " ==>
et ensuite cliquer sur le bouton ==> " Définir le mot de passe "
c'est assez simple
Kloug
2008-11-02 21:18:18 UTC
Permalink
Post by Chris Hamza
à l'aide de winrar
Oui mais en Php ?
Merci
K
Sylvain SF
2008-11-02 23:55:11 UTC
Permalink
Post by Kloug
Post by Chris Hamza
à l'aide de winrar
Oui mais en Php ?
pour chiffrer des données:

mcrypt_decrypt()
mcrypt_encrypt()
ou
mcrypt_generic[_xxxx]()

pour chiffrer en fichier en sortie:

$fp = fopen('out.bin', 'wb');
stream_filter_append($fp, $algo, STREAM_FILTER_WRITE, $opts);
fwrite($fp, $someStuff);
fclose($fp);

avec $algo le nom de l'algo (eg 'mcrypt.tripledes')
et $opts la clé et un ICV optionnel.

Sylvain.
Mickael Wolff
2008-11-03 08:06:54 UTC
Permalink
Post by Sylvain SF
mcrypt_decrypt()
mcrypt_encrypt()
ou
mcrypt_generic[_xxxx]()
C'est compatible avec le « standard » Zip ? Parce que j'ai essayé
quelque chose, mais ce n'est pas très concluant :

== 8< === exzip.php ==
<?php

$zip = new ZipArchive ;

$ret = $zip->open('toto.zip', ZipArchive::CREATE) ;

$content =<<<EOS
<?xml version='1.0'?>
<toto>
<blague />
</toto>
EOS;

$zip->addFromString('toto.xml', $content) ;

$cipher = mcrypt_module_open('des', null, 'ecb', null) ;
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($cipher), MCRYPT_RAND);
mcrypt_generic_init($cipher, 'totoro', $iv) ;
$crypted = mcrypt_generic($cipher, $content) ;
mcrypt_module_close($cipher) ;

$zip->addFromString('toto.sxml', $crypted) ;
$crypted = null ;

$zip->close() ;
== 8< === exzip.php ==

Lorsqu'on ouvre l'archive, il n'y a pas la demande de mot de passe.
Je pense qu'il faut créer un en-tête Zip spécifique pour le fichier
crypté. Et j'ai pas envie de fouiller
http://www.pkware.com/documents/casestudies/APPNOTE.TXT pour trouver
comment ;) Mais à ce que j'ai compris, les outils nécessaires pour faire
un zip « protégé » comme il faut, il n'y a pas la fonctionnalité qui va
bien.
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Sylvain SF
2008-11-03 20:33:09 UTC
Permalink
Post by Mickael Wolff
Post by Sylvain SF
mcrypt_decrypt()
mcrypt_encrypt()
ou
mcrypt_generic[_xxxx]()
C'est compatible avec le « standard » Zip ? Parce que j'ai essayé
quelque chose, mais ce n'est pas très concluant
non cela ne l'est pas - heureusement.

comme tu l'as indiqué les mots de passe ZIP sont cassés en qlq heures,
ils n'ont donc aucun intérêt, la crypto. ordinaire fournie par PHP est
bien plus robuste; si le but est de chiffrer pour confidentialité et
zipper pour gain de volume, on zippera, puis on chiffrera l'archive,
l'inverse à la réception; si le but est de faire semblant de protégér
un ZIP devant être traité avec un seul unzippeur, il est inutile de
se mentir.

Sylvain.

Mickael Wolff
2008-11-02 21:18:18 UTC
Permalink
Post by Chris Hamza
Oui bien sûr .
à l'aide de winrar
Je ne sais pas si tu as remarqué, mais ici, c'est fr.comp.lang.php et
non microsoft.public.fr.windowsxp.debutants.

En tout cas, les API disponibles dans PHP ne permettent pas de
définir un mot de passe. C'est certainement parce qu'il est vain de
vouloir utiliser un mot de passe pour un zip : c'est craqué en quelques
minutes avec de la chance, en quelques heures dans le cas contraire.
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Continuer la lecture sur narkive:
Loading...