gpt4 book ai didi

Java CryptUnprotectData Windows WiFi 密码

转载 作者:行者123 更新时间:2023-11-28 05:14:04 31 4
gpt4 key购买 nike

我正在尝试使用 Java 在同一台机器上解密 Windows WiFi 密码,Java 应该可以与 cryptUnprotectData() 一起使用但我收到以下错误:

Exception in thread "main" com.sun.jna.platform.win32.Win32Exception: The data is invalid.
at com.sun.jna.platform.win32.Crypt32Util.cryptUnprotectData(Crypt32Util.java:128)
at com.sun.jna.platform.win32.Crypt32Util.cryptUnprotectData(Crypt32Util.java:103)
at com.sun.jna.platform.win32.Crypt32Util.cryptUnprotectData(Crypt32Util.java:90)

我正在使用这段 Java 代码:

String encryptedWirelessKey = "01000000D08C9DDF0115D1118C7A00C0***TRUNCATED***";
byte[] bytes = Crypt32Util.cryptUnprotectData(encryptedWirelessKey.getBytes(Charset.defaultCharset()));
System.out.println(new String(bytes));

Here您可以阅读有关 Windows 存储 WiFi 密码的位置的更多信息。为什么当我直接从 XML keyMaterial 标签复制数据时,数据无效?我是机器的管理员,密码是我的用户帐户。

更新:

import com.sun.jna.platform.win32.Crypt32Util;

public class Testing
{
public static void main(String[] arguments) throws Exception
{
String encryptedWirelessKey = "01000000D08C9DDF0115D1118C7A00C0***TRUNCATED***";
byte[] bytes = Crypt32Util.cryptUnprotectData(hexStringToByteArray(encryptedWirelessKey));
System.out.println(new String(bytes));
}

private static byte[] hexStringToByteArray(String s) {
int len = s.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+ Character.digit(s.charAt(i+1), 16));
}
return data;
}
}

这会引发以下异常:

Exception in thread "main" com.sun.jna.platform.win32.Win32Exception: Key not valid for use in specified state.
at com.sun.jna.platform.win32.Crypt32Util.cryptUnprotectData(Crypt32Util.java:128)
at com.sun.jna.platform.win32.Crypt32Util.cryptUnprotectData(Crypt32Util.java:103)
at com.sun.jna.platform.win32.Crypt32Util.cryptUnprotectData(Crypt32Util.java:90)

具体是什么意思?缺少权限?

最佳答案

您在十六进制字符串上使用 getBytes(),而您应该将十六进制字符串解析为字节。

从以下链接中选择您喜欢的方式。

In Java, how do I convert a hex string to a byte[]?

Convert a string representation of a hex dump to a byte array using Java?

关于Java CryptUnprotectData Windows WiFi 密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43008556/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com