3.3 Sleuth Kit Framework開發人員開發模塊指南
以下頁面與開發框架中要使用的Modules有關。
開發Modules
總覽
Modules總是在Pipelines的上下文中執行。有關不同類型的Pipelines以及如何配置它們的詳細信息,請參閱文件分析與后處理Pipelines。
一個Modules應該執行一項任務,以便可以在許多不同的場景中使用。例如,如果您想在文件分析Pipelines中執行哈希查找,那么最好是有一個Modules可以計算哈希值,而另一個Modules可以在數據庫中查找哈希。這種關注點的分離允許哈希值稍后在管道中被其他Modules使用,并允許您輕松支持可互換的或多個哈希數據庫。
請注意,Pipelines還可以包含可執行程序Modules。本節僅介紹如何開發動態鏈接庫(DLL)Modules。有關可執行Modules的詳細信息,請參閱“插件與可執行Modules”。
Setup
假定您已經編譯了框架,或者至少可以從編譯的版本訪問頭文件和庫文件。如果不是,請參考BUILDING.txt源代碼隨附的文件。
輕松創建Modules
框架源代碼包括幾個執行常見任務(例如哈希計算)的官方Modules。這些Modules之一(熵Modules)旨在被復制并重命名為開發自己的Modules的起點。
首先將TskModules下的c_EntropyModule文件夾復制到您選擇的位置。重命名文件夾。該框架不允許使用相同名稱的多個Modules,因此您可能希望將您的項目或公司名稱合并到Modules名稱中,以防止名稱沖突。
您將在新Modules文件夾的win32文件夾中找到Microsoft Visual Studio 2010解決方案和項目文件。刪除win32文件夾中的所有內容,.sln和.vcxproj文件除外。重命名這些文件,然后在Visual Studio中打開解決方案。
Visual Studio將報告無法打開EntropyModule項目。從解決方案中刪除該項目,并將重命名的項目作為現有項目添加到解決方案中。在Visual Studio中重命名EntropyModule.cpp,然后打開重命名的文件。現在您可以編輯代碼以創建自己的Modules了。
從頭開始創建Modules
如果您希望或需要從頭開始創建DLL Modules,而不是簡單地復制和重命名熵Module,則需要了解如何配置編譯器和開發環境以創建DLL。本節的其余部分假定您知道如何做。
該框架不允許使用相同名稱的多個Module,因此您可能希望將您的項目或公司名稱合并到Module名稱中,以防止名稱沖突。
強烈建議您至少在DLL Module的一個源文件中包含以下框架頭文件:
#include“ TskModuleDev.h”
該頭文件包括框架服務和實用程序的頭文件,并添加了四個版本信息功能的“樣板”定義(請參閱/ ref mod_setup_version),框架要求您的DLL導出。如果確保將TSK_HOME環境變量設置為TSK的根文件夾(在Windows環境中),并且$ TSK_HOME和$ TSK_HOME / framework在包含搜索路徑中,則編譯器應該能夠找到此頭文件。
接下來,您需要定義框架在使用Module時將調用的幾個函數。這些功能在以下小節中介紹。
Module初始化功能
在此initialize功能中,您可以執行一次性Module配置任務,例如驗證輸入或輸出文件夾或建立與外部系統(如數據庫服務器)的連接。Module初始化功能必須實現,并且必須具有以下簽名:
TskModule :: Status TSK_MODULE_EXPORT initialize(const char * args);
該initialize函數采用char *參數,如果arguments在管道配置文件中指定了Module的字符串,則該參數不能為NULL 。有關詳細信息,請參見Pipeline配置。
該initialize函數返回的狀態應該為TskModule :: OK或TskModule :: FAIL。返回TskModule :: FAIL表示嚴重問題,將禁用管道。
需要注意的是,如果一個Module被設計為包含在這兩個文件的分析和后處理/報告的管道,它必須支持多個呼叫initialize。
Module執行功能:文件分析
如果您的Module將在文件分析管道中執行,則它必須實現該run功能。對于通過文件分析管道發送的每個文件,將調用此函數,并且應具有以下簽名:
TskModule :: Status TSK_MODULE_EXPORT run(TskFile * pFile);
所述run函數傳遞一個指向TskFile可用于同時訪問的元數據和與文件相關聯來分析內容對象,在所解釋的訪問文件內容和元數據請注意,框架在Moduleopen的TskFile對象上調用成員函數,并且指針所指向的對象由框架管理,因此Module不得刪除它。
該run函數應返回TskModule :: OK,TskModule :: FAIL或TskModule :: STOP。如果Module成功分析了文件或確定不需要分析文件,則應返回TskModule :: OK。如果Module嘗試分析文件,但由于錯誤情況而無法執行分析,則應返回TskModule :: FAIL。一個TskModule :: FAIL返回值將被記錄,但管道仍然會繼續運行。TskModule :: STOP如果Module希望管道停止處理文件,則應返回。如果Module確定不對文件進行進一步的分析(例如,通過將其識別為已知的好文件),這將很有用。
Modules執行功能:后處理/報告
如果您的Modules將在后處理/報告管道中執行,則它必須實現該report功能。與文件分析管道的Modules執行功能不同,此函數未傳遞指向TsKFile對象的指針。函數簽名為:
TskModule :: Status TSK_MODULE_EXPORT report();
該report函數無權訪問單個文件指針作為參數,但是可以訪問下面的“ 訪問其他文件”部分所述。像該run函數一樣,report()函數可以通過返回TskModule :: STOP狀態來停止執行管道中的后續Modules。這不應該輕易完成。回到TskModule ::STOP從run函數終止當前文件的分析,但返回TskModule ::STOP從report目前的磁盤映像的終止分析。
Modules清理功能
銷毀finalize管道時,將調用管道中每個Module上的函數。該函數必須具有以下簽名:
TskModule ::Status TSK_MODULE_EXPORT finalize();
該finalize功能是Module釋放Module初始化或執行期間分配的任何資源的地方。
需要注意的是,如果一個Module被設計為包含在這兩個文件的分析和后處理/報告的管道,它必須支持多個呼叫finalize。
Modules識別功能
您還應該實現函數以使用以下簽名返回Modules的名稱,描述和描述:
TSK_MODULE_EXPORT const char *名稱(); TSK_MODULE_EXPORT const char * description(); TSK_MODULE_EXPORT const char * version();
Modules版本信息功能
至少在DLL Modules的一個源文件中包含TskModuleDev.h框架頭文件,該框架要求您的DLL導出這四個版本信息功能的“樣板”定義:
TSK_MODULE_EXPORT TskVersionInfo :: Compiler getCompiler(); TSK_MODULE_EXPORT int getCompilerVersion(); TSK_MODULE_EXPORT int getFrameWorkVersion(); TSK_MODULE_EXPORT TskVersionInfo :: BuildType getBuildType();
其他功能
更復雜的Modules可能會將Modules API函數以外的函數和變量放在單獨的源文件中,并且/或者可以定義各種C ++類來執行Modules的工作。但是,也可以將此類函數和變量簡單地封裝在匿名名稱空間中,以賦予它們文件范圍而不是全局范圍。這取代了使用“ static”關鍵字聲明文件作用域函數和變量的較早做法。匿名名稱空間是一種更靈活的構造,因為可以在其中定義類型。例如:
命名空間 { 結構統計 { long byteCounts [256]; long totalBytes = 0; };
const char * MODULE_NAME =“熵”; const char * MODULE_DESCRIPTION =“對給定文件的內容進行熵計算”; const char * MODULE_VERSION =“ 1.0.0”;
double computeEntropy(TskFile * pFile) { //這里的代碼 } }
Linux / OS-X模塊開發人員應確保在模塊鏈接時唯一地命名或綁定模塊API函數以外的其他模塊函數。將這些功能放在匿名名稱空間中以使其具有靜態鏈接是實現此目的的一種方法。
CAVEAT:靜態數據可能與多線程不兼容,因為每個線程都會獲得自己的數據副本。
Linux / Os-X Module和Module API
Modules標識,初始化,執行,清除和版本信息功能僅應由TSK Framework調用。除非在鏈接時使用了適當的編譯器/鏈接器選項來綁定所有庫內部符號,否則Linux / OS-X Module不得在Modules內調用這些函數。
在Modules中做事
既然您知道如何構建Modules,我們將研究您的模塊如何與框架交互以完成其工作。
框架服務
該框架為每個Modules提供了一組服務。這些服務允許Modules訪問公共資源和信息,并且可以通過單例TskServices類進行訪問。下面的代碼片段演示了如何使用TskServices類來訪問Log服務:
Log&tskLog = TskServices :: Instance(). getLog();
可以以類似方式訪問其他框架服務。以下是框架服務類的列表以及每個類的簡要說明(有關更多詳細信息,請參閱服務類的文檔)。這些服務中的許多返回指向接口的指針或引用,并且服務的實現由集成框架的程序決定。因此,某些服務可能在給定的應用程序中不可用:
TskSystemProperties提供了一個系統范圍配置數據的接口,例如可以從配置文件讀取的數據。系統屬性存儲為名稱/值對。
TskImgDB為圖像數據庫提供接口。此接口可用于對數據庫運行臨時查詢,以識別文件的子集。
TskFileManager允許Modules保存,復制或刪除文件內容。
日志使Modules可以將日志消息寫入使用該框架的應用程序配置的任何日志記錄機制。該框架帶有默認的日志記錄基礎結構,該結構將消息記錄到單個文件中。作為從TskServices獲取Log服務并與其進行交互的替代方法,Modules可以使用LOGERROR(),LOGWARN()和LOGINFO宏來獲取Log接口并在一條語句中記錄消息。
TskBlackboard提供了模塊間通信的機制。模塊可以將數據發布到黑板上并從黑板上檢索數據。通常,黑板將其數據存儲在圖像數據庫中。
計劃程序提供了一種計劃其他類型的分析的機制(對于分布式實現特別有用)。例如,如果模塊打開一個ZIP文件,則它可能會安排對每個提取文件的分析。
ImageFile提供對正在分析的磁盤映像的訪問。這允許模塊直接從映像訪問特定文件或原始數據。
訪問文件內容和元數據
run調用模塊的功能時,將始終向其傳遞指向當前正在分析的文件的TskFile對象的指針。TskFile對象可以代表所有類型的文件,包括分配和刪除的文件,雕刻的文件和派生的文件(例如,從ZIP文件提取的文件)。您的模塊可以使用TskFile :: read()成員函數讀取文件內容,并可以使用其他各種TskFile方法訪問文件元數據,例如TskFile :: getSize(),TskFile :: getCrtime()和TskFile.getPath()。請參閱TskFile文檔以更全面地了解其成員功能。
訪問其他文件
后處理/報告模塊可能要訪問文件的特定子集。要訪問這些文件,模塊將需要分配給圖像數據庫中文件的唯一ID。該框架支持通過TskImgDB服務對圖像數據庫進行臨時查詢。特別是,TskImgDB :: getFileIds()和TskImgDB :: getFileCount()方法允許您定義條件并獲取滿足條件的任何文件的文件ID或滿足條件的文件數。
下面的代碼片段演示了如何使用TskImgDB :: getFileIds()方法檢索Windows“ NTUSER.DAT”注冊表文件的標識符:
std :: string condition(“ WHERE files.dir_type = TSK_FS_NAME_TYPE_REG AND UPPER(files.name)=’NTUSER.DAT”); TskImgDB&imgDB = TskServices :: Instance(). getImgDB(); std :: vector < uint64_t > fileIds = imgDB.getFileIds(condition);
注意,該條件只是一個SQL“ WHERE”子句。條件的“ dir_type = TSK_FS_NAME_TYPE_REG”部分將查詢限制為文件而不是目錄。
條件可以是可以附加到SQL SELECT語句的任何SQL子句。下一個代碼段指定一個條件,該條件包括一個JOIN和一個ORDER BY子句:
std :: ostringstream條件; 條件 < < “ JOIN file_hashes ON files.file_id = file_hashes.file_id WHERE file_hashes.known =” < < TskImgDB :: IMGDB_FILES_KNOWN_BAD < < “ ORDER BY files.file_id”; std :: vector < uint64_t > fileIds = TskServices :: Instance(). getImgDB()。getFileIds(condition.str());
有關可查詢的表和列的詳細信息,請參考SQLite Image Database Schema v1.5。
有了文件ID后,就可以使用TskFileManager :: getFile()方法從TskFileManager服務獲取相應的TskFile對象。
實用工具
如果您發現自己需要進行一些常規數據轉換,請檢查TskUtilities類。它可能具有相關的方法。如果沒有,那么您可能還需要查看框架所依賴的Poco庫所提供的內容。Poco可以省去您從頭開始編寫常用代碼的工作量。
示例Modules
該頁面提供了一些有關如何實現一些常用Modules的提示。如文件分析與后處理管道中概述的那樣,可以為文件分析管道或后處理管道編寫Modules。兩種Modules之間的主要區別在于它們運行的頻率和時間。在分析了圖像中的所有文件之后,將對每個單獨的文件運行文件分析Modules,并且對后處理Modules運行一次。通常,如果您的Modules僅檢查圖像中文件的一小部分,則使其成為后處理Modules會更有效。如果您的Modules將分析圖像中的每個文件,那么它應該是文件分析Modules。
MD5哈希計算Modules
通常,為圖像中的每個文件計算MD5哈希值。因為我們希望它計算每個文件的哈希,所以MD5哈希計算Modules將是文件分析Modules。
用于計算MD5哈希總和的庫通常沒有設置或清除要求,因此我們很可能會編寫initialize()和finalize()執行僅返回TskModule :: OK狀態的函數。
該run()Modules的功能將需要代碼來使用TskFile :: read()讀取文件的內容,并將文件內容推入MD5庫的哈希計算功能。可以通過調用TskFile :: setHash()將計算出的MD5值添加到圖像數據庫中。
注意:框架中包含用于生成MD5和SHA-1哈希值之一或兩者的哈希計算Modules的源代碼。
MD5哈希查找Modules
在哈希數據庫中查找文件的MD5哈希值以識別已知文件并檢測重復文件也是很常見的。由于這種查找是針對所有文件完成的,因此可以在文件分析Modules中實現。
initialize()哈希查找Modules的功能可能會打開該Modules使用的哈希數據庫,并且該Modules的finalize()功能將關閉數據庫連接。
該run()函數將使用TskFile :: getHash()獲得給定文件的MD5哈希值。然后它將在哈希數據庫中查找哈希值。命中率將以帶有TSK_SET_NAME屬性的TSK_HASHSET_HIT工件發布到黑板上,以標識哈希數據庫。該模塊還將在命中時使用TskImgDB :: updateKnownStatus()來設置文件的狀態,如果Modules進行的是已知良好的查找,則命中將使函數返回TskModule :: STOP來終止文件的進一步分析。
注意:該框架包含使用TSK的哈希數據庫支持的MD5哈希查找Modules的源代碼。
注冊表分析Modules
磁盤映像分析系統通常具有一個讀取注冊表數據的Modules。由于Windows系統上只有幾個注冊表配置單元,因此該Modules可能會實現為后處理Modules。
注冊表分析Modules的initialize()和finalize()函數可能會簡單地返回TskModule :: OK。
該report()方法將使用帶有條件參數的TskImgDB :: getFileIds()來獲取注冊表配置單元文件的文件ID。然后,將使用文件ID獲取TskFile對象以支持對蜂巢的分析。
注冊表分析的結果可用于生成報告。
注意:該框架包含使用開源RegRipper工具的注冊表分析Modules的源代碼。
壓縮文件提取Modules
磁盤映像分析系統可能需要一個模塊來提取壓縮文件中壓縮的文件。由于zip文件提取Modules將需要檢查圖像中的每個文件以確定它是否是存檔文件,因此它將是文件分析Modules。
一個zip文件提取Modules可能具有initialize()和finalize()函數,這些函數可以立即返回TskModule :: OK的狀態。
該Modules的run()功能將需要檢查給定的文件以查看它是否為zip文件。如果是這樣,該Modules將需要處理文件,然后使用對TskFileManager :: addFile()和Scheduler :: schedule()的調用來添加和安排對提取文件的分析。
注意:該框架包含使用Poco Zip庫中的ZipArchive類的zip文件提取模塊的源代碼。
SQLite圖像數據庫架構v1.5
分析過程元數據表
db_info
包含有關生成圖像數據庫的軟件的元數據。
- 名 -軟件的名稱,例如,的dbschema,獵犬試劑盒等(文本)
- 版本 -軟件版本,例如1.5、4.0.0等(文本)
modules
每個用于生成圖像數據庫的Modules都包含一行。
- module_id-分配給Modules的ID(INTEGER)
- 名稱 -Modules的名稱(文本)
- description-Modules描述(文本)
module_status
文件分析管道中的Modules返回的每個狀態代碼均包含一行。
v
- module_id-分配給Modules的ID(INTEGER-外鍵,Modules)
- file_id-分配給分析Modules的文件的ID(INTEGER-外鍵,files)
- 狀態 -狀態報告的Modules上的文件的分析完成(INTEGER - TskModule ::Status)
圖像表
image_info
分析的一組圖像中的每個圖像都包含一行,以生成圖像數據庫。此表中有多于一行的分割圖像。
- 鍵入 -磁盤圖像文件類型(INTEGER - TSK_IMG_TYPE_ENUM)
- ssize-成像設備的塊(扇區)大小,以字節為單位(INTEGER)
img_names
分析的一組圖像中的每個圖像都包含一行,以生成圖像數據庫。此表中有多于一行的分割圖像。
- 名稱 -圖像文件路徑(TEXT)
- seq-圖像集中圖像的序列號(從一開始向上計數)(INTEGER)
卷/分區表
vol_info
分析的一組圖像中的每個卷/分區包含一行,以生成數據庫。
- vol_id-分配給卷/分區的ID(INTEGER)
- sect_start-映像中卷/分區的開始的塊(扇區)偏移量(INTEGER)
- sect_len-卷/分區(INTEGER)中的塊(扇區)數
- description-卷/分區的描述(TEXT)
- 標志 -標記為體積/分區(INTEGER - TSK_VS_PART_FLAG_ENUM)
文件系統表
fs_info
在分析產生數據庫的一組圖像中,每個文件系統都包含一行。
- fs_id-分配給文件系統的ID(INTEGER)
- img_byte_offset-映像中文件系統啟動的字節偏移量(INTEGER)
- vol_id-文件系統所在的卷/分區的ID(INTEGER-外鍵,vol_info)
- fs_type-文件系統類型(INTEGER- TSK_FS_TYPE_ENUM)
- block_size-塊大小(以字節為單位)(INTEGER)
- block_count-塊數(INTEGER)
- root_inum-根目錄的元數據地址(INTEGER)
- first_inum-第一個有效的元數據地址(INTEGER)
- last_inum-上一個有效的元數據地址(INTEGER)
files
對于分析產生數據庫的一組圖像中找到的每個文件,都包含一行。
- file_id-分配給文件的ID(INTEGER)
- par_file_id-文件的父文件,例如,常規文件的目錄,派生文件的存檔文件(INTEGER-外鍵,files)
- 名稱 -文件名(TEXT)
- full_path-圖像中文件的路徑(TEXT)
- 尺寸 -大小以字節(整數)
- type_id-圖像分析系統對文件的分類,例如文件系統文件,雕刻文件等(INTEGER- TSK_DB_FILES_TYPE_ENUM)
- dir_type-目錄元數據結構中指定的文件類型,例如目錄,常規文件等。(INTEGER- TSK_FS_NAME_TYPE_ENUM)
- meta_type-文件元類型,例如目錄,常規文件等(INTEGER- TSK_FS_META_TYPE_ENUM)
- dir_flags-分配狀態(INTEGER- TSK_FS_NAME_FLAG_ENUM)
- meta_flags-文件元數據結構標志(INTEGER- TSK_FS_META_FLAG_ENUM)
- ctime-自1970年1月1日UTC(INTEGER)起最后的文件/元數據狀態更改時間,以秒為單位
- crtime-創建時間(INTEGER)
- atime-訪問時間(INTEGER)
- mtime-修改時間(INTEGER)
- 模式-Unix樣式的文件權限(INTEGER- TSK_FS_META_MODE_ENUM)
- uid-所有者ID(INTEGER)
- gid-組ID(INTEGER)
- 狀態 -分析狀態(INTEGER- TskImgDB :: FILE_STATUS)
file_hashes
對于在分析生成數據庫的一組圖像中找到的每個文件,包含一行文件內容哈希值。如果不計算,則哈希值可以為NULL。
- file_id-分配給文件的ID(INTEGER-外鍵,files)
- md5 -MD5哈希(文本)
- sha1 -SHA-1哈希(文本)
- sha2_256 -SHA-256哈希(TEXT)
- sha2_512 -SHA-512哈希(TEXT)
- 已知 -由哈希數據庫查找確定的已知狀態(INTEGER- TskImgDB :: KNOWN_STATUS)
fs_files
對于在文件系統分析期間發現的每個文件,包含一行。
- file_id-分配給文件的ID(INTEGER-外鍵,files)
- fs_id-包含文件的文件系統的ID(INTEGER-外鍵,fs_info)
- fs_file_id-文件系統分配給文件的ID,例如,一個索引節點號(INTEGER)
- attr_id -NTFS文件系統中文件的MFT屬性ID(INTEGER)
- attr_type -NTFS文件系統中文件的MFT屬性類型(INTEGER- TSK_FS_ATTR_TYPE_ENUM)
fs_blocks
對于文件系統文件中的每個連續塊運行,包含一行。
- file_id-分配給文件的ID(INTEGER-外鍵,files)
- fs_id-分配給包含文件的文件系統的ID(INTEGER-外鍵,fs_info)
- seq-序列號,從一組中的一個開始向上計數(INTEGER)
- blk_start-運行開始的邏輯塊偏移量(INTEGER)
- blk_len-運行中的塊數(INTEGER)
alloc_unalloc_map
卷/分區中每個未分配的塊(扇區)的連續運行包含一行。這些運行用于創建未分配的扇區文件以準備雕刻。
- unalloc_img_id-分配給包含運行的未分配扇區文件的ID(INTEGER)
- vol_id-包含運行的卷/分區的ID(INTEGER-外鍵,vol_info)
- unalloc_img_sect_start-未分配扇區映像文件(INTEGER)中運行開始的扇區偏移量
- orig_img_sect_start-圖像中運行開始的扇區偏移量(INTEGER)
- sect_len-以扇區為單位的運行長度(INTEGER)
unalloc_img_status
對于準備進行雕刻的每個未分配扇區文件,包含一行。
- unalloc_img_id-分配給文件的ID(INTEGER)
- 狀態 -分析狀態(INTEGER- TskImgDB :: UNALLOC_IMG_STATUS)
carved_files
從未分配空間雕刻的每個文件都包含一行。
carved_sectors
對于用于創建雕刻文件的未分配空間的每個連續塊(扇區)運行,包含一行。
- file_id-分配給包含運行的雕刻文件的ID(INTEGER-外鍵,files)
- seq-雕刻文件中一組運行中的運行的序號,從一個開始計數(INTEGER)
- sect_start-圖像中運行的扇區偏移量(INTEGER)
- sect_len-以扇區為單位的運行長度(INTEGER)
unused_sectors
雕刻后剩余的未分配空間的每個連續塊(扇區)行包含一行。這些運行用于創建未使用的扇區文件以通過文件分析管道。
- file_id-分配給包含運行的未使用扇區文件的ID(INTEGER-外鍵,files)
- vol_id-包含運行的卷/分區的ID(INTEGER-外鍵,vol_info)
- sect_start-圖像中運行的扇區偏移量(INTEGER)
- sect_len-以扇區為單位的運行長度(INTEGER)
derived_files
對于從另一個文件派生的每個文件(例如,從存檔文件提取的文件)包含一行。
- file_id-分配給文件的ID(INTEGER-外鍵,files)
- derivation_details-未使用(文本)
Blackboard Tables
blackboard_attributes
在分析以生成數據庫的一組圖像中找到的每個工件包含一行。
- artifact_id-分配給工件的 ID(INTEGER)
- obj_id-分配給與工件關聯的文件的ID(INTEGER-外鍵,files)
- artifact_type_id-分配給工件類型的ID(INTEGER-外鍵,blackboard_attribute_types)
blackboard_attributes
存儲名稱-值對的值,它們是與工件關聯的屬性。僅應填充值列之一。
- artifact_id-分配給工件的 ID(INTEGER)
- source-源字符串,應為發現工件的模塊的名稱(TEXT)
- 上下文 -其他上下文信息(TEXT)
- attribute_type_id-屬性類型的ID(INTEGER-外鍵,blackboard_attribute_types)
- value_type-值的類型,用作值列的并集的判別式(INTEGER- TskImgDB :: VALUE_TYPE)
- value_byte-二進制數據(BLOB)的斑點
- value_text-文本字符串(TEXT)
- value_int32-32位整數(默認為INTEGER-0)
- value_int64-64位整數(默認情況下,INTEGER-0)
- value_double-一個double(默認為NUMERIC-0)
- obj_id-分配給與屬性關聯的文件的ID(INTEGER-外鍵,files)
blackboard_artifact_types
工件類型。
- artifact_type_id-分配給類型的ID(INTEGER)
- type_name-類型(TEXT)的唯一字符串標識符
- display_name-類型(TEXT)的可讀顯示名稱
blackboard_attribute_types
工件屬性類型。
- attribute_type_id-分配給類型的ID(INTEGER)
- type_name-類型(TEXT)的唯一字符串標識符
- display_name-類型(TEXT)的可讀顯示名稱
Sleuth Kit中文使用教程
推薦文章: