Am o grămadă de binare și știu că în interiorul acestor binare există șiruri pe care vreau să le găsesc.

Vreau să fac un:

grep -lir "the string I am looking for" 

și să obțin o listă a tuturor binarelor dintr-un anumit director care conține acel șir, dar grep -lir se pare că nu funcționează cu aceste fișiere.

Există o comandă care poate face acest tip de căutare de la terminal?

Răspuns

Cu GNU grep , puteți utiliza opțiunea -a pentru a trata fișierele binare ca fișiere text:

grep -ali -- string file 

Dacă versiunea dvs. grep nu acceptă -a, puteți utiliza ack în schimb. Cu ack 1.x, trebuie să includeți opțiunea -a, cu ack 2.x, nu faceți acest lucru, deoarece atunci când căutați include fișier non-text în mod implicit (doar ignorat fișier text când nu ați specificat niciun fișier).

Comentarii

  • Am citit greșit ack ' autodescrierea? (în manual) " ack 2.x va căuta în fiecare fișier obișnuit, non-binar, care nu este ignorat în mod explicit [de bla bla] " Deci, sună ca ack 2.x ar trebui să înceteze să citească mai devreme un fișier dacă conținutul pare binar.
  • @PeterCordes: Acel ' s-a produs atunci când nu au fost selectate fișiere. Încercați ack grep /bin/grep și veți obține rezultatul. Mi-am actualizat răspunsul pentru a preveni confuzia.
  • Încercați să utilizați comanda șiruri pentru a obține șirurile din binarul dvs.

Răspuns

Comanda strings va fi extr acționați toate datele ascii dintr-un fișier, dacă grep rezultatul acestuia, puteți căuta datele dvs.:

strings <filename> | grep "search text" 

Comentarii

  • Acesta ar trebui să fie răspunsul acceptat. Acest binar este potrivit pentru această sarcină.
  • @xeon: ' nu este întotdeauna bine să folosiți strings , citiți aici pentru mai multe detalii.
  • Deoarece scopul este de a determina care binare conțin șirul, strings -f ar fi mai potrivit.
  • Acesta este un răspuns mai bun.
  • cel mai bun răspuns. mulțumesc mult

Răspuns

Întrebarea dvs. este despre găsirea fișierelor binare care conțin un model (și deja avem răspunsuri foarte bune!). Complementar, ne-ar plăcea să obținem aparițiile.

Folosesc adesea

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

pentru a obține un context înconjurător de 20 de caractere.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *