Journal Déshabillez Flash

Posté par  (site web personnel) .
Étiquettes :
0
5
nov.
2006
En me basant sur des projets libres de décodage de fichier Flash (ffmpeg, flashticle, swfdec, gnash), j'ai écrit des parseurs Hachoir pour les formats SWF (animation) et FLV (vidéo). Le format FLV est moyennement intéressant : on peut y voir les codecs (audio/vidéo) utilisés ou les méta-données (AMF). J'ai commencé à écrire un parseur AMF, mais ça m'intéresse pas trop en fait, et le parseur est incomplet. J'ai modifié hachoir-metadata pour qu'il supporte le format FLV.

Par contre, les fichiers SWF sont déjà plus intéressants :-) On peut y trouver des images JPEG (avec transparence pour certaine, si si, enfin c'est stocké à part), du son et de la vidéo. Je me suis surtout concentré sur les images JPEG. Après quelques heures de codage j'ai écrit un outil pour extraites toutes les images d'une animation Flash. Et le pire c'est que ça marche :-)

J'ai préparé un tarball clé-en-main, utilisez le script jpg_extractor.py :
http://www.haypocalc.com/tmp/hachoir-flash-5nov.tar.gz
(rien besoin d'installer)

Ca ne fonctionne que sur les SWF non-compressés. Mais un outil de décompression (deflate_swf.py) est livré avec.

Hachoir a besoin de Python 2.4 ou supérieur. Sous Debian Sarge, utilisez explicitement Python 2.4 : python2.4 jpg_extractor.py fichier.swf

Tout ce que je raconte concerne le projet Hachoir en version de développement (trunk), accessible via Subversion. Plus d'info : http://hachoir.org
  • # Bravo

    Posté par  . Évalué à 5.

    Un des gros problème du flash c'est la quasi-impossibilité de récupérer le contenu de celui-ci (a des fins de copie privée bien sûr) ce n'est qu'une solution de contournement, mais c'est déjà ça !
    • [^] # Re: Bravo

      Posté par  . Évalué à 3.

      Après un rapide essai sur un flash a moi, le script en sort toute les images (c'est déjà ça) mais illisibles (ça c'est moins bien).

      Enfin, rien que l'essai montre du beau travail.
      • [^] # Re: Bravo

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

        Hum, j'ai oublié de préciser : si vous trouvez des bugs, envoyez moi vos fichiers SWF :-)

        Haypo
        • [^] # Re: Bravo

          Posté par  . Évalué à 2.

          Hum... Ce n'est malheureusement pas le genre de Flash qu'on peut envoyer décemment sans paraître un obsédé de l'entrejambe...

          C'est que je ne garde pas beaucoup de flash sur ma machine et je suis tombé sur le premier venus.
          • [^] # Re: Bravo

            Posté par  . Évalué à 5.

            s/venus/Venus/
    • [^] # Re: Bravo

      Posté par  . Évalué à -6.

      a des fins de copie privée bien sûr

      AH AH AH AH AH
      • [^] # Re: Bravo

        Posté par  . Évalué à 9.

        ben quoi ?
        moi un truc me plaît sur un site internet, genre photo, dessin, vidéo ou autre je le garde en local mais je ne vais pas le diffuser !
        C'est bien de la copie privée ça non ?
        • [^] # Re: Bravo

          Posté par  . Évalué à -2.

          si ça s'arrête là...
          • [^] # Re: Bravo

            Posté par  . Évalué à -2.

            si ça s'arrête là...

            Tu veux faire quoi d'autre avec du flash™?
    • [^] # Re: Bravo

      Posté par  . Évalué à 5.

      It's not a bug, it's a feature...
  • # Une url en parametre

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

    Hello

    Ce serait sympa si on pouvait lui passer directement une url en parametre, moi ça me pose souvent probleme pour les videos dans du flash, pour youtube il y a le script youtube-dl mais il ne fonctionne que avec youtube, un script générique ce serait bien sympa.

    Merci encore pour tout ton travail.
    • [^] # Re: Une url en parametre

      Posté par  . Évalué à 5.

      Les vidéos ne sont généralement pas embarquées dans le fichier flash mais leur URL est passée en argument...
      Donc un script devrait être capable de les extraire.
      Si nécessaire, il existe des décompilateurs ou des désassembleurs de flash permettant de comprendre comment la vidéo est récupérée.
      Autre recours possible : avoir flash dans un navigateur, utiliser wireshark pour regarder ce qui passe sur le réseau et en déduire où est stockée la vidéo en fonction des arguments du script.
      • [^] # Re: Une url en parametre

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

        Tu peux aussi tenter unplug pour Firefox : https://addons.mozilla.org/firefox/2254/

        Ca permet de récuperer facilement tous les "embedded" mais aussi la plupart des video "flashisé".

        Sinon, une version Hachoir pour les mp3 est prévue ?
        • [^] # Re: Une url en parametre

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

          Pour récupérer des fichiers téléchargés par Flash (ou autre), j'utilise LiveHTTPHeaders :
          http://livehttpheaders.mozdev.org/

          Il "suffit" de trouver les requêtes GET /(...).mp3, GET /(...).flv, etc. Puis concaténer la requête au "host: (...)" donné à la ligne suivante. Ce n'est pas trivial, mais au moins ça marche à tous les coups.

          Pour youtube, il existe plein de plugins :
          http://keepvid.com/
          http://freshmeat.net/search/?q=youtube&section=projects

          Voir d'ailleurs un fil de discussion sur Hachoir et youtube :
          http://linuxfr.org/comments/753351.html#753351
          --
          Au sujet de la possibilité d'extraire la musique MP3 d'un fichier Flash... Ben tiens oui, ça pourrait être sympa :-) Tu m'envoies un fichier qui en contient un ? Je n'en ai pas trouvé de satisfaisant (il faut du MP3 qui dure au moins quelques secondes).

          Haypo
          • [^] # Re: Une url en parametre

            Posté par  . Évalué à 2.

            Sinon à la rigueur mplayer sait extraire la partie son d'une vidéo ... xine aussi d'ailleurs.
            • [^] # Re: Une url en parametre

              Posté par  . Évalué à 2.

              Pas que la partie son, au moins pour les .flv de YouTube. La 1.0rc1 arrive totalement à les lire, et sans l'aide de codecs binaires externes.
              • [^] # Re: Une url en parametre

                Posté par  . Évalué à 4.

                Oui oui, je sais.
                Mais Victor parlait d'extraire la partie son d'un fichier flv... Avec les bonnes options de mplayer (-dump-audio je crois) ou xine (-ao file je crois) ça marche...
          • [^] # Re: Une url en parametre

            Posté par  . Évalué à 3.

            LiveHTTPHeaders ne marche plus sous Firefox 2.0 : c'est une extension "délaissée", comme quelques autres (SearchCache)

            néanmoins en remplaçant la valeur du champs maxVersion pour mettre 2.0.* dans le install.rdf du fichier .xpi (une archive au format zip), elle retombera en marche et continuera à rendre moult services.
  • # Reverse-engineering ?

    Posté par  . Évalué à 1.

    On dirait que certains se sont mis à rebosser le côté reverse-engineering de Hachoir :)

    Bonne nouvelle !
  • # Utiliser ou non le Flash

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

    Un petit exemple du résultat qu'on obtient avec ou sans Flash :
    http://thomas.walraet.net/blog/index.php/2006/04/05/71-canon(...)

    (oui, c'est un lien hors-sujet vers mon blog)

Suivre le flux des commentaires

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