【问题标题】:WMI Security Center productState clarificationWMI安全中心产品状态说明
【发布时间】:2011-06-09 17:03:03
【问题描述】:

我正在 WMI 中查询 SecurityCenter2 上的 "SELECT * FROM AntivirusProduct"(我目前使用的是 Windows 7)。

我很难找出 productState 上的数字是什么意思,包括 AntiSpyware 和 Firewall。那里有任何参考吗?我想确保我可以在任何 Vista 或 7 机器上获得正确的产品状态(以防这些数字因机器而异)。

【问题讨论】:

    标签: windows-7 windows-vista wmi


    【解决方案1】:

    没有关于 productState 值的官方文档。我能找到的唯一信息是this article,它根据值的逐字节分析对productState 值的含义做出假设。

    【讨论】:

    • 这篇文章确实说明了这个问题上的情况。不过现实很可惜。感谢您找到海伦 :)
    【解决方案2】:

    对于其他人,我发现当转换为十六进制时,第三个字符非常可靠地指示是否启用了任何特定的防病毒产品。 (1 = 启用,0 = 禁用)

    这是我编写的用于确定 Windows Defender 是否已启用的 PowerShell 单行代码。您可以替换字符串以匹配您想要的任何防病毒产品。

    Get-CimInstance -Namespace root/SecurityCenter2 -ClassName AntivirusProduct | ForEach-Object {if($($_.displayName) -eq "Windows Defender"){if("$($([Convert]::ToString($($_.productState), 16)).PadLeft(6,""0""))".Substring(2,1) -eq "1"){Write-Host "Windows Defender is Enabled"}else{Write-Host "Windows Defender is Disabled"}}}
    

    我不能肯定地说每个防病毒产品都能正确报告其产品状态,但我想所有主流产品都必须如此。我可以确认这也适用于 Symantec Endpoint Protection。

    【讨论】:

    • 我不完全理解 Powershell,但我想知道你为什么要填充。除此之外,我在弄清楚为什么我的第三个是未填充的“1”并正确返回 Defender 关闭(实际上是打盹)后发现了 Windows Defender 的新产品状态 401664。我填充了第三个是“2”。结果仍然是正确的,因为它只是做一个简单的是否 1 测试....但我只是想指出,其他人也可以调查!
    • 另外刚刚搜索了一篇深入研究mcpforlife.com/2020/04/14/… 的文章,它提到了在 Win32 函数和枚举中找到的关键细节(甚至提到了这个贪睡状态)。推荐其他人阅读。这一行很好“从 MS 支持我们收到确认 productState 位掩码标志为 0x0000F000 并且 Enable 的值应为 0x1000。”
    【解决方案3】:

    productState 值似乎是一个未记录的位设置,除非通过与 Microsoft 的 NDA 进行记录。应该可以将返回的值与安装的产品及其状态进行映射。您可以安装单个 AV 产品,记录其状态,然后使其病毒定义过期,然后检查值如何变化。似乎有一组有限的典型值。

    参考:https://bigfix.me/analysis/details/2998358

    以下是我从超过 10000 个端点的 34 种不同的 AV 产品中发现的 productState 值,这些值可以帮助对含义进行逆向工程:

    (十进制、十六进制、位设置)

    262144、40000、1000000000000000000

    262160, 40010, 1000000000000010000

    266240, 41000, 1000001000000000000

    270336, 42000, 1000010000000000000

    327680, 50000, 1010000000000000000

    327696、50010、1010000000000010000

    331776、51000、1010001000000000000

    344064、54000、1010100000000000000

    393216, 60000, 1100000000000000000

    393232、60010、1100000000000010000

    393472, 60100, 1100000000100000000

    393488、60110、1100000000100010000

    397312、61000、1100001000000000000

    397328、61010、1100001000000010000

    397568、61100、1100001000100000000

    397584、61110、1100001000100010000

    458752, 70000, 1110000000000000000

    458768、70010、1110000000000010000

    462848, 71000, 1110001000000000000

    462864、71010、1110001000000010000

    【讨论】:

    • 这有助于回答问题吗?如何?你能推断出 productState 值的含义吗?
    • 知道似乎没有无限数量的值并且它似乎有点设置,这确实很有帮助。这将需要跟踪不同系统集之间的差异,位集中只有 1 位差异,以尝试查看它们之间的差异,并查看是否可以以可预测的方式进行更改以推断位中的位集代表。似乎找到答案的唯一方法是通过逆向工程,并且在沿着这条路走下去有大量可能的值可供使用时很有帮助。
    猜你喜欢
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    • 2014-11-26
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多