Partage
  • Partager sur Facebook
  • Partager sur Twitter

Lecture de 4 octets

    22 juillet 2021 à 6:58:56

    Bonjour @ tous,

    Me revoilà avec mes octets :lol:

    Cette fois ci je cherche à lire 4 octets à un endroit bien précis du dump et les afficher en texte.

    J'ai essayé ceci:

    print('Choisissez le fichier à modifier. (Vous pouvez glisser/déposer votre fichier dans cette fenetre.)')
    fichier = input()
    file = open (fichier,'rb')
    file.seek(138)
    file.read(len(4))
    data = file.read
    print(data)
    pin = open ("Votre PIN", 'x')
    pin.write(data)
    file.close

    Problème cela me retour :

    TypeError: object of type 'int' has no len()

    De ce que j'en comprends c'est que je ne peux pas donner le longueur dans ma ligne file.read. 

    Merci par avance pour votre aide.

    Jon.

    EDIT: umfred, j'ai voulu répondre sur mon ancien sujet pour te prévenir que le problème était réglé avec un autre code mais je n'ai pas pu alors j'ai éditer mon message et mis le code qui va bien ;)

    -
    Edité par JonDra 22 juillet 2021 à 7:04:04

    • Partager sur Facebook
    • Partager sur Twitter
      22 juillet 2021 à 7:46:22

      read() admet un nombre donnant la quantité d'octets que tu veux lire. Jusque là tout est correct.
      Mais len(4) veut dire que tu veux savoir la longueur de 4.
      Mais 4 est un entier (int). len() ne s'applique pas à ce type d'objet.
      On l'utilise par exemple pour connaîttre la longueur d'une chaîne ou d'une liste.
      Il fallait mettre  data = file.read(4)
      data = file.read  ne sera pas accepté non plus.
      • Partager sur Facebook
      • Partager sur Twitter

      Le Tout est souvent plus grand que la somme de ses parties.

        22 juillet 2021 à 7:58:49

        Salut, PierreLeFou,

        Merci pour ta participation , ok j'avais mal compris la fonction de len, merci je comprends mieux mon erreur de débutant de bas étage que je suis :lol:

        Je m'y remet et vous tiendrai informé.

        Edit:


        re, 

        Alors la lecture du pin s'affiche bien correctement dans le terminal.

        La prochaine étape est de créer un fichier .txt contenant le fameux code pin .

        J'ai utilisé ce code:

        print('Choisissez le fichier à modifier. (Vous pouvez glisser/déposer votre fichier dans cette fenetre.)')
        fichier = input()
        file = open (fichier,'rb')
        file.seek(138)
        file.read
        data = file.read(4)
        file.close
        print("Votre code PIN est : ")
        print(data)
        pin = open ("Votre PIN.txt", 'xb')
        pin.write(data)
        pin.close
        time.sleep(10)

        Mon fichier texte est bien créer , mais par contre il est vide...

        -
        Edité par JonDra 22 juillet 2021 à 8:27:56

        • Partager sur Facebook
        • Partager sur Twitter
          22 juillet 2021 à 11:05:59

          Appeler une fonction, c'est des (...): Python ne voit aucune erreur lorsqu'il lit file.close mais sans les parenthèses... la fonction n'est pas appelée.
          • Partager sur Facebook
          • Partager sur Twitter
            22 juillet 2021 à 11:13:52

            La programmation est une activité qui nécessite de la rigueur. Votre morceau de code n'a rien de rigoureux. Y remédier au plus vite n'est pas une option si vous désirez vraiment avancer dans ce domaine.

            Que font les lignes 5, 7 et 12 d'après vous (il manque quelque chose) ?
            Pourquoi vous n'utilisez pas les gestionnaires de contexte (with) ?
            Pourquoi ouvrir vos fichier en mode binaire ?

            • Partager sur Facebook
            • Partager sur Twitter
              22 juillet 2021 à 11:46:29

              .H.D.1. a écrit:

              La programmation est une activité qui nécessite de la rigueur. Votre morceau de code n'a rien de rigoureux. Y remédier au plus vite n'est pas une option si vous désirez vraiment avancer dans ce domaine.

              Le pire est que çà vise à remplacer des scripts bash relativement bien écrits (pour ceux qui connaissent) et qui fonctionnent par un code Python tout pourri qui fera la même chose... allez comprendre!
              • Partager sur Facebook
              • Partager sur Twitter
                22 juillet 2021 à 11:52:20

                Bonjour,

                @mps, merci j'ai corrigé et cela fonctionne ;)

                @.H.D.1. oui effectivement je sais que la programmation nécessite de la rigueur , et oui effectivement cela serait plus propre avec with , vais corriger. J'ouvre mes fichier en mode binaire car ce sont des ficher bin et je travaille sur des chaines hexadécimales contenus dans les fichiers. 

                • Partager sur Facebook
                • Partager sur Twitter

                Lecture de 4 octets

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown