Minulla on joukko binäärejä ja tiedän, että näiden binäärien sisällä on merkkijonoja, jotka haluan löytää.

Haluan tehdä:

grep -lir "the string I am looking for" 

ja saada luettelon kaikista tietyn hakemiston binääreistä, jotka sisältävät kyseisen merkkijonon, mutta grep -lir ei ilmeisesti toimi näiden tiedostojen kanssa.

Onko komentoa, joka voi tehdä tällaisen haun terminaalista?

Vastaa

Kanssa GNU grep , voit käyttää -a -vaihtoehtoa, jotta se käsittelee binaaritiedostoja tekstitiedostoina:

grep -ali -- string file 

Jos grep-versiosi ei tue -a, voit käyttää ack . Ack 1.x: n kanssa sinun on sisällytettävä vaihtoehto -a, ack 2.x: n kanssa et t, koska etsittäessä oletuksena ei-tekstitiedosto (vain ohitetut muut kuin tekstitiedosto, kun et määritä yhtään tiedostoa).

Kommentit

  • Luinko väärin ack ' s itsekuvaus? (käsikirjassa) " ack 2.x etsii jokaisesta tavallisesta ei-binäärisestä tiedostosta, jota ei ole nimenomaisesti ohitettu [kirjoittanut blah blah] " Joten kuulostaa siltä, että ack 2.x: n pitäisi silti lopettaa tiedoston lukeminen aikaisin, jos sen sisältö näyttää binaariselta.
  • @PeterCordes: Tämä ' tapahtui, kun yhtään tiedostoa ei valittu. Kokeile ack grep /bin/grep ja saat tuloksen. Päivitin vastaukseni sekaannusten estämiseksi.
  • Yritä hakea merkkijonot binääristä käyttämällä merkkijonokomentoa.

Vastaa

Komento strings ekstr toimi kaikki tiedoston ascii-tiedot, jos sitten grep sen tuotoksen, voit etsiä tietojasi:

strings <filename> | grep "search text" 

Kommentit

  • Tämän pitäisi olla hyväksytty vastaus. Tämä binääri sopii hyvin tähän tehtävään.
  • @xeon: Ei ' ole aina hyvä käyttää strings , lue lisätietoja täältä .
  • Koska tavoitteena on määrittää mitkä binaarit sisältävät merkkijonon, strings -f olisi sopivampi.
  • Tämä on parempi vastaus.
  • paras vastaus. kiitos paljon

vastaus

Kysymyksesi koskee mallin sisältävien binaaritiedostojen löytämistä (ja olemme jo erittäin hyvät vastaukset!). Saatamme haluta saada esiintymiä täydentäviksi.

Käytän usein

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

saadakseni ympäröivän 20-merkkisen kontekstin.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *