TCP 네트워크를 통해 대화형 셸을 사용하고 있지만 bash
CTRL+c 시퀀스를 원격으로 보내는 방법을 알 수 없습니다 bash
.
먼저 netcat
인스턴스를 실행합니다(여기서 원격 bash와 상호 작용합니다).
nc -nvlp 8000
그런 다음 원격에서 실행합니다(간단하게 하기 위해 localhost를 사용하므로 다른 터미널에서 로컬로 시도해 볼 수 있습니다).
bash -i >& /dev/tcp/localhost/8000 0>&1
이제 netcat 터미널에 나타나는 대화형 bash를 사용하여 명령을 보낼 수 있으며 명령이 실행되고 결과가 표시됩니다.
내가 아직 알아내지 못한 것은 CTRL+c 시퀀스를 원격 bash에 전파하고 프로세스에서 이를 무시하는 방법입니다 netcat
.
지금까지 시도한 내용은 다음과 같습니다.
nc -nvlp 8000 & trap "printf '\003' >/proc/$!/fd/0" INT; fg; trap 0 INT
이는 netcat
백그라운드에서 시작하여 설정하고 수신되면 trap
파일 끝 시퀀스( 0x03
)를 netcat의 표준 입력으로 인쇄합니다.SIGINT
그런 다음 이 fg
명령을 사용하여 netcat
대화형 세션을 시작할 수 있도록 프로세스를 포그라운드로 가져옵니다. 명령 실행은 제대로 작동하지만 CTRL+c 시퀀스를 사용하면 반환 코드 netcat
와 함께 종료되고 콘솔 이나 터미널에 아무 것도 인쇄되지 않습니다.130
netcat
bash
마지막 트랩은 SIGINT
핸들러를 재설정합니다.
프로세스 는 성공을 나타내는 bash
반환 코드로 끝납니다 0
.
이 작업을 수행하는 방법에 대한 아이디어가 있습니까?
답변1
이것이 원하는 것인지 확실하지 않지만 netcat 프로세스를 백그라운드에 두고(CTRL+Z 누르기) 입력한 stty raw -echo
다음 프로세스를 재개할 수 있습니다. 이제는 괜찮을 것입니다.