Betelgeuse Posté(e) le 23 avril 2020 Partager Posté(e) le 23 avril 2020 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 More sharing options...
v1nce Posté(e) le 22 juillet 2020 Partager Posté(e) le 22 juillet 2020 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 More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.