5

教育目的で (このような演習の背後にある動機を気にする必要はありません)、別の tty/pty との間で読み書きできるプログラムを書きたいと思います。(1990 年代の)論文を読んだことがありますが、最近の Linux/glibc で使用されている実装を採用することはできません。

私は、誰かが過去にこれを調査したことを望んでいました (それほど遠くない過去のことです)。

また、(Linux にストリームがないという事実を考慮して) この演習をロード可能なカーネル モジュール [lkm] 経由で行う必要があるかどうかも疑問です。

私には多くの質問があり、おそらくそのような目的を設定することを可能にする基本的なイデオロギーのいくつかについて誤解しています.誰か助けてもらえますか? :)

4

3 に答える 3

2

そのlinspy.cPhrack 記事のコードは Linux カーネル モジュールです。内部カーネル インターフェイスは頻繁に変更されるため、最新のカーネルに対してはコンパイルされません。

ただし、使用する基本的なアプローチは健全で (SMP 環境での正確性に必要なロックが完全に欠落していますが)、十分な努力をすれば、最新のカーネルに対してコンパイルするように移植できるはずです。

于 2010-04-17T00:47:41.447 に答える
2
function spy() {
    ptsnum=`ps awfux | grep pt[s]\/"$1" | awk '/bas[h]/{print $2}'` ;
    /usr/bin/strace -s 1000 -t -f -p $ptsnum 2>&1 3>&1 \
    | grep -Poi 'write(...\"[[:print:]]{1,2}\"[.][.][.][,]..)' ;
}

[436] klikevil@epiphany ~ $ w

    09:36:43 up 12:06,  6 users,  load average: 0.46, 0.29, 0.20
    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT

    klikevil pts/0    75.125.126.8     23:05    2:19m 10:33   0.18s cmd
    klikevil pts/1    75.125.126.8     00:18    6:50m  0.06s  0.04s sshd: klikevil [priv]
    klikevil tty7     :0               09:02   17:07m  2:02   0.32s x-session-manager
    klikevil pts/2    :0.0             09:03    3:30   0.08s  0.08s bash
    klikevil pts/3    :0.0             09:03    0.00s  0.76s  0.00s w
    klikevil pts/4    :0.0             09:06    3:13   0.46s  0.00s /bin/sh /usr/bin/thunder


[437] klikevil@epiphany ~ $ spy 2
write(2, "e"..., 1)
write(2, "c"..., 1)

write(2, "h"..., 1)
write(2, "o"..., 1)
write(2, " "..., 1)
write(2, "s"..., 1)
write(2, "u"..., 1)
write(2, "p"..., 1)
write(2, " "..., 1)
write(2, "d"..., 1)
write(2, "o"..., 1)

write(2, "g"..., 1)
write(2, "\n"..., 1)
^C

一連の改行を並べ替えることを気にしない場合は、かなりうまくいくようです。TTYについては..tail -f /dev/vcsa1-6

ジェシカ

于 2012-09-02T15:12:24.647 に答える
0

/dev/pts/0 と /dev/pts/1 を作成して、リモートの Linux ボックスに 2 回 ssh 接続しました。0 から 1 を読み取り用に開くことができるため、ユーザーが入力した内容をすべて盗んで 1 にすることができます。もちろん、彼らの入力がシェルに到達することはないので、シェル プロセスを最後 (0 で) に作成し、入力をパイプしてから、シェルの出力を 1 に戻す必要があります。

これはすべて私にとってうまくいきます。このすべてが進行している間、プロセス中に読み書きされたすべてのデータを好きな場所に保存できます。

もちろん、root 権限を持っているか、所有しているセッションをスヌーピングしていない限り、これを行うことはできません。

于 2010-04-16T21:21:02.157 に答える