Existe-t-il une commande Linux pour extraire toutes les chaînes ascii d'un fichier 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?
La commande que vous recherchez est strings
Son nom est assez explicite, il récupère toute chaîne imprimable à partir d'un fichier donné.
man strings
donne:
STRINGS (1)
[~ # ~] nom [~ # ~]
chaînes - rechercher les chaînes imprimables dans un fichier objet ou autre fichier binaire[~ # ~] synopsis [~ # ~]
strings [ - ] [ -a ] [ -o ] [ -t format ] [ -number ] [ -n number ] [--] [file ...]
La commande strings est la voie à suivre pour ce type particulier de problèmes. Parfois, vous devez également le diriger vers grep.
Par exemple:
strings somebinaryfile | grep textuwanttofind
La commande existe et s'appelle .... chaînes!
La commande od peut faire ceci:
od -c *filename*
Un problème avec l'utilisation de chaînes est que vous ne voyez pas les éléments non imprimables environnants et que vous devez faire attention à la longueur de chaîne minimale.
Un problème avec
od -c FILE
hexdump -C FILE
Quelque chose que j'aime beaucoup pour cela est ZTreeWin fonctionnant dans WINE sur Linux - vous pouvez en faire beaucoup mais la recherche dans n'importe quel fichier ou l'édition de binaires peut être particulièrement utile.
Le package génial ytree est disponible pour de nombreuses variantes Linux et Unix et a une bonne vue de vidage hexadécimal de n'importe quel fichier, mais n'a pas la recherche que ZTreeWin (et son prédécesseur 16 bits, XTree) ont.