samedi 26 novembre 2016

Edition hexadécimale avec vi et xxd

La commande XXD

La commande xxd permet de convertir du binaire en hexadécimal et inversement. Elle permet aussi de patcher un fichier binaire. Utilisé avec vi ou vim, xxd permet de disposer d’un éditeur hexadécimal de fortune en mode commande. Enfin, cet outil permet d’afficher au format binaire.

Afficher la représentation binaire d’octets 

Avec echo
$ echo -n 5C00FF | xxd -r -p | xxd -b
0000000: 01011100 00000000 11111111                             \...

 Avec un fichier
$ xxd -b bin        
0000000: 01011100 00000000 11111111                             \...

Edition hexadécimale

Il est possible d'utiliser vi ou vim comme éditeur héxadécimal (grâce à xxd)

Pour passer en mode éditeur hexadécimal, entrez <esc> puis :%!xxd

Pour revenir au mode initial <esc>:%!xxd -r

Patcher un fichier binaire

Pour patcher un binaire, il suffit de passer en mode édition hexadécimal puis d’ajouter, supprimer ou modifier les valeurs sur la partie hexadécimale uniquement (à gauche). La modification sur la partie ASCII n’est pas prise en compte. Ensuite il faut soit : 
  • sauvegarder soit dans un fichier externe (sans sauvegarder le fichier courant car le buffer de vi est vidé) 
  • sauvegarder le fichier courant par une conversion au format initial puis en enregistrant normalement le fichier courant

Depuis l’édition hexadécimale, la modification du fichier s’opère sur la partie hexadécimale uniquement avec <esc>:%!xxd



Le mode insertion de vi <esc>i permet de modifier le fichier, dans l’exemple ci-dessous, la séquence 46494c45 remplace 36393c35.


Pour enregistrer dans un fichier externe, il faut saisir  <esc>:%!xdd –r > newfile, mais cela vide le buffer courant de vi. 


Dans ce cas, pour conserver le fichier initial intact, il faut sortir sans enregistrer le fichier avec <esc>:q!

Voici le résultat du fichier patché dans un nouveau fichier


Pour patcher directement le fichier lui-même, il suffit de reconvertir l’édition en cours : <esc> %!xxd –r puis de sauvegarder :wq.

Edition et modification


Conversion du mode d’édition :% !xxd -r


Sauvegarde :wq


Le fichier txt est patché


Aucun commentaire:

Enregistrer un commentaire