2015-04-19 97 views
0

在系統V消息隊列中引用tutorial使用ftok作爲消息隊列

它包含ftok以下示例:

#include <sys/msg.h> 

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

爲什麼要爲文件(/家/ beej/somefile)是由工藝可讀產生用於消息隊列的鍵?

此外,攻擊者是否容易猜測消息隊列的鍵值(鍵的類型很長)?

回答

1

由於ftok手冊頁,文件應該是可訪問的(無法讀取):

的ftok()函數使用由給定的路徑名​​命名的文件的標識(必須是指現有的,可訪問文件)

至少該進程必須對其進行統計。你可以用完全不可讀的文件來測試它,但是可以在你可以訪問的目錄和可讀的文件中找到你無法訪問的目錄。
根據攻擊者的問題,如果他知道使用的文件並試圖猜測proj_id,那麼攻擊者會更容易:今天proj_id是一個int,但仍然只有8位被使用