Como posso usar o conteúdo de um arquivo e cada linha de outro arquivo como argumentos em um script bash, para uma ferramenta de linha de comando?

0

Eu tenho visto as outras perguntas que foram úteis, mas não respondem ao meu problema. Estou tentando escrever um roteiro que possa me auxiliar no trabalho da faculdade *. Eu tenho um arquivo contendo um hash que através de "tentativa e erro" precisa ser quebrado para obter a resposta final. As instruções exigem especificamente a edição jtr jumbo, portanto a lista de formatos possíveis é grande. Eu passei todos os formatos disponíveis para um arquivo chamado "johnformats" que contém os formatos 1 por linha. Eu quero que este script seja executado como:

$ john hash.txt --format=[cat line 1 from johnformats] > johnout

repita o último valor de formato

$ john hash.txt --format=[cat line 204 from johnformats] > johnout

Meu script é assim:

#!/bin/bash

johnformats=$1
johnout=$2

exec 4> "$johnout"

while read -ru 3 LINE; do
    john "$(cat hash.txt)" --format="$LINE" >&4
done 3< "$johnformats"

Quando executado usando o script, o hash não é carregado:

stat: cat hash: No such file or directory

Eu tentei o seguinte removendo o $ hash completamente para ver se algum deles funciona:

Password files required, but none specified

repita 204 vezes dizendo que a outra parte funciona, mas

john a sintaxe do ripper requer o hash (s) de um arquivo.

Eu só preciso descobrir como usar o conteúdo de "hash" para cada $ LINE.

* note que minha pergunta não é como decifrá-lo, é como escrever um script para a ferramenta que estou usando para decifrá-lo. O script é incentivado, mas não obrigatório, e não tem nada a ver com a atribuição. Eu não memorizei todos os possíveis hash, e isso me salvará do túnel do carpelo.

    
por S. Buster 14.06.2018 / 07:49

1 resposta

0

Eu não entendo o motivo da complexidade adicional. O que você realmente quer é:

john hash.txt --format=[cat line 1 from johnformats] > johnout
john hash.txt --format=[cat line 2 from johnformats] >> johnout
john hash.txt --format=[cat line 3 from johnformats] >> johnout

etc.

Então, em um script, seria:

#!/bin/bash

johnformats=$1
johnout=$2

while read line ; do
    john hash.txt --format="$line" >>$johnout
done < $johnformats

Não deve haver necessidade de adicionar a complicação dos filedescriptors addtional 3 e 4, e o "$(cat hash.txt)" faz algo completamente diferente, adicionando hash.txt como argumento.

É claro, a mensagem de erro sugere que hash é usado como argumento, não hash.txt que está no código acima e também sugere que o arquivo hash não existe. Essas são coisas que você quer checar também.

    
por 04.07.2018 / 22:12