我正在为网络安全课程的实验室工作,需要查明某些用户何时相互通信(通过命名管道)。
用户使用:
python gameProgram.py
然后该过程接受输入并将其写入命名管道。
我知道 /dev/random 文件在有人输入时会被修改,但这不能告诉我是谁输入的,对吗?
我正在考虑使用类似的东西:
grep "voluntary_switches" /proc/####/sched
说实话,我有点不知所措。上面的代码只返回一个整数。另外,我需要以某种方式获取进程号。我现在正在努力想出一个脚本,让我从 (A) 正在运行的进程列表转到 (B) 当该用户输入时输出用户名。不幸的是,没有 sudo 权限。
我需要做类似的事情:
echo 'ps | grep "python" | ??? | grep "voluntary_switches"'
有点 ...?
任何帮助将不胜感激!
答案1
练习的目的是训练你以不同的方式思考,所以用 20 行 bash 脚本来解决问题并没有太大帮助。换句话说
用户 Alice 如何仅使用普通的 Unix 命令来确定用户 Bob 是否处于活动状态/正在输入?
解决该问题的一种方法是查看 Bob(或 Bob 运行的进程)通过标准 Unix 功能“泄露”的所有信息,在本例中主要是进程表(可通过 和许多其他工具访问ps
)top
。要找出可用的信息,最好进行以下实验:
- 登录一次并
python gameProgram.py
与您的朋友一起运行(不要输入任何内容,只需让它空闲) - 使用第二个会话登录并
ps
查看该python
过程。在没有人输入时是否有任何信息发生变化,还是在对 的不同调用之间所有内容都保持不变ps
? - 开始输入内容/与朋友聊天
- 再次使用
ps
以查看输出中是否有任何变化(至少会有变化)。你能利用这一点吗?
一旦您掌握了基础知识(即了解哪些信息ps
与确定用户活动相关),就将所有内容组合在一个 shell 脚本中。