为了给出一些上下文,我试图了解伪终端(pty)。伪终端出现在用户进程(例如bash)中,好像它是真实终端。这允许做各种好东西,如telnet,ssh等。
我的问题是,对于像telnet这样的东西,是否可以“执行”bash并将stdin和stdout设置为远程客户机的tcp连接。因为如果可能,那么我不完全理解使用伪终端的价值
答案 0 :(得分:1)
是的,这是可能的 - 实际上这就是许多针对网络服务的“shellcode”攻击传统上给攻击者一个shell - 但是你无法以通常的方式以交互方式控制它。这是因为套接字不是tty。它无法将通过线路发送的字节转换为附加进程的信号(如^C
,^Z
等),它无法将EOF作为数据发送,也无法完成工作控制(暂停在^Z
,在后台暂停输入等),并且它无法传送模式开关(规范/“熟”模式与原始模式)。