diff --git a/src/detection/diskio/diskio_apple.c b/src/detection/diskio/diskio_apple.c index b733cbfc9..dd87d3851 100644 --- a/src/detection/diskio/diskio_apple.c +++ b/src/detection/diskio/diskio_apple.c @@ -46,6 +46,7 @@ const char* ffDiskIOGetIoCounters(FFlist* result, FFDiskIOOptions* options) continue; FFDiskIOResult* device = (FFDiskIOResult*) ffListAdd(result); + ffStrbufInit(&device->serial); ffStrbufInitS(&device->name, deviceName); ffStrbufInit(&device->devPath); device->type = FF_DISKIO_PHYSICAL_TYPE_UNKNOWN; diff --git a/src/detection/diskio/diskio_bsd.c b/src/detection/diskio/diskio_bsd.c index a4a911b93..8e3b3bc8a 100644 --- a/src/detection/diskio/diskio_bsd.c +++ b/src/detection/diskio/diskio_bsd.c @@ -47,6 +47,7 @@ const char* ffDiskIOGetIoCounters(FFlist* result, FFDiskIOOptions* options) FFDiskIOResult* device = (FFDiskIOResult*) ffListAdd(result); ffStrbufInitF(&device->devPath, "/dev/%s", provider->lg_name); + ffStrbufInit(&device->serial); ffStrbufInit(&device->interconnect); switch (snapIter->device_type & DEVSTAT_TYPE_IF_MASK) { diff --git a/src/detection/diskio/diskio_windows.c b/src/detection/diskio/diskio_windows.c index 853c74266..380ba14ba 100644 --- a/src/detection/diskio/diskio_windows.c +++ b/src/detection/diskio/diskio_windows.c @@ -66,6 +66,7 @@ const char* ffDiskIOGetIoCounters(FFlist* result, FFDiskIOOptions* options) DWORD retSize = 0; + ffStrbufInit(&device->serial); char sddBuffer[4096]; if(DeviceIoControl( hDevice, @@ -83,7 +84,10 @@ const char* ffDiskIOGetIoCounters(FFlist* result, FFDiskIOOptions* options) { STORAGE_DEVICE_DESCRIPTOR* sdd = (STORAGE_DEVICE_DESCRIPTOR*) sddBuffer; if (sdd->SerialNumberOffset != 0) + { ffStrbufSetS(&device->serial, (const char*) sddBuffer + sdd->SerialNumberOffset); + ffStrbufTrim(&device->serial, ' '); + } } DEVICE_SEEK_PENALTY_DESCRIPTOR dspd = {}; diff --git a/src/modules/diskio/diskio.c b/src/modules/diskio/diskio.c index ef15cef11..143e56340 100644 --- a/src/modules/diskio/diskio.c +++ b/src/modules/diskio/diskio.c @@ -6,7 +6,7 @@ #include "util/stringUtils.h" #define FF_DISKIO_DISPLAY_NAME "Disk IO" -#define FF_DISKIO_NUM_FORMAT_ARGS 11 +#define FF_DISKIO_NUM_FORMAT_ARGS 12 static int sortDevices(const FFDiskIOResult* left, const FFDiskIOResult* right) { @@ -102,6 +102,7 @@ void ffPrintDiskIO(FFDiskIOOptions* options) {FF_FORMAT_ARG_TYPE_UINT64, &dev->readCount}, {FF_FORMAT_ARG_TYPE_UINT64, &dev->writeCount}, {FF_FORMAT_ARG_TYPE_STRBUF, &sizePretty}, + {FF_FORMAT_ARG_TYPE_STRBUF, &dev->serial}, }); } ++index; @@ -202,6 +203,7 @@ void ffGenerateDiskIOJsonResult(FFDiskIOOptions* options, yyjson_mut_doc* doc, y yyjson_mut_obj_add_uint(doc, obj, "readCount", dev->readCount); yyjson_mut_obj_add_uint(doc, obj, "writeCount", dev->writeCount); yyjson_mut_obj_add_uint(doc, obj, "size", dev->size); + yyjson_mut_obj_add_strbuf(doc, obj, "serial", &dev->serial); } FF_LIST_FOR_EACH(FFDiskIOResult, dev, result) @@ -226,6 +228,7 @@ void ffPrintDiskIOHelpFormat(void) "Number of reads", "Number of writes", "Device size (formatted)", + "Serial number", }); }