Направление пользовательского ввода в другую программу

Если в вашей системе до сих пор не установлен пакет разработки Java:

sudo apt install openjdk-11-jdk

Установите Flatpack в вашей системе:

sudo su
#type your admininstrator password

apt install flatpak
apt install gnome-software-plugin-flatpak
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

Перезагрузите систему

sudo reboot

Установите mojang.Minecraft через flatpak

sudo flatpak install flathub com.mojang.Minecraft
flatpak run com.mojang.Minecraft

Перетащите значок Minecraft -в верхнюю часть лончбара, и в следующий раз вы найдете там стартер MC -.

1
20.01.2021, 11:56
2 ответа

Что-то вроде этого?

# this is an infinite loop, but can be changed to whatever you need
while true; do read x; echo "$x" | base64; done

Выход:

foo
Zm9vCg==
bar
YmFyCg==
1
18.03.2021, 22:36

Я выяснил, почему cat | base64работает не так, как я предполагал. base64должен принять все входные данные, завершенные (я думаю )и EOF. Поскольку вывод из catне имеет терминатора, base64никогда не переставал принимать и буферизовать ввод, а ctrl-Cзавершает как cat, так и base64. По сути, base64ожидает окончания вывода catна EOF, но catне выводит EOF, поэтому закодированный вывод никогда не возвращается. При использовании cat << EOF | base64пользовательский ввод отражается и передается в base64, но выводится только после ввода EOF.

$ cat << EOF | base64
pipe heredoc> ls
pipe heredoc> test
pipe heredoc> EOF
bHMKdGVzdAo=

С другой стороны, ncнепрерывно принимает пользовательский ввод, и его вводы могут быть разделены с помощью \n. Таким образом, трубопровод работает с cat | nc. Вот как catи ncчасто используются для получения шеллов в пентестах и ​​CTF

Связать оболочку

# user
$ cat | nc $IP 1337

# target
$ nc -lp 1337

Обратный кожух

# user
$ cat | nc -lp 1337

# target
$ nc $IP 1337

Из-за различий в буферизации и терминаторах между приложениями(base64иnc)конвейер, который я хотел сделать, невозможен без некоторых настроек. Окончательную цепочку можно получить, поместив команды с возвратом всего вывода за один раз (, например.base64)внутри цикла whileи команды, которые принимают входную строку -по -строке (, например. ncсправа от трубы)

# code courtesy of @muru in the comments
while read x; do
   echo "$x" | base64
done | nc
1
18.03.2021, 22:36

Теги

Похожие вопросы