Jump to content

Script pour éditer un fichier binaire


Recommended Posts

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.

 

Link to comment
Share on other sites

  • 2 months later...

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.

 

 

 

 

  • Aime 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...