我目前正在和我的网络安全班同学玩黑手党/狼人游戏。
基本思想是:
- 在一台机器上,主持人启动一个服务器程序
- 所有玩家都通过 ssh 登陆机器并启动客户端程序
- 服务器/客户端通过命名管道进行通信(无法通过 stat 访问)
- 在坏人(黑手党/狼人)阶段,他们投票决定要杀死的人(通过服务器与其他坏人沟通)
- 在好人阶段,镇民猜测/推断谁是坏人并投票杀死他们
- 最后存活的一组获胜
我编写了一个 bash 脚本来告诉我每个用户何时输入(通过观察 /proc/####/sched 中的 nr_voluntary_switch)。我在坏人阶段运行这个脚本来检查谁在投票。
这种方法一直有效,直到服务器开始为用户分配随机名称而不是用户名。现在,服务器只会通知我们“'rabid marshmallow' 投票了”,而不是用户的名字。
关于如何辨别人们现在到底是谁,有什么想法吗?
答案1
由于这是通过 SSH 进行的,因此您可以考虑获取用户的唯一 IP 地址并在此基础上建立假设。假设连接到主持人服务器的客户端设备正在获取静态分配的地址,这将使为个人分配 IP 地址变得容易,特别是如果您可以看到谁在哪台机器上。