Grep todas as strings de vários arquivos binários em um arquivo txt

0

Eu decidi brincar com toda a memória de processo de utilitários para descobrir quantos rastros de informações sensíveis um invasor poderia teoricamente obter da memória do aplicativo.

Eu encontrei este one-liner para fins de despejo:

grep rw-p /proc/$1/maps | sed -n 's/^\([0-9a-f]*\)-\([0-9a-f]*\) .*$/ /p' | while read start stop; do gdb --batch --pid $1 -ex "dump memory $1-$start-$stop.dump 0x$start 0x$stop"; done

Infelizmente, eu não uso o Bash fluentemente e enfrentei muitos spawns por esses arquivos de dump de script (todos com tamanho de kilobytes).

Então, minha pergunta é: como posso usar a ferramenta de linha de comando strings para fazer com que todas as strings terminadas em null sejam usadas em um arquivo?

Então, eu escrevi algo assim (entra em loop infinito sem nenhum resultado):

for f in *.dump; do strings $1 > foo.txt; done

Eu sei que este forro está perto do meu objetivo, mas não posso finalmente fazê-lo funcionar.

    
por im_infamous 08.08.2015 / 22:16

1 resposta

2

Que tal isso. Uso de "> >" para anexar ao arquivo em vez de sobrescrever o arquivo a cada vez.

rm foo.txt
for f in *.dump; do strings $f >> foo.txt; done

Para ajudar na sua revisão, você pode querer também passar por "sort -u" para remover quaisquer duplicatas.

Pode demorar um pouco para ser executado se você tiver muitos arquivos .dump grandes.

    
por 08.08.2015 / 22:23