我将如何编写Linux TTY嗅探器?

ali*_*ate 5 c linux sniffing tty

出于教育目的(并非任何人都应该关心这种练习背后的动机)我想编写一个程序,可以读取/写入备用ttys/ptys.我读过论文(从20世纪90年代开始),但不能使用他们在现代Linux/glibc上使用的实现

我希望有人在过去(过去不太远)研究过这个问题,或者至少阅读有关它的文档,他们可以提供,这将进一步启发我.

如果必须通过可加载的内核模块[lkm]完成此练习,我也想知道(考虑到Linux没有流的事实).

我有很多问题,可能误解了一些允许这些目标落实到位的基本意识形态,有人可以帮忙吗?:)

Sni*_*gus 0

我两次通过 ssh 进入远程 Linux 机器,生成 /dev/pts/0 和 /dev/pts/1。从 0 开始,我可以打开 1 进行读取,从而窃取用户输入到 1 的所有内容。如果我希望他们看到他们的输入,我必须将其写回 /dev/pts/1。当然,他们的输入永远不会到达他们的 shell,所以我必须在我的一端(在 0 上)创建一个 shell 进程并将其输入通过管道传输,然后将 shell 的管道输出回 1。

这一切对我来说都很有效。当这一切发生时,我可以在任何我喜欢的地方保存在此过程中读取和写入的所有数据。

当然,除非您是 root 或正在窥探您拥有的会话,否则您无法执行此操作,但您只想将其用于教育目的,对吧?