使用ftok作为消息队列

时间:2015-04-19 18:28:41

标签: ipc

在系统V消息队列中引用tutorial

它包含ftok的以下示例:

#include <sys/msg.h>

key = ftok("/home/beej/somefile", 'b');
msqid = msgget(key, 0666 | IPC_CREAT);

为什么进程可以读取文件(/ home / beej / somefile)来生成消息队列的密钥?

此外,攻击者是否容易猜出消息队列的键值(键的类型很长)?

1 个答案:

答案 0 :(得分:1)

ftok的手册页开始,文件应该是可访问的(不可读):

  

ftok()函数使用由给定路径名命名的文件的标识(必须引用现有的可访问文件)

至少该过程必须对其进行统计。您可以使用完全无法读取的文件来测试它,但是在您可以访问的目录中以及可读取文件但在目录中无法访问的文件。
根据攻击者的问题,如果攻击者知道使用过的文件并尝试猜测proj_id,那么对于攻击者来说会更容易再次根据手册页:今天proj_id是一个int,但仍然只有8位是使用