Como posso usar o terminal Linux para canalizar apenas partes da entrada do programa concatenadas com strings rígidas?

1

Eu entendo que posso usar xargs assim:

echo "-i inputfile.raw -o outputfile.jpg" | xargs -t ./myprogram

No entanto, estou testando fuzz o aplicativo e tenho um fuzzer que funciona assim:

echo "some text" | myfuzzer Saída: "@ om3 t9gxt"

Em outras palavras, meu fuzzer pega uma string e executa algumas permutações nela e, então, gera uma versão aleatória dela.

O truque é, eu preciso redirecionar "-i inputfile.raw -o outputfile.jpg" ATRAVÉS do myfuzzer para que ele seja mutado, MAS, eu preciso MANTER o -o, -i, .raw e .jpg partes ... E finalmente passar a saída para myprogram assim:

echo "-i [email protected] -o outpuF$tfFAFAile.jpg" | xargs -t ./myprogram

Então eu preciso de alguma forma para especificar que eu quero apenas que os nomes dos arquivos sejam direcionados através do myfuzzer, mas não as extensões e sinalizadores mencionados anteriormente, caso contrário eles serão permutados e meu programa não reconhecerá os argumentos a menos que eles tenham o direito flags e extensões ... Mas ainda reconstruir uma string para alimentar meu programa.

Como posso fazer isso usando o Bash?

    
por the_endian 08.05.2018 / 10:30

1 resposta

1

Você poderia, por exemplo, usar read em um sub shell

echo "inputfile outputfile" | myfuzzer | (read -a arg; echo "-i ${arg[0]}.raw -o ${arg[1]}.jpg" )
    
por 08.05.2018 / 11:18