IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Comment dézipper un fichier protégé par un mot de passe en Perl.


Sujet :

Langage Perl

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Comment dézipper un fichier protégé par un mot de passe en Perl.
    Bonjour

    Je ne parviens pas à trouver comment faire une action qui peut paraitre simple, mais étant débutant en Unix et Perl, je viens requérir votre aide.

    Je suis en train de faire un programme en perl avec Eclipse sous un environnement Windows qui sera migrer via cvs sur un machine qui elle sera sous un environnement Unix (sinon ce ne serait pas drôle).

    Une partie de ce programme consiste à dé-zipper un fichier *.zip protéger par un mot de passe.

    J’ai pensé tous d’abord à faire appelle à la commande magique "system" en faisant comme suite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system "unzip –P <password> <fichier a dézipper>";
    J’imagine que c’est le fait que j’exécute mon script sous Windows que j’ai le message suivant qui s’affiche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'unzip' n'est pas reconnu en tant que commande interne
    ou externe, un programme exécutable ou un fichier de commandes.
    Du coup j’ai tenté de faire la même chose mais en perl, et j’ai fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #création d'un objet Zip
    my $zipFile = Archive::Zip->new();
    #Lecture du fichier Zip
    my $status = $zipFile->read(<fichier zip d’origine>);
    if($status == 0)
    {
    	my $tree = $zipFile->extractTree('',<destination des fichier dézippé>);
    }
    Ce qui fonctionne super bien avec un fichier Zippé non protéger par un mot de passe, mais je ne trouve pas comment faire pour adapter ce code à un fichier protéger.

    Je n’ai pas trouvé l’info sur CPAN, mais j’avais peut être pas les yeux en face des trous

    Quelqu’un aurait-t-il déjà été confronté à ce cas de figure ?

    Merci d’avance

  2. #2
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 607
    Points : 794
    Points
    794
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'unzip' n'est pas reconnu en tant que commande interne
    ou externe, un programme exécutable ou un fichier de commandes.
    Ca c'est juste un problème de path à gérer pour exécuter la commande.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #création d'un objet Zip
    my $zipFile = Archive::Zip->new();
    #Lecture du fichier Zip
    my $status = $zipFile->read(<fichier zip d’origine>);
    if($status == 0)
    {
    	my $tree = $zipFile->extractTree('',<destination des fichier dézippé>);
    }
    Bonne idée, mais effectivement je n'ai pas vu non plus la gestion des passwords. Je crois même que l'auteur du module ne voulait pas y regarder (si j'ai bien compris sa réponse dans la FAQ). Il va donc falloir repartir sur la commande system (`` marche bien aussi, perso je préfère).

    @+
    Mr6

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Ok je vais pleurer dans mon coin, et me faire à l’idée que je ne peux pas tous faire en perl puis je vais me faire un petit bash qui dézippera comme il faut et qui exécutera mon script Perl pour le reste.
    Merci beaucoup.

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    pourquoi un bash ?
    Tu peux lancer ta commande sytème en Perl !!

  5. #5
    Candidat au Club
    Inscrit en
    Mai 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Oui c’est sur, mais je viens d’apprendre que dans mon projet il y aura plusieurs fichiers à dézipper à plusieurs endroit, donc je pense que je vais centraliser tout les dézipage puis je lancerai mes script, une fois pour toute.
    Mais je garde cette idée dans un coin.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 14
    Dernier message: 31/05/2017, 12h26
  2. [XL-2010] Connection a un fichier Access protégé par un mot de passe
    Par fusee2013 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/08/2013, 03h36
  3. [AC-2007] Ouvrir fichier XLS protégé par un mot de passe
    Par docleka dans le forum VBA Access
    Réponses: 3
    Dernier message: 19/09/2012, 12h49
  4. [FPDI] Savoir si un fichier PDF est chiffré ou protégé par un mot de passe
    Par Chikh001 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 01/09/2009, 10h13
  5. Réponses: 8
    Dernier message: 12/11/2007, 12h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo