web-dev-qa-db-fra.com

Commande Linux pour rechercher des chaînes dans un fichier binaire ou non ascii

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?

40
Ethan Heilman

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 ...]

72
drAlberT

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
11
luis.espinal

La commande existe et s'appelle .... chaînes!

4
Mark

La commande od peut faire ceci:

od -c *filename*
3
Kyle Brandt

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.

2
qeff