java - 如何通过 JNA 检查全局可逆加密?

标签 java windows jna

我正在尝试通过 JNA(Java Native Access)以编程方式检索 Windows 中 Reversible Encryption 设置的全局值。

我可以通过 JNA 从全局用户密码策略中读取其他值,例如

  1. 执行密码历史记录
  2. 密码最长使用期限
  3. 最低密码使用期限
  4. 最小密码长度

但是没有关于如何在 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/

相关文章:

java - JNA 库,缺少 Windows 函数 : how to add new functions?

java - 使用@KafkaListener 处理错误

java - 为什么我的 Java 类可以在不使用 "this."的情况下工作?

windows - 转到异常 "signal arrived during cgo execution"

c++ - 制作 C++ 应用程序 "Opened with..."

java - JNA KeyboardUtils.isPressed 无法使用箭头键

Java 和 SetWindowDisplayAffinity

Java:通过 ID 而不是名称进行类型识别?

java - 使用OpenGL和3D建模软件之间的区别

javascript - Windows 上的 Python 标准输出