当前位置: 首页 > 面试题库 >

无法使用termios.TIOCSTI伪造终端输入

养翔
2023-03-14
问题内容

我见过的大多数代码示例都试图从stdin读取而没有本地回显。为此,他们修改了“本地模式”标志以删除“回声输入字符”的设置。我想我可能只是修改“输入模式”标志,TIOCSTI这是“插入输入队列给定的字节。”

。但是,即使我以root身份运行脚本,也没有任何效果。我写给fd的所有内容似乎都去了终端输出,而不是终端输入。基本上,我想做的就是这个确切的事情,但是在纯python中。

"""
termfake.py

Usage: sudo python termfake.py /dev/ttys002

Get the tty device path of a different local termimal by running `tty`
in that terminal.
"""

import sys
import termios

fd = open(sys.argv[1], 'w')
fdno = fd.fileno()

# Returns [iflag, oflag, cflag, lflag, ispeed, ospeed, cc]
tatters = termios.tcgetattr(fdno)
print('original', tatters)
tatters[0] = termios.TIOCSTI
print('TIOCSTI', termios.TIOCSTI)

# Set iflag
termios.tcsetattr(fdno, termios.TCSANOW, tatters)

# Verify setting change
with open('/dev/ttys002', 'w') as fd2:
    print('modified', termios.tcgetattr(fd2.fileno()))

fd.write('This is test\n')
fd.close()

问题答案:

TIOCSTI是一个ioctl(在中进行了记录tty_ioctl(4)),而不是终端设置,因此您不能使用tcsetattr()-您需要将伪输入的每个字符输入ioctl()。以前从未需要从Python进行过ioctl操作,但是以下操作似乎可以ls在运行Bash
的其他终端(指定为参数,例如 / dev / pts / 13 )中运行:

import fcntl
import sys
import termios

with open(sys.argv[1], 'w') as fd:
    for c in "ls\n":
        fcntl.ioctl(fd, termios.TIOCSTI, c)

TIOCSTI``CAP_SYS_ADMIN顺便要求root特权(或更具体地讲,但实际上通常是相同的)-请参阅capabilities(7)



 类似资料:
  • 这一章,我们来讲讲如何使用python做一个伪终端.不过在这之前你需要先了解一点伪终端的意思,还有一些技巧.这个我们会在下面讲到: 伪终端其实就是命令终端(cmd.exe,/bin/sh)通过网络接口反弹给攻击者,或者是新建一个监听端口反弹一个终端给攻击者,值得注意的就是原终端对于标准的输入,输出是不做处理的(stdin/stdout/stderr),同样的反弹的shell也是不对它做处理的.(s

  • 我试图安装我的工艺编码器包1.7.10。我已经下载了src forge包,正在使用终端。我用这个装的。http://www.minecraftforge.net/wiki/installation/source我找到了输入。/gradlew setupDecompWorkspace--refresh-dependencies的部分,它运行平稳,然后在结束时停止。我认为这与java所分配的内存有关。

  • 我正在从终端运行我的Java程序,我试图使用我的代码中的linux命令来计算某个目录中的文件数量;我已经设法获得了除此之外的所有其他命令的输出。 我的命令是: 当我在代码中运行命令时,它似乎没有任何输出,但当我在终端中运行相同的命令时,它工作正常,并实际输出该目录中的xml文件数。 这是我的代码: 更新代码,带输出 输出:

  • 问题内容: 我试图弄清楚如何在Linux中使用伪终端,实际上我想创建一个telnetd克隆,这是我在前面的问题中提到的。 我了解主终端和从终端的概念,并且对如何在C中使用syscall有基本的了解。 我的问题与打开从属/主文件描述符后的下一步有关。如何在奴隶中发射盖蒂?网上是否有 足够的 资源来使用forkpty(),openpty()或其他API? C语言中的一些示例会有所帮助。这是一个非常相似

  • 问题内容: 我最近在Python中开发了一个围绕某些ORM文档对象命名的类,以透明地向其中添加一些功能,而不用任何方式更改其接口。 我对此只有一个问题。假设我包裹了一些物体。呼叫将返回,因为确实是的一个实例。 有没有办法伪造Python中的对象类型以具有相同的调用返回? 问题答案: 测试对象的 类型 通常是python中的反模式。在某些情况下,测试对象的 “鸭子类型” 是有意义的,例如: 但是,即

  • 本文向大家介绍python使用arp欺骗伪造网关的方法,包括了python使用arp欺骗伪造网关的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python使用arp欺骗伪造网关的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Python程序设计有所帮助。