Вы можете, например, использовать read
в субоболочке
echo "inputfile outputfile" | myfuzzer | (read -a arg; echo "-i $.raw -o $.jpg" )
Я понимаю, что могу использовать xargs вот так:
echo "-i inputfile.raw -o outputfile.jpg" | xargs -t ./myprogram
Тем не менее, я тестирую приложение и у меня есть фаззер, который работает так:
echo "some text" | myfuzzer
Вывод: "@ om3 t9gxt"
Другими словами, мой фаззер берет строку и выполняет с ней некоторые перестановки, а затем выводит ее случайную версию.
Хитрость в том, что мне нужно перенаправить "-i inputfile.raw -o outputfile.jpg" через myfuzzer, чтобы он мутировал, НО мне нужно ДЕРЖАТЬ части -o, -i, .raw и .jpg .. И, наконец, передать вывод в myprogram следующим образом:
echo "-i inpu$@tfifsa4le.raw -o outpuF$tfFAFAile.jpg" | xargs -t ./myprogram
Поэтому мне нужен какой-то способ указать, что я хочу, чтобы имена файлов направлялись только через myfuzzer, но не через вышеупомянутые расширения и флаги, иначе они тоже будут переставлены, и myprogram не будет распознавать аргументы, если у них нет правильных флагов и расширений. ... но все же восстанавливаю строку для подачи в myprogram.
Как я могу сделать это с помощью Bash?
Вы можете, например, использовать read
в субоболочке
echo "inputfile outputfile" | myfuzzer | (read -a arg; echo "-i $.raw -o $.jpg" )