Jai un tas de binaires et je sais quà lintérieur de ces binaires il y a des chaînes que je veux trouver.

Je veux faire un:

grep -lir "the string I am looking for" 

et obtenir une liste de tous les binaires dans un répertoire particulier qui contiennent cette chaîne mais grep -lir ne fonctionne apparemment pas avec ces fichiers.

Existe-t-il une commande permettant deffectuer ce type de recherche depuis le terminal?

Réponse

Avec GNU grep , vous pouvez utiliser loption -a pour quelle traite les fichiers binaires comme des fichiers texte:

grep -ali -- string file 

Si votre version grep ne prend pas en charge -a, vous pouvez utiliser ack à la place. Avec ack 1.x, vous devez inclure loption -a, avec ack 2.x, vous ne le faites pas, car lors de la recherche, incluez un fichier non texte par défaut (uniquement ignoré non- fichier texte alors que vous n’avez spécifié aucun fichier).

Commentaires

  • Suis-je mal interprété ack '? (dans le manuel) " ack 2.x recherchera dans tous les fichiers normaux non binaires qui ne le sont pas explicitement ignoré [par bla bla] " On dirait donc que ack 2.x devrait quand même arrêter de lire un fichier prématurément si le contenu semble binaire.
  • @PeterCordes: Ces ' se sont produits lorsquaucun fichier na été sélectionné. Essayez ack grep /bin/grep et vous obtiendrez le résultat. Jai mis à jour ma réponse pour éviter toute confusion.
  • Essayez dutiliser la commande strings pour obtenir les chaînes de votre binaire.

Réponse

La commande strings va extraire activez toutes les données ascii dun fichier, si vous grep sa sortie, vous pouvez rechercher vos données:

strings <filename> | grep "search text" 

Commentaires

  • Cela devrait être la réponse acceptée. Ce binaire convient parfaitement à cette tâche.
  • @xeon: ' nest pas toujours bon à utiliser strings , lisez ici pour plus de détails.
  • Le but étant de déterminer quels binaires contiennent la chaîne, strings -f serait plus approprié.
  • Cest une meilleure réponse.
  • la meilleure réponse. merci beaucoup

Réponse

Votre question concerne la recherche de fichiers binaires contenant un modèle (et nous avons déjà très bonnes réponses!). En complément, nous souhaitons peut-être obtenir les occurrences.

Jutilise souvent

grep -aPo ".{0,20}pattern.{0,20}" binfile 

pour obtenir un contexte environnant de 20 caractères.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *