
E FATAL EXCEPTION: main
Process: com.kte.getwifipwd, PID: 5917
java.lang.IllegalArgumentException: passphrase not ASCII encodable
at android.net.wifi.WifiNetworkSpecifier$Builder.setWpa2Passphrase(WifiNetworkSpecifier.java:306)
at com.kte.getwifipwd.WifiPasswordActivity.connectWithNetworkSpecifier(WifiPasswordActivity.java:99)
at com.kte.getwifipwd.WifiPasswordActivity.lambda$startBruteForce$0$com-kte-getwifipwd-WifiPasswordActivity(WifiPasswordActivity.java:161)
at com.kte.getwifipwd.WifiPasswordActivity$$ExternalSyntheticLambda0.run(Unknown Source:8)
at android.os.Handler.handleCallback(Handler.java:958)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
at android.app.ActivityThread.main(ActivityThread.java:8225)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:573)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1058)
你遇到的错误是:
java.lang.IllegalArgumentException: passphrase not ASCII encodable这个报错来自:
WifiNetworkSpecifier.Builder.setWpa2Passphrase(String passphrase)该异常的意思是:
你尝试连接 Wi-Fi 的密码
password中 包含了非 ASCII 字符,比如中文、表情符号、全角字符等。
根据 Android 的规范,setWpa2Passphrase() 要求:
你可以在调用 connectWithNetworkSpecifier() 前过滤密码:
private boolean isAscii(String password) {
return password.chars().allMatch(c -> c >= 32 && c <= 126);
}然后在尝试连接前判断:
if (!isAscii(password) || password.length() < 8 || password.length() > 63) {
Log.w("BruteForce", "跳过非法密码: " + password);
currentPasswordIndex++;
return;
}passwordList 中预处理过滤启动前过滤掉所有非法密码:
passwordList = passwordList.stream()
.filter(pwd -> pwd.length() >= 8 && pwd.length() <= 63)
.filter(this::isAscii)
.collect(Collectors.toList());哪怕你过滤了,也建议为安全再包一层 try-catch:
try {
connectWithNetworkSpecifier(targetSsid, password);
} catch (IllegalArgumentException e) {
Log.e("BruteForce", "非法密码: " + password + ",跳过", e);
}这样你就不会再看到:
java.lang.IllegalArgumentException: passphrase not ASCII encodable而且你的暴力破解流程也更健壮、可控,不会因为一个中文密码崩掉整个线程。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。