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

Python Discussion :

regénérer un fichier pdf


Sujet :

Python

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2011
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 19
    Points : 9
    Points
    9
    Par défaut regénérer un fichier pdf
    Bonjour, j'aurais besoin d'un "autre" coup de main
    Je n'arrive pas a regénérer les pdf dans leur forme initiale. Voila ma manipulation : j'ouvre le fichier en "rb" je le lis et enregistre le tout dans un fichier txt.
    C'est la qu'apparaît mon soucis : lorsque je veux le regénérer, je "remets" tout ce que j'ai lu dans un fichier pdf (en "wb") et je l'enregistre.

    Ca marche pour certains pdf mais pas tous... Quelqu'un aurait-il une solution?

    Merci

    Ps : j'ai posté un autre sujet qui recoit beaucoup de visites mais pas une seule réponse! Si vous pouviez jeter un coup d'oeil
    http://www.developpez.net/forums/d11...crypto-cipher/

  2. #2
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    Bonjour,

    La description de ce que tu fais n'est pas très claire.
    Ca copie dans un sens, ça recopie dans l'autre, ... j'en oublie peut-être. On y verrait mieux si tu postais ton code (pas 200 lignes mais en extrayant ces opérations de copie).

    Si j'ai bien compris ce que tu veux faire et le problème rencontré, ça ne doit pas être grand chose, un point de détail, d'où l'importance de mettre le code
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

  3. #3
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    En y repensant, ne serais-tu pas en train d'essayer de :
    • lire le pdf
    • écrire son contenu dans un fichier "texte"
    • modifier le fichier "texte" (avec un éditeur par exemple)
    • lire le fichier "texte"
    • le réécrire en "pdf" avec les modifications apportées


    En tout cas, tu fais bien "quelque chose" avec ce fichier intermédiaire "texte", non ?
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

  4. #4
    Futur Membre du Club
    Inscrit en
    Juillet 2011
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    j'ai trouvé mon problème

    et ce que tu as mis dans ton 2èm post c'est exactement ca : je rajoute quelque chose dans le txt puis je l'enlève sauf que visiblement je n'enlevais pas tout et/ou pas les bonnes choses... et par un pur hasard ca fonctionnait avec l'un des pdf que j'avais...

    par contre, y aurait-il un module pour faire la meme chose mais avec un .doc .xls au final?

    merci

  5. #5
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    Ca y est. Je pense avoir "raccroché les wagons" avec ton autre post sur le chiffrement.

    L'étape où tu passes par un fichier "texte" est inutile. D'ailleurs, le fait de lire le pdf (binaire, avec un 'rb' dans le open) et de le réécrire avec un 'w', sans le 'b', dans le open, ne t'en fait pas un vrai fichier texte, par magie.

    Les méthodes "encrypt" et "decrypt" de Pycrypto ne s'appliquent pas seulement à du texte "compréhensible" et quand, dans la doc, ça parle de "string" il faut comprendre chaine au sens large (et donc séquence d'octets).

    Tu peux donc charger ton pdf, ajouter des octets de bourrage si nécessaire avant de crypter (je suppose que les modifications que tu faisais, c'était ça "ValueError: Input strings must be a multiple of 16 in length", message d'une exception pycrypto).

    Au "retour", après le déchiffrage, tu enlèves si besoin ces octets de bourrage et tu récupères ton pdf dans son état inital. Et basta !

    Du coup, si tu comprends ça, ta deuxième question tombe d'elle-même : ton outil de chiffrage/déchiffrage n'a pas à prendre en compte tel ou tel format (xls, doc, etc...). Et heureusement, sinon, "t'es pas rendu" ...
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

  6. #6
    Futur Membre du Club
    Inscrit en
    Juillet 2011
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    le problème du multiple de 16 est réglé depuis longtemps ^^

    en fait pour tout ce qui est word et autres, lorsque j'essaye d'ouvrir le fichier dechiffré, je recois une erreur comme quoi le fichier n'a pas la bonne extension.

  7. #7
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    le problème du multiple de 16 est réglé depuis longtemps ^^
    alors en quoi consiste les modifications que tu fais ?

    Et pour le reste, le chiffrage/déchiffrage via pycrypto se contrefiche de la nature de ton fichier. Si tu as un problème d'extension, c'est ailleurs qu'il faut chercher.

    Avec le code, ce serait plus simple de suivre et de t'aider ...
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

  8. #8
    Futur Membre du Club
    Inscrit en
    Juillet 2011
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    j'ajoute au début du fichier chiffré l'extension du fichier d'origine pour pouvoir bloquer l'utilisateur s'il essaye de déchiffrer le fichier dans une autre extension que celle d'origine (par exemple il connait pas l'extension du fichier de base)

    voila ce que j'utilise pour créer les fichiers :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    try:
        import Tkinter as Tk
    except:
        import tkinter as Tk
    import os, re, sys, Tix
    import tkFileDialog as Selector
     
    def OnButton_Parcourir(self, value):
    		result = Selector.asksaveasfilename(title='Enregistrer')
    		value.set(result)
    edit : j'avais oublié de mettre les imports

  9. #9
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    Avec ou sans les imports, ça n'aide pas.
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

  10. #10
    Futur Membre du Club
    Inscrit en
    Juillet 2011
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    voila mon code pour chiffrer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
    from Crypto.Cipher import AES
    import re
     
    # type de cryptage
    mode = AES.MODE_CBC
     
    def extension(text):
    	ext = re.compile(r"(.[a-zA-Z0-9]+)$")
    	if ext.search(text):
    		return ext.search(text).group(0)	
     
    def FonctionCrypteurAES(fichiernoncrypt,fichiercryptAES,fichiercleAES):
    	# definition des chemin du fichier a crypter et de la clé
    	fichier = fichiernoncrypt
    	fichier_code = fichiercryptAES
    	fichier_cle = fichiercleAES
    	exten = extension(fichiernoncrypt)
     
    	# vidage du fichier crypté
    	fichier_coder = open(fichier_code,"wb")
    	fichier_coder.close()
     
    	# lecture du fichier a crypter
    	handler = open(str(fichier),"rb")
    	a_coder = handler.read()
     
    	# remplissage du fichier s'il n'est pas proportionnel a 16
    	if (len(a_coder) % 16) != 0:
    		n = 16 - (len(a_coder) % 16)
    		N = n + 16
    		for i in range(0, N):
    			a_coder += '\0'
     
    	# lecture du fichier clé
    	cle = open(str(fichier_cle),"rb")
    	key = cle.read()
     
    	# création fonction codage et decryptage
    	coder = AES.new(str(key), mode)
     
    	# cryptage et decryptage du fichier
    	motcrypte = coder.encrypt(str(a_coder))
     
    	# enregistrement fichier crypté
    	fichier_coder = open(str(fichier_code),"wb+")
    	fichier_coder.write(str(exten)+"\n")
    	fichier_coder.write(motcrypte)
    	fichier_coder.close()
    et celui pour déchiffrer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
    from Crypto.Cipher import AES
    import re
    import os
     
    # type de cryptage
    mode = AES.MODE_CBC
     
    def fin_ligne(text):
    	fin = re.compile(r"(.[a-zA-Z0-9]+){1}[\n\r]{1,2}")
    	if fin.search(text):
    		return fin.search(text).group(0)
     
    def FonctionDecrypteurAES(fichiercryptAES,fichierdecryptAES,fichiercleAES):
    	# definition des chemin du fichier a crypter et de la clé
    	fichier = fichierdecryptAES
    	fichier_code = fichiercryptAES
    	fichier_cle = fichiercleAES
     
    	fichier_decrypt = open(fichier,"wb")
    	fichier_decrypt.close()
     
    	handler2 = open(str(fichier_code),"rb")
    	a_decoder = handler2.read()
    	handler2.close()
     
    	fin = str(fin_ligne(a_decoder))
     
    	a_decoder2 = a_decoder.replace(str(fin),"")
     
    	# lecture du fichier clé
    	cle = open(str(fichier_cle),"rb")
    	key = cle.read()
     
    	# création fonction codage et decryptage
    	decoder = AES.new(str(key), mode)
     
    	# decryptage du fichier
    	motdecrypte = decoder.decrypt(str(a_decoder2))
     
    	# on retire les espaces rajoutés a la fin pendant le cryptage
    	space = re.compile(r"[\0]{17,31}$")
     
    	if space.search(str(motdecrypte)) :
    		inter = space.search(str(motdecrypte)).group(0)
    		motdecrypte = motdecrypte.replace(str(inter),'')
     
    	# enregistrement du fichier décrypté
    	fichier_decrypt = open(str(fichier),"wb+")
    	fichier_decrypt.write(motdecrypte)
    	fichier_decrypt.close()
    et le seul morceau de code utile de mon interface c'est celui que je t'ai mis.

  11. #11
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    J'ai regardé en diagonale et je me demande si ton problème ne vient pas de ta gestion des caractères de bourrage : tu utilises le '\0' comme ... Word et Excel . Alors que les PDF se terminent avec "%%EOF\n", sans caractère de bourrage particulier.

    (*j'ai regardé différents fichiers Word et Excel : leurs tailles sont toutes multiples de 512 et c'est le '\0' qui sert de caractère de bourrage)

    Du coup, quand tu les enlèves (les '\0') après déchiffrement, il ne serait pas étonnant que tu "mordes" sur le fichier lui-même ...

    J'ai repris ton code pour faire une fonction "bourrage" et une fonction "débourrage" en prenant comme caractère de bourrage '@' pour que ce soit visible

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    >>> def debourrage(motdecrypte):
    ...     space = re.compile(r"[@]{17,31}$")
    ...     if space.search(str(motdecrypte)) :
    ...             inter = space.search(str(motdecrypte)).group(0)
    ...             motdecrypte = motdecrypte.replace(str(inter),'')
    ...     return motdecrypte
    ... 
    >>> def bourrage(a_coder):
    ...     if (len(a_coder) % 16) != 0:
    ...             n = 16 - (len(a_coder) % 16)
    ...             N = n + 16
    ...             for i in range(0, N):
    ...                     a_coder += '@'
    ...     return a_coder
    et en testant (partie utile, un '-' complété par un ou plusieurs '@', en allant à plus de 2*32 (tu complètes à 32 et pas à 16) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    >>> for i in range(1,66):
    ...     chaine = '-'+'@'*i
    ...     aller  = bourrage(chaine)
    ...     retour = debourrage(aller)
    ...     print '%2d car. : ' % i, chaine, '==' if chaine == retour else '!=', retour
    ... 
     1 car. :  -@ != -
     2 car. :  -@@ != -
     3 car. :  -@@@ != -
     4 car. :  -@@@@ != -
     5 car. :  -@@@@@ != -
     6 car. :  -@@@@@@ != -
     7 car. :  -@@@@@@@ != -
     8 car. :  -@@@@@@@@ != -
     9 car. :  -@@@@@@@@@ != -
    10 car. :  -@@@@@@@@@@ != -
    11 car. :  -@@@@@@@@@@@ != -
    12 car. :  -@@@@@@@@@@@@ != -
    13 car. :  -@@@@@@@@@@@@@ != -
    14 car. :  -@@@@@@@@@@@@@@ != -
    15 car. :  -@@@@@@@@@@@@@@@ == -@@@@@@@@@@@@@@@
    16 car. :  -@@@@@@@@@@@@@@@@ == -@@@@@@@@@@@@@@@@
    17 car. :  -@@@@@@@@@@@@@@@@@ != -@@@@@@@@@@@@@@@@
    18 car. :  -@@@@@@@@@@@@@@@@@@ != -@@@@@@@@@@@@@@@@
    19 car. :  -@@@@@@@@@@@@@@@@@@@ != -@@@@@@@@@@@@@@@@
    20 car. :  -@@@@@@@@@@@@@@@@@@@@ != -@@@@@@@@@@@@@@@@
    21 car. :  -@@@@@@@@@@@@@@@@@@@@@ != -@@@@@@@@@@@@@@@@
    22 car. :  -@@@@@@@@@@@@@@@@@@@@@@ != -@@@@@@@@@@@@@@@@
    23 car. :  -@@@@@@@@@@@@@@@@@@@@@@@ != -@@@@@@@@@@@@@@@@
    24 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@ != -@@@@@@@@@@@@@@@@
    25 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@ != -@@@@@@@@@@@@@@@@
    26 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@@@@@@@@@@@@@@@@
    27 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@@@@@@@@@@@@@@@@
    28 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@@@@@@@@@@@@@@@@
    29 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@@@@@@@@@@@@@@@@
    30 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@@@@@@@@@@@@@@@@
    31 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -
    32 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@
    33 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@
    34 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@
    35 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@
    36 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@
    37 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@
    38 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@
    39 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@
    40 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@
    41 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@
    42 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@
    43 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@
    44 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@
    45 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@
    46 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@
    47 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@@@@@@@@@@@@@@@@
    48 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@@@@@@@@@@@@@@@@@
    49 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@@@@@@@@@@@@@@@@@
    50 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@@@@@@@@@@@@@@@@@
    51 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@@@@@@@@@@@@@@@@@
    52 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@@@@@@@@@@@@@@@@@
    53 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@@@@@@@@@@@@@@@@@
    54 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@@@@@@@@@@@@@@@@@
    55 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@@@@@@@@@@@@@@@@@
    56 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@@@@@@@@@@@@@@@@@
    57 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@@@@@@@@@@@@@@@@@
    58 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@@@@@@@@@@@@@@@@@
    59 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@@@@@@@@@@@@@@@@@
    60 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@@@@@@@@@@@@@@@@@
    61 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@@@@@@@@@@@@@@@@@
    62 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@@@@@@@@@@@@@@@@@
    63 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@
    64 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@@
    65 car. :  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ != -@@
    Quitte à aller inclure dans le fichier crypté l'extension, pourquoi ne pas y mettre aussi la vraie taille, hors caractère de bourrage ? Au déchiffrement, tu n'aurais pas à faire cette gymnastique (qui ne marche visiblement pas d'ailleurs). Il me semble (sur 1 seul essai) que le cryptage ne change pas la taille de la "chaine" chiffrée ça n'a aucune importance.
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

  12. #12
    Futur Membre du Club
    Inscrit en
    Juillet 2011
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    ton idée de rajouter le nombre de caractères rajouté m'a bien aidé!

    et pour le coup tout fonctionne parfaitement! merci

  13. #13
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    Autre possibilité : si on ne veut pas rajouter en début de fichier des infos comme le nombre de caractères de bourrage (ou la taille du fichier non chiffré), on peut aussi décider que :

    1 - on déterminera dynamiquement le caractère de bourrage en le choisissant dans une liste de 2 caractères ('\0' et espace par exemple) et différent du dernier caractère du fichier que l'on chiffre (pour les .doc et .xls, ce sera donc un espace, pour les .pdf, l'un ou l'autre, peu importe),

    2 - on ajoutera toujours au moins un caractère de bourrage (entre 1 et 16 et non pas entre 0 et 15)

    Après déchiffrement, on supprime le ou les caractères identiques à la fin du fichier et on récupère le fichier dans son état initial.


    (spécial dédicace PauseKawa) C'est pas vendredi, mais je ne resiste pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    >>> avec="abcdef\0"
    >>> avec
    'abcdef\x00'
    >>> sans=avec[:-len(re.compile("[%s]+$"%avec[-1]).search(avec).group(0))]
    >>> sans
    'abcdef'
    >>> 
    >>> 
    >>> avec="abcdef\0\0\0"
    >>> avec
    'abcdef\x00\x00\x00'
    >>> sans=avec[:-len(re.compile("[%s]+$"%avec[-1]).search(avec).group(0))]
    >>> sans
    'abcdef'
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

  14. #14
    Membre éprouvé

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Points : 1 273
    Points
    1 273
    Par défaut
    hem… Et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> avec = "test\0\0\0"
    >>> avec
    'test\x00\x00\x00'
    >>> sans = avec.rstrip(avec[-1])
    >>> sans
    'test'
    … Non*?

    Parce que là, les regex, pour le coup, c’est la bombe H pour venir à bout d’un moustique…

    (Mais j’ai peut-être loupé un épisode…)

  15. #15
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    Oui, bien sur. J'aurais fini par le mettre, le forum étant aussi là pour permettre aux débutants d'apprendre.

    Là, c'était le concours du vendredi (ou presque) "pourquoi faire simple ..." que je fais de temps en temps avec PauseKawa (d'où la dédicace)
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

  16. #16
    Membre éprouvé

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Points : 1 273
    Points
    1 273
    Par défaut
    Ah ok, c’est bien ce qu’il me semblait, j’avais loupé un épisode*!

  17. #17
    Futur Membre du Club
    Inscrit en
    Juillet 2011
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    salut, je reviens un coup a la charge ^^ pas de problème pour les doc, xls... mais ca ne fonctionne pas pour les x : docx, xlsx,...

    une idée ?

    merci

  18. #18
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    Ne te focalise pas sur tel ou tel type de fichier. Je ne suis (vraiment) pas un expert en chiffrement mais je ne pense pas me tromper en disant que ces outils se fichent éperdument du type du fichier : ils prennent des buffers d'octets, éventuellement en imposant qu'ils aient une taille multiple de quelque chose (ici 16), et puis c'est tout !

    Si ça coince, essaye de t'extraire du contexte IHM qui rajoute du bruit dans la boucle et écris des "petites" fonctions que tu pourras alors tester unitairement (ton ajout de caractères pour atteindre un multiple de 16 et l'opération inverse étaient "noyés" dans du code plus général d'où l'impossibilité de le tester (cf mes fonctions "bourrage" et "debourrage"))

    Une fois que tu auras validé ces aspects, tu reprends ton appli, avec IHM, et si ça coince toujours, tu sais où chercher.
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

  19. #19
    Futur Membre du Club
    Inscrit en
    Juillet 2011
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    bonjour, désolé du retard pour la réponse.

    alors la je dois avouer que tu m'as perdu dans ton explication :s

    en gros je prends un fichier qui contient 16 caractères pour voir si ca provient du bourrage ou non?

    mais ca serait étonnant que ca vienne de ca puisque je sais combien de fois le caractères de bourrage apparait et que ca marche pour une grande partie de mes fichiers sauf les docx xlsx... j'ai testé wav, pdf, doc, xls, txt, zip et ils n'avaient pas un nombre de caractères proportionnel à 16.

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

Discussions similaires

  1. Creation de fichier PDF
    Par Faith's Fall dans le forum Autres Logiciels
    Réponses: 8
    Dernier message: 26/08/2009, 19h05
  2. [C#] Authentification sur les fichiers Pdf
    Par ensisoft dans le forum ASP.NET
    Réponses: 14
    Dernier message: 04/05/2004, 12h10
  3. Streaming fichier PDF
    Par rgarnier dans le forum XMLRAD
    Réponses: 4
    Dernier message: 22/05/2003, 22h14
  4. [XMLRAD] Fichier PDF
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 2
    Dernier message: 09/01/2003, 10h19

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