Aller au contenu

Script pour éditer un fichier binaire


Betelgeuse

Messages recommandés

Bonjour à tous,

 

Je cherche un script  bash pour automatiser une tâche dans le contexte d'une édition d'un fichier binaire. Je travaille sous une distribution GNU Linux  avec l'éditeur  hexadécimal  010. Mon problème est le suivant: j'aimerais d'abord me rendre à une adresse  spécifique  A, effacer une plage de X  octets à partir de cette dernière puis se déplacer de Y octets dans le fichier par rapport à l'adresse A et de nouveau, supprimer une plage de X octets, me déplacer de Y octets par rapport à la dernière position. L'opération indiquée en rouge serait à répéter un certain nombre de fois.

 

Quels  outils en ligne de commande pourrais-je utiliser à cette fin?

 

PS: Je précise que je ne suis pas un développeur à la base donc si certains termes utilisés sont inappropriés, veuillez bien m'en excuser d'avance.

 

Lien vers le commentaire
Partager sur d’autres sites

  • 2 mois après...

Hello,

 

Je ne vois pas trop ce que vient faire la référence à 010 ici. Potentiellement il pourrait peut-être être utilisé mais je ne le connais pas donc je ne peux pas t'aider.

On va supposer que tu es plus intéressé par un(des) outil(s) en ligne de commande pour manipuler des fichier binaires.

Dans ce cas là c'est sans doute la commande "dd" qu'il te faut

 

On suppose adresse a = 1000

dd if=chemin_et_nom_du_fichier count=1000 bs=1

te retourne les 1000 premiers octets

 

On suppose x = 234 octets à supprimer à l'adresse 1000

dd if=chemin_et_nom_du_fichier skip=1234 bs=1  

te retourne le fichier d'origine moins les 1234 premiers octets

 

Si tu concatènes les 2 opérations tu as ton fichier d'origine amputé de 234 octets à la position 1000

{ dd if=chemin_et_nom_du_fichier count=1000 bs=1 ; dd if=chemin_et_nom_du_fichier skip=1234 } > chemin_et_nom_du_fichier_de_sortie

 

 

Après tu peux multiplier les opérations

dd if=chemin_et_nom_du_fichier           count=1000 bs=1  [0...1000]

dd if=chemin_et_nom_du_fichier skip=1234 count=800 bs=1   [1234...2034]

dd if=chemin_et_nom_du_fichier skip=4567 count=200 bs=1   [4567...4767]

dd if=chemin_et_nom_du_fichier skip=6789                  [6789...fin]

 

 

Sans garantie. Vérifie que ça fonctionne avant de te lancer.

 

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...