我正在尝试通过 JNA(Java Native Access)以编程方式检索 Windows 中 Reversible Encryption
设置的全局值。
我可以通过 JNA 从全局用户密码策略中读取其他值,例如
- 执行密码历史记录
- 密码最长使用期限
- 最低密码使用期限
- 最小密码长度
但是没有关于如何在 Java 中具体获取可逆加密值的信息?我试图谷歌但无济于事。有人知道吗?
最佳答案
可逆加密设置在 RSOP_SecuritySettingBoolean 中的 WMI 中可用。类,使用键 ClearTextPassword
.
可以通过命令行(例如 wmic /NAMESPACE:\\root\RSOP\Computer path RSOP_SecuritySettingBoolean
)或通过 powershell 查询 WMI。我已经实现了 WMI Util class using JNA它实现了 C 代码来查询 WMI,如果您更喜欢编程方法,欢迎复制这些代码(您将需要更多的类。)
您也可以在命令行上执行:Secedit.exe /export /cfg c:\cfg.txt
并读取输出文件,查找 ClearTextPassword
的值.
看起来你也可以 fetch the value with a binary dump of the contents注册表项 \HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\F
在这种情况下,该值将存储在偏移量为 0x004C 的字节的 4 个最高有效位中。您可以使用 JNA's Advapi32Util class 读取注册表(在这种情况下,可能是 registryGetBinaryValue()
)。
我还找到了一个可能有用的注册表位置(完全未经测试):
\HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\SeCEdit\Reg Values
.这指向 Machine/System/CurrentControlSet/Services/Netlogon/Parameters
中的类似设置这可能有帮助也可能没有帮助
关于java - 如何通过 JNA 检查全局可逆加密?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44447876/