Existe-t-il une commande linux permettant d'extraire toutes les chaînes ascii d'un exécutable ou d'un autre fichier binaire ? Je suppose que je pourrais le faire avec un grep, mais je me souviens avoir entendu quelque part qu'une telle commande existait ?
Réponses
Trop de publicités?La commande que vous recherchez est la suivante strings
Son nom est assez explicite, il récupère n'importe quelle chaîne imprimable d'un fichier donné.
man strings
donne :
CHAÎNES(1)
NOM
cordes - trouver les chaînes imprimables dans un fichier objet ou autre fichier binaireSYNOPSIS
strings [ - ] [ -a ] [ -o ] [ -t format ] [ -number ] [ -n number ] [--] [file ...]
Le problème de l'utilisation des chaînes est que les éléments non imprimables qui les entourent ne sont pas visibles et qu'il faut faire attention à la longueur minimale de la chaîne.
Un problème d'utilisation
od -c FILEo hexdump -C FILEest qu'une séquence peut être difficile à trouver si elle entoure une ligne.
Pour cela, j'aime beaucoup ZTreeWin fonctionnant dans Wine sous Linux - vous pouvez faire beaucoup de choses avec, mais la recherche dans n'importe quel fichier ou l'édition de binaires peut être particulièrement utile.
L'excellent paquetage ytree est disponible pour de nombreuses variantes de Linux et d'Unix et offre une bonne vue du vidage hexadécimal de n'importe quel fichier, mais il n'a pas la fonction de recherche de ZTreeWin (et de son prédécesseur en 16 bits, XTree).