J'ai écrit un p'tit programme en Python permettant de découper un flux binaire en rondelles, d'où son nom : le hachoir. Le projet est très jeune, sûrement bogué et peu intéressant pour l'instant. Mais je souhaite quand même communiquer dessus :
http://www.haypocalc.com/wiki/Hachoir
Il peut servir à tout et n'importe quoi. Perso, je m'en sers pour voir comment sont constitués les fichiers que je manipule tous les jours. Là je m'en sers pour analyser un PDF, voir comment il est organisé. Il m'a aidé à comprendre pourquoi deux CV avec le même texte mais des polices différentes ont des tailles très différentes : en fait, le PDF emporte TOUTE la police TTF, pas juste les glyphes utiles.
À terme, le programme sera capable de reconstituer des données qui sont stockées à divers endroits (ex: paquets réseaux ou archive zip/rar). Et le programme sera capable de se promener dans un fichier qui contient un fichier qui contient un fichier qui (...). Exemple : on écoute le réseau => (moulinette qui extrait les données de TCP) => fichier zip => (deflate) => image => (...)
On peut déjà entrer faire un truc du genre : gzip => tar => fichier (décompression à la volée, code cracra pour l'instant : tout est mis en mémoire). Reste à créer le menu pour rendre ça dynamique (car actuellement il faut spécifier le "filtre" en dur dans le code).
Il y a différents outils pour découper un flux. Déjà, un niveau est appelé un "filtre". Chaque filtre est découpé en N "chunks". Un chunk peut ensuite contenir un filtre, la boucle est boulée ;-) On peut créer son propre filtre à la souris : ajouter/modification/suppression de chunk, ajout de filtre fils, ajoute d'une chaîne de caractère, etc. On peut alors sauver son filtre utilisateur dans un fichier XML, puis le recharger plus tard. On peut également exporter son filtre en un script Python (pour écrire son filtre un peu plus évolué par la suite).
Enfin, le tout est extrénement scriptable vu que le code est écrit en Python ...
---
Un truc sympa serait d'écrire un désassembleur/décompilateur avec ça :-) (pour C, Python, Flash ou autre)
Contactez moi si le projet vous intéresse (ou laissez un commentaire ici).
Haypo
# analyseur de flux mpeg/DVB
Posté par Nimlar . Évalué à 2.
Je me demande combien de boulot il serait necessaire pour le transformer en un bon analyseur de stream DVB.
Faudrait que je regarde ca si j'ai un peu de temps, parce que je connais aucun outils libre qui permet de faire des analyse sympa de stream.
[^] # Re: analyseur de flux mpeg/DVB
Posté par Matthieu Weber . Évalué à 4.
http://www.mit.jyu.fi/mweber/leffakone/software/parsempegts/
Très basique, il détecte les différents flux (video, audio et sous-titres) et affiche les données brutes pour l'audio (du PES courant), le type d'image pour la video (première image du PES). Le but étant de trouver à quel endroit couper le flux pour l'éditer (en relisant le code, je viens de me rendre compte que cette version ne lit qu'un seul PID, qu'il faut spécifier en ligne de commande. Je mets la nouvelle version, qui fait ce que je décris, en ligne dès que j'y pense).
J'ai écrit un deuxième outil basé sur celui-là, qui prend en entrée un TS et une « edit list » de MPlayer, et coupe le TS en tronçons qui correspondent à l'edit list. Ensuite je convertis les tronçons en XviD avec mencoder et je les rassemble avec avimerge au besoin. Tout ça n'est pas sur le Web, mais je l'y ajoute dès que j'y pense.
[^] # Re: analyseur de flux mpeg/DVB
Posté par Nimlar . Évalué à 2.
Le grand interet que je vois au project hachoir c'est de rajouter simplement, avec un fichier xml ou 3 lignes de python, un parsing correct d'une nouvelle table, même pour des sections privés (si on a la spec).
Parce que des parseurs de PAT et PMT on en trouve des libres (ces tables permettent de trouver où est une video avec son audio et sa synchro), mais si on veut parser un EIT rempli de partie privé, (ce qui donne le programme courant, sa description, les autres programmes des autres chaines, etc.) ou la SDT (qui décrit l'ensemble des chaines), la je ne voit rien de existant et d'assez modulable.
Enfin on peut toujours regarder les sections en hexa et on compte les octets, ça ça marche toujours.
Mais il reste la difficulté de créer des sections de test sans erreurs...
[^] # Re: analyseur de flux mpeg/DVB
Posté par Victor STINNER (site web personnel) . Évalué à 1.
L'idéal serait de savoir utiliser de bibliothèques externes, mais je ne sais pas si c'est possible. J'ai par exemple vu que le module gzip de Python n'accepte pas juste les données compressés, il veut absolument le fichier dans son intégralité.
Haypo
[^] # Re: analyseur de flux mpeg/DVB
Posté par iznogoud . Évalué à 2.
Le module gzip est bien si tu as un fichier. Le module zlib te permet d'accéder à des fonctionnalités plus utiles (genre compresser une chaîne de caractères. C'est tout bête, mais gzip ne le permet pas)
http://www.python.org/doc/lib/module-zlib.html
Après, il faudrait voir comment marche le format gzip pour voir si on peut "découper" un gzip et le désarchiver par tranches
[^] # Re: analyseur de flux mpeg/DVB
Posté par Victor STINNER (site web personnel) . Évalué à 1.
Haypo
# tcpflow
Posté par Krunch (site web personnel) . Évalué à 2.
$ tcpdump -C | gunzip
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
[^] # Re: tcpflow
Posté par Victor STINNER (site web personnel) . Évalué à 2.
Haypo
# ...
Posté par M . Évalué à 2.
comme par (http://www.par2.net/) ?
# Il suffit !!!
Posté par Prae . Évalué à 2.
Y'en a marre ! :)
[^] # Re: Il suffit !!!
Posté par Victor STINNER (site web personnel) . Évalué à 2.
Allez, promis, je m'essayerai au http://www.ioccc.org/ :-)
Haypo
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.