Edited at

Linuxのpeekfdコマンドが面白い(全ファイル入出力を盗聴)

More than 3 years have passed since last update.

psmiscパッケージに入っているpeekfdコマンドを使うと、任意のプロセスの全ファイルディスクリプタへの読み書きを監視(内容を盗聴)することができる。

実行例:

あるシェルからこれを実行

$ echo $$; while true; do echo hoge; sleep 1;done

3457
hoge
hoge
hoge

このシェルのPIDは3457と分かったので、別のシェルからrootでpeekfdを実行する:

# peekfd 3457

writing fd 1:
hoge
hoge
hoge

echo hogeによる標準出力への書き込みを盗聴できている。

3457のシェルでwhileループを止めてキー入力すれば、キー入力も盗聴できる。

/proc/{PID}/fdの中を見ればfd何番がどのファイルか分かる。