Skip to main content

Afficher les caractères imprimables d'un fichier avec des chaînes

Imprimante de codes-barres haute résolution (Juin 2025)

Imprimante de codes-barres haute résolution (Juin 2025)
Anonim

Avez-vous déjà essayé d'ouvrir un fichier dans un éditeur uniquement pour découvrir qu'il contient un contenu binaire illisible?

La commande "chaînes" de Linux permet de visualiser les caractères lisibles par l'homme dans n'importe quel fichier.

Le but principal de l’utilisation de la commande "strings" est de déterminer le type de fichier recherché mais vous pouvez également l’utiliser pour extraire du texte. Par exemple, si vous avez un fichier d'un programme propriétaire qui enregistre les fichiers dans un format binaire étrange, vous pouvez utiliser des "chaînes" pour extraire le texte que vous avez mis dans le fichier.

Exemple d'utilisation de la commande Strings

Un excellent moyen de démontrer la puissance de la commande strings consiste à créer un document à l'aide de LibreOffice Writer.

Ouvrez simplement LibreOffice Writer et entrez du texte, puis enregistrez-le au format ODT standard.

Ouvrez maintenant une fenêtre de terminal (appuyez simultanément sur CTRL, ALT et T), puis utilisez la commande cat pour afficher le fichier comme suit:

chat votrefichier.odt | plus

(Remplacez le yourfilename.odt par le nom du fichier que vous avez créé)

Vous verrez tout un mur de texte illisible.

Appuyez sur la barre d'espace pour faire défiler le fichier. Sporadiquement tout au long du fichier, vous verrez une partie du texte que vous avez entré.

La commande strings peut être utilisée pour afficher uniquement les parties lisibles par l'homme.

Dans sa forme la plus simple, vous pouvez exécuter la commande suivante:

chaînes votrefichier.odt | plus

Comme auparavant, un mur de texte apparaîtra, mais seul le texte que vous pouvez lire en tant qu'être humain. Si vous avez de la chance, vous pourrez voir votre texte.

Ce que vous pourrez voir comme clé, cependant, se trouve sur la première ligne:

mimetypeapplication / vnd.oasis.opendocument.text

Nous savons que le type de fichier est un fichier ODT LibreOffice Writer pour 2 raisons:

  1. Nous avons créé le fichier
  2. L'extension est .ODT

Imaginez que vous n'avez pas créé le fichier ou que vous avez trouvé le fichier sur un disque récupéré et que le fichier n'avait pas d'extension.

La récupération de Windows permettrait souvent de récupérer des fichiers portant des noms tels que 0001, 0002, 0003, etc. Le fait que les fichiers aient été récupérés est formidable, mais essayer de déterminer le type de ces fichiers était un cauchemar.

En utilisant des chaînes, vous avez une chance de déterminer le type de fichier. Sachant qu'un fichier est un fichier opendocument.text signifie que vous pouvez l'enregistrer avec l'extension ODT et l'ouvrir dans le rédacteur LibreOffice.

Au cas où vous ne le sauriez pas, un fichier ODT est essentiellement un fichier compressé. Si vous renommez votrefichier.odt en votrefichier.zip, vous pouvez l'ouvrir dans un outil d'archivage et même décompresser le fichier.

Comportements alternatifs

Par défaut, la commande strings renvoie toutes les chaînes d'un fichier, mais vous pouvez modifier le comportement de sorte qu'il renvoie des chaînes à partir de sections de données chargées et initialisées dans un fichier.

Qu'est-ce que cela signifie exactement? Personne ne semble savoir.

Il est logique de supposer que vous utilisez des chaînes pour essayer de trouver le type de fichier ou pour rechercher du texte spécifique dans un fichier.

Si, lorsque vous exécutez la commande strings en utilisant le comportement par défaut, vous n'obtenez pas le résultat escompté, exécutez l'une des commandes suivantes pour voir si cela fait une différence:

chaînes -d votre nom de fichierstrings --data yourfilename

La page de manuel indique que la commande ci-dessus peut aider à réduire la quantité de déchets renvoyés par les chaînes.

La commande "strings" peut être configurée pour fonctionner en inverse de sorte que le commutateur moins d soit le comportement par défaut. Si tel est le cas sur votre système, vous pouvez alors renvoyer toutes les données à l'aide de la commande suivante:

chaînes -un yourfilename

Formatage de la sortie

Vous pouvez obtenir le texte dans la sortie pour afficher le nom du fichier à côté de chaque ligne de texte.

Pour ce faire, exécutez l'une des commandes suivantes:

chaînes -f votre nom de fichierstrings --print-nom-fichier nomfichier

La sortie ressemblera maintenant à quelque chose comme ceci:

votre nom de fichier: un morceau de textevotre nom de fichier: un autre morceau de texte

Dans le cadre de la sortie, vous pouvez également afficher le décalage de l'emplacement de ce texte dans un fichier. Pour ce faire, exécutez la commande suivante:

chaînes -o votre nom de fichier

La sortie ressemblera à ceci:

16573 votre

17024 texte

Le décalage est en réalité le décalage octal, bien que selon la manière dont les chaînes ont été compilées pour votre système, il peut également s'agir également du décalage hexadécimal ou décimal.

Une méthode plus précise pour obtenir le décalage souhaité consiste à utiliser les commandes suivantes:

chaînes -t d votrenomfichierchaînes -t o nomfichierchaînes -t h votrefilename

Le moins t signifie le retour du décalage et le caractère qui suit détermine le type de décalage. (c’est-à-dire d = décimal, o = octal, h = hex).

Par défaut, la commande strings imprime chaque nouvelle chaîne sur une nouvelle ligne, mais vous pouvez définir le délimiteur de votre choix. Par exemple, pour utiliser un symbole de canal ("|") en tant que délimiteur, exécutez la commande suivante:

chaînes -s "|" votre nom de fichier

Ajuster la limite de chaîne

La commande strings par défaut recherche une chaîne de 4 caractères imprimables à la suite. Vous pouvez ajuster la valeur par défaut pour qu’elle ne retourne qu’une chaîne contenant 8 caractères imprimables ou 12 caractères imprimables.

En ajustant cette limite, vous pouvez adapter la sortie pour obtenir le meilleur résultat possible. En recherchant une chaîne trop longue, vous risquez d'omettre du texte utile, mais en la rendant trop courte, vous risquez de vous retrouver avec beaucoup plus d'ordures.

Pour ajuster la limite de chaîne, exécutez la commande suivante:

chaînes -n 8 nomfichier

Dans l'exemple ci-dessus, j'ai modifié la limite à 8.Vous pouvez remplacer 8 par le numéro de votre choix.

Vous pouvez également utiliser la commande suivante pour faire la même chose:

strings --bytes = 8 nomfichier

Inclure les espaces

Par défaut, la commande strings inclut des espaces tels que des tabulations ou des espaces en tant que caractère imprimable. Par conséquent, si vous avez une chaîne qui se lit comme "le chat assis sur le tapis", la commande strings retournera tout le texte.

Les caractères de nouvelle ligne et les retours à la ligne ne sont pas considérés comme des caractères imprimables par défaut.

Pour que les chaînes reconnaissent les nouveaux caractères de ligne et les retours à la ligne en tant que caractères imprimables, exécutez les chaînes de la manière suivante:

chaînes -w votrefichier

Changer l'encodage

Il y a 5 options d'encodage disponibles pour une utilisation avec des chaînes:

  • s = octet 7 bits (utilisé pour ASCII, ISO 8859)
  • S = octet 8 bits
  • bigendian b = 16 bits
  • l = 16 bit littleendian

La valeur par défaut est un octet 7 bits.

Pour modifier le codage, exécutez la commande suivante:

chaînes -e votre nom de fichierstrings --encoding = votre nom de fichier

Dans la commande ci-dessus, j'ai spécifié le "s" par défaut qui signifie octet 7 bits. Il suffit de remplacer le "s" par la lettre d'encodage de votre choix.

Changer le nom de la description du fichier binaire

Vous pouvez modifier le comportement des chaînes afin qu’elles utilisent une bibliothèque de descripteurs de fichiers binaires différente de celle fournie pour votre système.

Ce commutateur est un pour les experts. Si vous avez une autre bibliothèque à utiliser, vous pouvez le faire en exécutant la commande suivante:

chaînes -T bfdname

Options de lecture à partir d'un fichier

Si vous utilisez les mêmes options à chaque fois, vous ne souhaitez pas spécifier tous les commutateurs à chaque exécution de la commande, car cela prend du temps.

Ce que vous pouvez faire est de créer un fichier texte en utilisant nano et spécifier les options de ce fichier.

Pour essayer ceci dans un terminal, exécutez la commande suivante:

nano stringsopts

Dans le fichier, entrez le texte suivant:

-f -o -n 3 -s "|"

Enregistrez le fichier en appuyant sur CTRL et O et quittez en appuyant sur CTRL et X.

Pour exécuter les commandes de chaînes avec ces options, exécutez la commande suivante:

@stringsopts votre nom de fichier

Les options seront lues dans le fichier stringsopts et vous devriez voir le nom du fichier avant chaque chaîne, le décalage et le "|" en tant que séparateur.

Obtenir de l'aide

Si vous souhaitez en savoir plus sur les chaînes, vous pouvez exécuter la commande suivante pour obtenir de l'aide.

cordes --help

Sinon, vous pouvez également lire la page de manuel:

cordes homme

Découvrez la version des chaînes que vous exécutez

Pour rechercher la version des chaînes que vous exécutez, exécutez l'une des commandes suivantes:

chaînes -vcordes -Vcordes --version