Journal Hachoir 0.4

Posté par  (site web personnel) .
Étiquettes : aucune
0
11
juil.
2006
Le parseur universel de fichier binaire, Hachoir, continue sa route. L'arrivé d'un nouveau membre dans l'équipe de développement s'accompagne d'une nouvelle interface utilisateur (en texte, mais en couleur !) qui exploite enfin son comportement paresseux : seul les premiers champs sont lus (3 par 3). Ceci permet d'ouvrir une vidéo de 700 Mo ou un partition de 10 Go sans broncher.

De plus, Hachoir est maintenant capable de rattraper les erreurs des parseurs bogués ou des fichiers corrompus. Il peut extraire les méta-données d'une image, musique ou vidéo, même s'il n'a que les premiers kilo-octets du fichier et/ou si une partie des méta-données sont corrompues.

Au niveau des méta-données, cette version donne beaucoup plus d'informations (ex: durée d'un vidéo), et sait maintenant utiliser les informations EXIF et IPTC (Photoshop).

Les nouveaux parseurs sont IPTC, Ogg, Matroska, et les informations Photoshop (8BIM).

Plus d'informations sur le site internet :
http://hachoir.python-hosting.com/wiki/HachoirYield

--

Hachoir n'a que peu de similarité avec Beagle/Kat, à la limite il pourrait servir de source de méta-données tel que libextractor ou mmpython si la partie « extraction des méta-données » était plus développée.

Hachoir est avant-tout une bibliothèque. Il peut être utilisé pour faire des traitements à la chaîne. On pourrait imaginer extraire les images d'une présentation PowerPoint (si le parseur Microsoft Office était plus évolué :-)).

À terme, il permettra d'éditer des fichiers et pourra alors servir à modifier un champ ou supprimer des champs (l'ajout est plus hasardeux). Exemple d'application : supprimer les mouchards d'un fichier (logiciel utilisé pour créer un document, date de création, coordonnées GPS, etc.). Autre exemple : localiser les espaces inutilisés (ils sont légions dans les fichiers) et les utiliser comme espace de stockage discret.

Anciens journaux :
http://linuxfr.org/~haypo/21758.html (30 mai 2006, 16 commentaires)
http://linuxfr.org/~haypo/21556.html (5 mai 2006, 8 commentaires)
  • # Nouveau parseur ?

    Posté par  (site web personnel) . Évalué à 3.

    Serait il possible d'avoir un parseur du format iso ? Le fabriquant de ma platine DVD fournit des firmwares non gravables (images iso non valides), et persiste à me dire que tout est correct. J'aimerais bien lui clouer le bec ;-)
    • [^] # Re: Nouveau parseur ?

      Posté par  (site web personnel) . Évalué à 6.

      L'écriture d'un parseur prend beaucoup de temps. L'écriture d'un bon parseur en prend encore plus :-) Je te laisse donc jetter un coup aux systèmes de fichier pour CDRom :
      http://www.nondot.org/sabre/os/articles/FileSystems/
      (ISO-9660, Joliet, etc.)

      D'autres ressources :
      http://hachoir.python-hosting.com/wiki/FileFormatResources

      Je peux te filer un coup de main si tu veux écrire un parseur, car la documentation actuelle est pauvre :
      http://hachoir.python-hosting.com/wiki/WriteYourParser

      Haypo
    • [^] # Re: Nouveau parseur ?

      Posté par  . Évalué à 1.

      En fait d'image iso, le fabricant ne fournirait il pas des images Nero ?

      En gros, une image iso commence par 32Ko de zéros binaires, une image Nero contient en plus 300Ko de zéros supplémentaires en tête avant le label (.CD001).

      On peut facilement trancher les 300 premiers Ko (307200 octets) d'une ligne de python (ou avec hachoir ?), ou alors googlise un petit programme appelé nrg2iso.

      P.S. si ce n'est pas un fichier .nrg, peux tu poster un URI vers le firmware ?
      • [^] # Re: Nouveau parseur ?

        Posté par  (site web personnel) . Évalué à 2.

        Merci pour ton aide. Le firmware pour mon lecteur Sunwood SW-055-DX génération 1 se trouve sur cette page: http://www.tokai.fr/index.php?act=support

        En lisant le PDF qui indoque comment effectuer la mise à jour, ils stipulent bien: "choisir l'option CD ISO". Mais ces andouilles donnent des fichiers .ROM, donc pour savoir ce qu'il y a dedans, je suis un peu marron... même un coup de file -i est incapable de me dire le format. En les renommant en .iso, j'ai fait des test avec 2 logiciels de gravure sous linux, 2 sous windows, et impossible d'avoir un contenu cohérent.

        De plus, j'avais déjà fait une mise à jour une fois, et j'avais pu graver l'image sans problème, et mettre à jour mon lecteur, c'était une image iso valide. Pourtant, mes mails envoyés au support technique tournent en rond: on me donne la procédure pour graver une image avec Nero, et que je suis le seul à m'être plaint, que ça marche pour les autres, blabla... Alors j'aurais voulu leur mettre le nez sur leur m***de.

        Je vais tenter de sucrer le header que tu indiques (ma méthode à moi c'est un coup de dd ;-) ). Sinon, je devrai me résoudre à tenter l'installation de la version linux de néro (si elle est gratos, ce dont je ne suis pas sûr)
        • [^] # Re: Nouveau parseur ?

          Posté par  . Évalué à 3.

          Ce fichier ne ressemble en rien à une imagizo ! C'est plutôt une image rom de 1Mo pile poil, donc le firmware seulement, sans header ...
          Peut être la procédure d'upgrade veut elle ce fichier tel quel sur le CD ?
          Si je peux, j'essaierai ce soir pour voir ce qu'en dit nero.
        • [^] # Re: Nouveau parseur ?

          Posté par  (site web personnel) . Évalué à 4.

          Mouarf, c'est pas du tout une image ISO le fichier dont tu parles (truc.rom) ! À mon avis, pour faire une mise à jour, il faut graver un cdrom de donnée (ce qu'ils appellent "CD ISO") et y placer uniquement ce fichier de 1 Mo ...

          À mon avis le fichier ROM contient un programme pour le processeur de ta platine (c'est une platine DVD/"DivX" non ?). Enfin, c'est peut-être un espèce de format d'archive contenant programme + des fichiers de données, mais en tout cas, c'est rien de classique (pas une archive TAR par exemple).

          Haypo
          • [^] # Re: Nouveau parseur ?

            Posté par  (site web personnel) . Évalué à 2.

            saperlipopette, se pourrait il que j'aie été con à ce point ?
            J'avais déjà réussi à la faire leur satanée upgrade, et je suis resté avec le sentiment que c'était en gravant en tant qu'image iso... Mais là je crois bien que tu as raison... c'est complètement con de dire "Veuillez choisir l'option: CD ISO", parce que logiquement, ça veut dire que c'est un fichier image, non ? C'est moi qui suis con, où c'est eux qui utilisent pas les termes les plus appropriés ? Dire de graver un CD de données, ça parait plus logique, non ?
            • [^] # Re: Nouveau parseur ?

              Posté par  . Évalué à 1.

              Et ton CD de "données", il est censé en quel format ? ISO9660. Je ne vois pas trop comment tu veux que ce soit formulé.
              • [^] # Re: Nouveau parseur ?

                Posté par  (site web personnel) . Évalué à 4.

                CD ISO pour le pékin moyen, ça veut rien dire du tout. Demande lui ce que c'est que l'ISO 9660, il n'en sait rien. Nombreux sont les logiciels de gravre grand public qui masquent ce terme. Par contre quand on me dit de graver une ISO, je suis peut être idiot, mais je comprends "graver en tant qu'image ISO". Graver n tant que CD de données (terminologie utilisée dans de nombreux logiciels) eut été bien plus judicieux à mon avis.
      • [^] # Re: Nouveau parseur ?

        Posté par  (site web personnel) . Évalué à 2.

        On peut facilement trancher les 300 premiers Ko

        Je connais trois commandes pour faire ça :
        mount iso /mnt/loop -t iso-9660 -o loop=/dev/loop3,offset=XXX
        dd if=iso of=iso_coupe seek=XXX bs=XXX
        tail -c +XXX

        J'aime bien la dernière commande :-) (par tail commence à compter à 1, la "-c +2" zappe le 1er octet)

        Pour trouver la bonne valeur, comparer une ISO normale et l'ISO bizzare avec "hexdump -C fichier | less", khexedit ou autre éditeur hexadécimal.

        Haypo
        • [^] # Re: Nouveau parseur ?

          Posté par  (site web personnel) . Évalué à 2.

          Ah bah je viens de découvrir l'option seek de dd en fait... Moi j'utilisais skip (ce qui dans ce contexte est complètement équivalent).

          Pour trouver la bonne valeur, comparer une ISO normale et l'ISO bizzare avec "hexdump -C fichier | less", khexedit ou autre éditeur hexadécimal.


          Bin j'ai essayé, mais je lis pas le format ISO couramment ;-) , d'ou l'utilité du hachoir...
          • [^] # Re: Nouveau parseur ?

            Posté par  . Évalué à 2.

            Oui mais justement, apparemment, tes images ne sont pas des images ISO, sinon linux aurait au moins pu les monter (en loopback). Donc même si le support des images ISO est géré par hachoir, ça ne marchera pas étant donné que ce n'en sont pas. À moins qu'avec la fonction permettant de corrgier les "fichiers corrompus" ?...
    • [^] # Re: Nouveau parseur ?

      Posté par  (site web personnel) . Évalué à 3.

      Bon, j'ai écrit un parseur rudimentaire en me basant sur le document ECMA :
      http://www.nondot.org/sabre/os/files/FileSystems/iso9660.pdf

      Le parseur ne lit que les "volumes" (4 blocs de 2 Ko sur l'ISO testé, netinst Debian Sarge).
      http://hachoir.python-hosting.com/file/hachoir/trunk/src/hac(...)
      (utilise la version SVN si tu veux tester, ou alors copie juste ce fichier au bon endroit, /usr/lib/python2.4/site-packages/hachoir.../parser/file_system/ -- pas sûr que ça marche :-))

      À ce que j'ai compris :
      * Il y a 0x8000 (32768) octets nuls au début du fichier
      * Ensuite on trouve différents "volumes"
      * Chaque volume fait 2048 octets et a comme entête "\x01CD001" (1, "CD001")

      Est-ce que tu as la chaîne "CD001" dans ton fichier (au début) ?

      Haypo
  • # gui

    Posté par  . Évalué à 2.

    sans dec, j'suis peut etre le seul, mais j'aimais mieux l'interface graphique..
    la nouvelle interface : j'y comprends rien.

    pas possible d'avoir les deux interfaces : deux front-end quoi...
    • [^] # Re: gui

      Posté par  (site web personnel) . Évalué à 3.

      Hachoir a actuellement 3 interfaces utilisateurs : console (sortie brute), curses (on peut naviguer au clavier) et urwid (la plus évoluée). Une interface graphique (je pense en refaire une en Gtk+) suivra.

      La version 0.2 a été réécrite depuis zéro. Je suis reparti sur des bases saines : séparation nette entre le noyau (back-end) et l'interface utilisateur (frontend).

      Des interfaces FUSE, Hurd, web (?), ou autre sont envisageables :-)

      Haypo

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.