diff --git a/src/detection/host/host.h b/src/detection/host/host.h index 23462f824..1b0c61187 100644 --- a/src/detection/host/host.h +++ b/src/detection/host/host.h @@ -4,13 +4,13 @@ typedef struct FFHostResult { - FFstrbuf productFamily; - FFstrbuf productName; - FFstrbuf productVersion; - FFstrbuf productSku; - FFstrbuf productSerial; - FFstrbuf productUuid; - FFstrbuf sysVendor; + FFstrbuf family; + FFstrbuf name; + FFstrbuf version; + FFstrbuf sku; + FFstrbuf serial; + FFstrbuf uuid; + FFstrbuf vendor; } FFHostResult; const char* ffDetectHost(FFHostResult* host); diff --git a/src/detection/host/host_android.c b/src/detection/host/host_android.c index 4b7c095a9..b496029a8 100644 --- a/src/detection/host/host_android.c +++ b/src/detection/host/host_android.c @@ -5,32 +5,32 @@ const char* ffDetectHost(FFHostResult* host) { // http://newandroidbook.com/ddb/ - ffSettingsGetAndroidProperty("ro.product.device", &host->productFamily); + ffSettingsGetAndroidProperty("ro.product.device", &host->family); - ffSettingsGetAndroidProperty("ro.product.marketname", &host->productName) - || ffSettingsGetAndroidProperty("ro.vendor.product.display", &host->productName) - || ffSettingsGetAndroidProperty("ro.config.devicename", &host->productName) - || ffSettingsGetAndroidProperty("ro.config.marketing_name", &host->productName) - || ffSettingsGetAndroidProperty("ro.product.vendor.model", &host->productName) - || ffSettingsGetAndroidProperty("ro.product.oppo_model", &host->productName) - || ffSettingsGetAndroidProperty("ro.oppo.market.name", &host->productName) - || ffSettingsGetAndroidProperty("ro.product.brand", &host->productName); + ffSettingsGetAndroidProperty("ro.product.marketname", &host->name) + || ffSettingsGetAndroidProperty("ro.vendor.product.display", &host->name) + || ffSettingsGetAndroidProperty("ro.config.devicename", &host->name) + || ffSettingsGetAndroidProperty("ro.config.marketing_name", &host->name) + || ffSettingsGetAndroidProperty("ro.product.vendor.model", &host->name) + || ffSettingsGetAndroidProperty("ro.product.oppo_model", &host->name) + || ffSettingsGetAndroidProperty("ro.oppo.market.name", &host->name) + || ffSettingsGetAndroidProperty("ro.product.brand", &host->name); - if (ffSettingsGetAndroidProperty("ro.product.model", &host->productVersion)) + if (ffSettingsGetAndroidProperty("ro.product.model", &host->version)) { - if (ffStrbufStartsWithIgnCase(&host->productVersion, &host->productName)) + if (ffStrbufStartsWithIgnCase(&host->version, &host->name)) { - ffStrbufSubstrAfter(&host->productVersion, host->productName.length); - ffStrbufTrimLeft(&host->productVersion, ' '); + ffStrbufSubstrAfter(&host->version, host->name.length); + ffStrbufTrimLeft(&host->version, ' '); } } - ffSettingsGetAndroidProperty("ro.product.manufacturer", &host->sysVendor); + ffSettingsGetAndroidProperty("ro.product.manufacturer", &host->vendor); - if(host->sysVendor.length && !ffStrbufStartsWithIgnCase(&host->productName, &host->sysVendor)) + if(host->vendor.length && !ffStrbufStartsWithIgnCase(&host->name, &host->vendor)) { - ffStrbufPrependS(&host->productName, " "); - ffStrbufPrepend(&host->productName, &host->sysVendor); + ffStrbufPrependS(&host->name, " "); + ffStrbufPrepend(&host->name, &host->vendor); } return NULL; diff --git a/src/detection/host/host_apple.c b/src/detection/host/host_apple.c index 74d4cbe74..98910e5e8 100644 --- a/src/detection/host/host_apple.c +++ b/src/detection/host/host_apple.c @@ -177,7 +177,7 @@ const char* getProductNameWithIokit(FFstrbuf* result) if (!productName) return "IORegistryEntryCreateCFProperty() failed"; - return ffCfStrGetString(productName, result); + return ffCfStrGetString(name, result); } const char* getOthersByIokit(FFHostResult* host) @@ -188,29 +188,29 @@ const char* getOthersByIokit(FFHostResult* host) FF_CFTYPE_AUTO_RELEASE CFStringRef serialNumber = IORegistryEntryCreateCFProperty(registryEntry, CFSTR(kIOPlatformSerialNumberKey), kCFAllocatorDefault, kNilOptions); if (serialNumber) - ffCfStrGetString(serialNumber, &host->productSerial); + ffCfStrGetString(serialNumber, &host->serial); FF_CFTYPE_AUTO_RELEASE CFStringRef uuid = IORegistryEntryCreateCFProperty(registryEntry, CFSTR(kIOPlatformUUIDKey), kCFAllocatorDefault, kNilOptions); if (uuid) - ffCfStrGetString(uuid, &host->productUuid); + ffCfStrGetString(uuid, &host->uuid); FF_CFTYPE_AUTO_RELEASE CFStringRef manufacturer = IORegistryEntryCreateCFProperty(registryEntry, CFSTR("manufacturer"), kCFAllocatorDefault, kNilOptions); if (manufacturer) - ffCfStrGetString(manufacturer, &host->sysVendor); + ffCfStrGetString(manufacturer, &host->vendor); return NULL; } const char* ffDetectHost(FFHostResult* host) { - const char* error = ffSysctlGetString("hw.model", &host->productFamily); + const char* error = ffSysctlGetString("hw.model", &host->family); if (error) return error; - ffStrbufSetStatic(&host->productName, getProductNameWithHwModel(&host->productFamily)); - if (host->productName.length == 0) - getProductNameWithIokit(&host->productName); - if (host->productName.length == 0) - ffStrbufSet(&host->productName, &host->productFamily); + ffStrbufSetStatic(&host->name, getProductNameWithHwModel(&host->family)); + if (host->name.length == 0) + getProductNameWithIokit(&host->name); + if (host->name.length == 0) + ffStrbufSet(&host->name, &host->family); getOthersByIokit(host); return NULL; } diff --git a/src/detection/host/host_bsd.c b/src/detection/host/host_bsd.c index 46dd0b9af..334b04cab 100644 --- a/src/detection/host/host_bsd.c +++ b/src/detection/host/host_bsd.c @@ -4,20 +4,20 @@ const char* ffDetectHost(FFHostResult* host) { - ffSettingsGetFreeBSDKenv("smbios.system.product", &host->productName); - ffCleanUpSmbiosValue(&host->productName); - ffSettingsGetFreeBSDKenv("smbios.system.family", &host->productFamily); - ffCleanUpSmbiosValue(&host->productFamily); - ffSettingsGetFreeBSDKenv("smbios.system.version", &host->productVersion); - ffCleanUpSmbiosValue(&host->productVersion); - ffSettingsGetFreeBSDKenv("smbios.system.sku", &host->productSku); - ffCleanUpSmbiosValue(&host->productSku); - ffSettingsGetFreeBSDKenv("smbios.system.serial", &host->productSerial); - ffCleanUpSmbiosValue(&host->productSerial); - ffSettingsGetFreeBSDKenv("smbios.system.uuid", &host->productUuid); - ffCleanUpSmbiosValue(&host->productUuid); - ffSettingsGetFreeBSDKenv("smbios.system.maker", &host->sysVendor); - ffCleanUpSmbiosValue(&host->sysVendor); + ffSettingsGetFreeBSDKenv("smbios.system.product", &host->name); + ffCleanUpSmbiosValue(&host->name); + ffSettingsGetFreeBSDKenv("smbios.system.family", &host->family); + ffCleanUpSmbiosValue(&host->family); + ffSettingsGetFreeBSDKenv("smbios.system.version", &host->version); + ffCleanUpSmbiosValue(&host->version); + ffSettingsGetFreeBSDKenv("smbios.system.sku", &host->sku); + ffCleanUpSmbiosValue(&host->sku); + ffSettingsGetFreeBSDKenv("smbios.system.serial", &host->serial); + ffCleanUpSmbiosValue(&host->serial); + ffSettingsGetFreeBSDKenv("smbios.system.uuid", &host->uuid); + ffCleanUpSmbiosValue(&host->uuid); + ffSettingsGetFreeBSDKenv("smbios.system.maker", &host->vendor); + ffCleanUpSmbiosValue(&host->vendor); return NULL; } diff --git a/src/detection/host/host_linux.c b/src/detection/host/host_linux.c index 28697ad81..372557a88 100644 --- a/src/detection/host/host_linux.c +++ b/src/detection/host/host_linux.c @@ -29,28 +29,28 @@ static void getHostProductName(FFstrbuf* name) const char* ffDetectHost(FFHostResult* host) { - ffGetSmbiosValue("/sys/devices/virtual/dmi/id/product_family", "/sys/class/dmi/id/product_family", &host->productFamily); - getHostProductName(&host->productName); - ffGetSmbiosValue("/sys/devices/virtual/dmi/id/product_version", "/sys/class/dmi/id/product_version", &host->productVersion); - ffGetSmbiosValue("/sys/devices/virtual/dmi/id/product_sku", "/sys/class/dmi/id/product_sku", &host->productSku); - ffGetSmbiosValue("/sys/devices/virtual/dmi/id/product_serial", "/sys/class/dmi/id/product_serial", &host->productSerial); - ffGetSmbiosValue("/sys/devices/virtual/dmi/id/product_uuid", "/sys/class/dmi/id/product_uuid", &host->productUuid); - ffGetSmbiosValue("/sys/devices/virtual/dmi/id/sys_vendor", "/sys/class/dmi/id/sys_vendor", &host->sysVendor); + ffGetSmbiosValue("/sys/devices/virtual/dmi/id/product_family", "/sys/class/dmi/id/product_family", &host->family); + getHostProductName(&host->name); + ffGetSmbiosValue("/sys/devices/virtual/dmi/id/product_version", "/sys/class/dmi/id/product_version", &host->version); + ffGetSmbiosValue("/sys/devices/virtual/dmi/id/product_sku", "/sys/class/dmi/id/product_sku", &host->sku); + ffGetSmbiosValue("/sys/devices/virtual/dmi/id/product_serial", "/sys/class/dmi/id/product_serial", &host->serial); + ffGetSmbiosValue("/sys/devices/virtual/dmi/id/product_uuid", "/sys/class/dmi/id/product_uuid", &host->uuid); + ffGetSmbiosValue("/sys/devices/virtual/dmi/id/sys_vendor", "/sys/class/dmi/id/sys_vendor", &host->vendor); //KVM/Qemu virtual machine - if(ffStrbufStartsWithS(&host->productName, "Standard PC")) - ffStrbufPrependS(&host->productName, "KVM/QEMU "); + if(ffStrbufStartsWithS(&host->name, "Standard PC")) + ffStrbufPrependS(&host->name, "KVM/QEMU "); - if(host->productFamily.length == 0 && host->productName.length == 0) + if(host->family.length == 0 && host->name.length == 0) { const char* wslDistroName = getenv("WSL_DISTRO_NAME"); //On WSL, the real host can't be detected. Instead use WSL as host. if(wslDistroName != NULL || getenv("WSL_DISTRO") != NULL || getenv("WSL_INTEROP") != NULL) { - ffStrbufAppendS(&host->productName, "Windows Subsystem for Linux"); + ffStrbufAppendS(&host->name, "Windows Subsystem for Linux"); if (wslDistroName) - ffStrbufAppendF(&host->productName, " - %s", wslDistroName); - ffStrbufAppendS(&host->productFamily, "WSL"); + ffStrbufAppendF(&host->name, " - %s", wslDistroName); + ffStrbufAppendS(&host->family, "WSL"); FF_STRBUF_AUTO_DESTROY wslVer = ffStrbufCreate(); //Wide characters if(!ffProcessAppendStdOut(&wslVer, (char* const[]){ @@ -63,7 +63,7 @@ const char* ffDetectHost(FFHostResult* host) ffStrbufSubstrAfterLastC(&wslVer, ' '); for(uint32_t i = 0; i < wslVer.length; ++i) { if(wslVer.chars[i]) //don't append \0 - ffStrbufAppendC(&host->productVersion, wslVer.chars[i]); + ffStrbufAppendC(&host->version, wslVer.chars[i]); } } } diff --git a/src/detection/host/host_windows.c b/src/detection/host/host_windows.c index afc2b242c..8ff2c70a0 100644 --- a/src/detection/host/host_windows.c +++ b/src/detection/host/host_windows.c @@ -9,16 +9,16 @@ const char* ffDetectHost(FFHostResult* host) if(!ffRegOpenKeyForRead(HKEY_LOCAL_MACHINE, L"HARDWARE\\DESCRIPTION\\System\\BIOS", &hKey, NULL)) return "ffRegOpenKeyForRead(HKEY_LOCAL_MACHINE, L\"HARDWARE\\DESCRIPTION\\System\\BIOS\", &hKey, NULL) failed"; - ffRegReadStrbuf(hKey, L"SystemProductName", &host->productName, NULL); - ffCleanUpSmbiosValue(&host->productName); - ffRegReadStrbuf(hKey, L"SystemFamily", &host->productFamily, NULL); - ffCleanUpSmbiosValue(&host->productFamily); - ffRegReadStrbuf(hKey, L"SystemVersion", &host->productVersion, NULL); - ffCleanUpSmbiosValue(&host->productVersion); - ffRegReadStrbuf(hKey, L"SystemSKU", &host->productSku, NULL); - ffCleanUpSmbiosValue(&host->productSku); - ffRegReadStrbuf(hKey, L"SystemManufacturer", &host->sysVendor, NULL); - ffCleanUpSmbiosValue(&host->sysVendor); + ffRegReadStrbuf(hKey, L"SystemProductName", &host->name, NULL); + ffCleanUpSmbiosValue(&host->name); + ffRegReadStrbuf(hKey, L"SystemFamily", &host->family, NULL); + ffCleanUpSmbiosValue(&host->family); + ffRegReadStrbuf(hKey, L"SystemVersion", &host->version, NULL); + ffCleanUpSmbiosValue(&host->version); + ffRegReadStrbuf(hKey, L"SystemSKU", &host->sku, NULL); + ffCleanUpSmbiosValue(&host->sku); + ffRegReadStrbuf(hKey, L"SystemManufacturer", &host->vendor, NULL); + ffCleanUpSmbiosValue(&host->vendor); return NULL; } diff --git a/src/modules/host/host.c b/src/modules/host/host.c index b6e5151ad..5c80baef0 100644 --- a/src/modules/host/host.c +++ b/src/modules/host/host.c @@ -9,13 +9,13 @@ void ffPrintHost(FFHostOptions* options) { FFHostResult host; - ffStrbufInit(&host.productFamily); - ffStrbufInit(&host.productName); - ffStrbufInit(&host.productVersion); - ffStrbufInit(&host.productSku); - ffStrbufInit(&host.productSerial); - ffStrbufInit(&host.productUuid); - ffStrbufInit(&host.sysVendor); + ffStrbufInit(&host.family); + ffStrbufInit(&host.name); + ffStrbufInit(&host.version); + ffStrbufInit(&host.sku); + ffStrbufInit(&host.serial); + ffStrbufInit(&host.uuid); + ffStrbufInit(&host.vendor); const char* error = ffDetectHost(&host); if(error) @@ -24,7 +24,7 @@ void ffPrintHost(FFHostOptions* options) goto exit; } - if(host.productFamily.length == 0 && host.productName.length == 0) + if(host.family.length == 0 && host.name.length == 0) { ffPrintError(FF_HOST_MODULE_NAME, 0, &options->moduleArgs, "neither product_family nor product_name is set by O.E.M."); goto exit; @@ -36,37 +36,37 @@ void ffPrintHost(FFHostOptions* options) FF_STRBUF_AUTO_DESTROY output = ffStrbufCreate(); - if(host.productName.length > 0) - ffStrbufAppend(&output, &host.productName); + if(host.name.length > 0) + ffStrbufAppend(&output, &host.name); else - ffStrbufAppend(&output, &host.productFamily); + ffStrbufAppend(&output, &host.family); - if(host.productVersion.length > 0) - ffStrbufAppendF(&output, " (%s)", host.productVersion.chars); + if(host.version.length > 0) + ffStrbufAppendF(&output, " (%s)", host.version.chars); ffStrbufPutTo(&output, stdout); } else { ffPrintFormat(FF_HOST_MODULE_NAME, 0, &options->moduleArgs, FF_HOST_NUM_FORMAT_ARGS, (FFformatarg[]) { - {FF_FORMAT_ARG_TYPE_STRBUF, &host.productFamily}, - {FF_FORMAT_ARG_TYPE_STRBUF, &host.productName}, - {FF_FORMAT_ARG_TYPE_STRBUF, &host.productVersion}, - {FF_FORMAT_ARG_TYPE_STRBUF, &host.productSku}, - {FF_FORMAT_ARG_TYPE_STRBUF, &host.sysVendor}, - {FF_FORMAT_ARG_TYPE_STRBUF, &host.productSerial}, - {FF_FORMAT_ARG_TYPE_STRBUF, &host.productUuid}, + {FF_FORMAT_ARG_TYPE_STRBUF, &host.family}, + {FF_FORMAT_ARG_TYPE_STRBUF, &host.name}, + {FF_FORMAT_ARG_TYPE_STRBUF, &host.version}, + {FF_FORMAT_ARG_TYPE_STRBUF, &host.sku}, + {FF_FORMAT_ARG_TYPE_STRBUF, &host.vendor}, + {FF_FORMAT_ARG_TYPE_STRBUF, &host.serial}, + {FF_FORMAT_ARG_TYPE_STRBUF, &host.uuid}, }); } exit: - ffStrbufDestroy(&host.productFamily); - ffStrbufDestroy(&host.productName); - ffStrbufDestroy(&host.productVersion); - ffStrbufDestroy(&host.productSku); - ffStrbufDestroy(&host.productSerial); - ffStrbufDestroy(&host.productUuid); - ffStrbufDestroy(&host.sysVendor); + ffStrbufDestroy(&host.family); + ffStrbufDestroy(&host.name); + ffStrbufDestroy(&host.version); + ffStrbufDestroy(&host.sku); + ffStrbufDestroy(&host.serial); + ffStrbufDestroy(&host.uuid); + ffStrbufDestroy(&host.vendor); } bool ffParseHostCommandOptions(FFHostOptions* options, const char* key, const char* value) @@ -107,13 +107,13 @@ void ffGenerateHostJsonConfig(FFHostOptions* options, yyjson_mut_doc* doc, yyjso void ffGenerateHostJsonResult(FF_MAYBE_UNUSED FFHostOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { FFHostResult host; - ffStrbufInit(&host.productFamily); - ffStrbufInit(&host.productName); - ffStrbufInit(&host.productVersion); - ffStrbufInit(&host.productSku); - ffStrbufInit(&host.productSerial); - ffStrbufInit(&host.productUuid); - ffStrbufInit(&host.sysVendor); + ffStrbufInit(&host.family); + ffStrbufInit(&host.name); + ffStrbufInit(&host.version); + ffStrbufInit(&host.sku); + ffStrbufInit(&host.serial); + ffStrbufInit(&host.uuid); + ffStrbufInit(&host.vendor); const char* error = ffDetectHost(&host); if (error) @@ -122,29 +122,29 @@ void ffGenerateHostJsonResult(FF_MAYBE_UNUSED FFHostOptions* options, yyjson_mut goto exit; } - if (host.productFamily.length == 0 && host.productName.length == 0) + if (host.family.length == 0 && host.name.length == 0) { yyjson_mut_obj_add_str(doc, module, "error", "neither product_family nor product_name is set by O.E.M."); goto exit; } yyjson_mut_val* obj = yyjson_mut_obj_add_obj(doc, module, "result"); - yyjson_mut_obj_add_strbuf(doc, obj, "family", &host.productFamily); - yyjson_mut_obj_add_strbuf(doc, obj, "name", &host.productName); - yyjson_mut_obj_add_strbuf(doc, obj, "version", &host.productVersion); - yyjson_mut_obj_add_strbuf(doc, obj, "sku", &host.productSku); - yyjson_mut_obj_add_strbuf(doc, obj, "serial", &host.productSerial); - yyjson_mut_obj_add_strbuf(doc, obj, "uuid", &host.productUuid); - yyjson_mut_obj_add_strbuf(doc, obj, "sysVender", &host.sysVendor); + yyjson_mut_obj_add_strbuf(doc, obj, "family", &host.family); + yyjson_mut_obj_add_strbuf(doc, obj, "name", &host.name); + yyjson_mut_obj_add_strbuf(doc, obj, "version", &host.version); + yyjson_mut_obj_add_strbuf(doc, obj, "sku", &host.sku); + yyjson_mut_obj_add_strbuf(doc, obj, "serial", &host.serial); + yyjson_mut_obj_add_strbuf(doc, obj, "uuid", &host.uuid); + yyjson_mut_obj_add_strbuf(doc, obj, "sysVender", &host.vendor); exit: - ffStrbufDestroy(&host.productFamily); - ffStrbufDestroy(&host.productName); - ffStrbufDestroy(&host.productVersion); - ffStrbufDestroy(&host.productSku); - ffStrbufDestroy(&host.productSerial); - ffStrbufDestroy(&host.productUuid); - ffStrbufDestroy(&host.sysVendor); + ffStrbufDestroy(&host.family); + ffStrbufDestroy(&host.name); + ffStrbufDestroy(&host.version); + ffStrbufDestroy(&host.sku); + ffStrbufDestroy(&host.serial); + ffStrbufDestroy(&host.uuid); + ffStrbufDestroy(&host.vendor); } void ffPrintHostHelpFormat(void)