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

39

Existe-t-il une commande linux permettant d'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 d’avoir entendu quelque part l’existence d’une telle commande?

Ethan Heilman
la source

Réponses:

72

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:

CORDES (1)

NAME
strings - recherche les chaînes imprimables dans un objet ou un autre fichier binaire

SYNOPSIS
strings [ - ] [ -a ] [ -o ] [ -t format ] [ -number ] [ -n number ] [--] [file ...]

drAlberT
la source
10

La commande strings est la solution à ce type de problèmes. Parfois, vous devez également le diriger vers grep .

Par exemple:

strings somebinaryfile | grep textuwanttofind
luis.espinal
la source
4

La commande existe et s'appelle .... strings!

marque
la source
3

La commande od peut faire ceci:

od -c *filename*
Kyle Brandt
la source
3
Oui, cela extrait les caractères ASCII, mais ce ne sont pas vraiment les chaînes, en soi. Je pense que les "chaînes" sont plus utiles dans la majorité des cas.
user5336
Ya, je ne savais pas à propos de cette commande, mais je le sais maintenant! AlberT a obtenu mon '+1' :-)
Kyle Brandt
2

Un problème lié à l'utilisation de chaînes est que vous ne voyez pas les fichiers non imprimables environnants et que vous devez faire attention à la longueur minimale de la chaîne.

Un problème d'utilisation

od -c FILE
ou
hexdump -C FILE
est-ce qu'une séquence peut être difficile à trouver si elle met une ligne.

Ce que j'aime beaucoup, c’est ZTreeWin tournant sous WINE sous Linux. Vous pouvez en faire beaucoup, mais la recherche dans n’importe quel fichier ou l’édition de fichiers binaires peut être particulièrement utile.

Le paquet génial ytree est disponible pour de nombreuses variantes de Linux et Unix et offre une bonne vue de vidage hexadécimal de tous les fichiers, mais n'a pas la recherche que ZTreeWin (et son prédécesseur 16 bits, XTree).

qeff
la source