Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 26/02/2018, à 15:16

lebossejames

[Résolu] Modification fichier binaire

Bonjour,

Je souhaiterais savoir comment effectuer ces opérations à l'aide d'un script shell:

- Suppression des N derniers octets du fichier
- modification de l'octet 15 et 16ième par la valeur 0xABFE

Merci d'avance de votre aide.

Dernière modification par lebossejames (Le 28/02/2018, à 09:33)

Hors ligne

#2 Le 26/02/2018, à 18:01

pingouinux

Re : [Résolu] Modification fichier binaire

Bonjour,

- Suppression des N derniers octets du fichier

Par exemple, si N=3

head -c -3 fichier1 >fichier2

- modification de l'octet 15 et 16ième par la valeur 0xABFE

Voici une façon de faire

(head -c 14 fichier1; echo -n $'\xAB\xFE'; tail -c +17 fichier1)  >fichier2

Édité :
Ou un peu plus simple

(head -c 14; echo -n $'\xAB\xFE'; tail -c +3) <fichier1 >fichier2

Dernière modification par pingouinux (Le 26/02/2018, à 18:05)

Hors ligne

#3 Le 26/02/2018, à 18:13

Nasman

Re : [Résolu] Modification fichier binaire

A-t-on 0xAB en quinzième position et 0xFE en 16ème ou l'inverse car je suppose que le codage est en little endian et donc que l'octet de poids faible devrait être placé avant l'octet de poids fort ?


PC fixe sous Bionic 64 bits et portable avec Focal 64 bits

Hors ligne

#4 Le 26/02/2018, à 18:15

pingouinux

Re : [Résolu] Modification fichier binaire

On peut aussi faire

(dd bs=1 count=14; echo -n $'\xAB\xFE'; dd bs=1 skip=2) <fichier1 >fichier2

en tenant compte éventuellement de la remarque de Nasman #3.

Hors ligne

#5 Le 27/02/2018, à 08:46

credenhill

Re : [Résolu] Modification fichier binaire

hello

N=...
xxd -p -c 1 -l $(($(stat -c %s bin1)-$N)) bin1 | sed '15s/../AB/; 16s/../FE/' | xxd -p -r > bin2

Dernière modification par credenhill (Le 27/02/2018, à 08:50)

Hors ligne

#6 Le 27/02/2018, à 11:23

lebossejames

Re : [Résolu] Modification fichier binaire

pingouinux a écrit :

Bonjour,

- Suppression des N derniers octets du fichier

Par exemple, si N=3

head -c -3 fichier1 >fichier2

- modification de l'octet 15 et 16ième par la valeur 0xABFE

Voici une façon de faire

(head -c 14 fichier1; echo -n $'\xAB\xFE'; tail -c +17 fichier1)  >fichier2

Édité :
Ou un peu plus simple

(head -c 14; echo -n $'\xAB\xFE'; tail -c +3) <fichier1 >fichier2

Si je souhaite supprimer les 4 premier octets puis modifier le 14ième octet par 0xAB et supprimer les 156 dernier octets.

Je dois faire:

(head -c 4 fichier1;head -c 14 fichier1; echo -n $'\xAB'; tail -c +156 fichier1)  >fichier2

??

Merci d'avance.

Hors ligne

#7 Le 27/02/2018, à 12:44

pingouinux

Re : [Résolu] Modification fichier binaire

lebossejames a écrit :

Si je souhaite supprimer les 4 premier octets puis modifier le 14ième octet par 0xAB et supprimer les 156 dernier octets.

Si l'octet que tu modifies est le 14ème du fichier d'origine

(dd bs=1 skip=4 count=9; echo -n $'\xAB'; dd bs=1 skip=1 | head -c -156) <fichier1 >fichier2

Ajouté :
Avec ta commande

(head -c 4 fichier1;head -c 14 fichier1; echo -n $'\xAB'; tail -c +156 fichier1)  >fichier2

le fichier de sortie contiendrait :
- les 4 premiers octets de fichier1
- les 14 premiers octets de fichier1 (y compris les 4 précédents)
- 0xAB
- la fin de fichier1 à partir du 156ème octet

Ajouté (2) :
Tu aurais pu faire ceci

(head -c 4 >/dev/null; head -c 9 ;echo -n $'\xAB'; tail -c +2 | head -c -156) <fichier1 >fichier2

Dernière modification par pingouinux (Le 27/02/2018, à 14:59)

Hors ligne

#8 Le 28/02/2018, à 09:33

lebossejames

Re : [Résolu] Modification fichier binaire

Merci c'est résolu.

Hors ligne