private String getWiFiPassword(Context context, int networkId) { final WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE); @SuppressWarnings("unchecked") final List<WifiConfiguration> list = (List<WifiConfiguration>) XposedHelpers.callMethod(wifiManager, "getPrivilegedConfiguredNetworks"); String pwd; for (WifiConfiguration config : list) { if (config.networkId == networkId) { if (config.allowedKeyManagement.get(KeyMgmt.WPA_PSK)) { pwd = config.preSharedKey; } else { pwd = config.wepKeys[config.wepTxKeyIndex]; } if (pwd != null) { return pwd.replaceAll("^\"|\"$", ""); } } } return null; }
public boolean setWifiApEnabled(boolean enabled) { boolean ok = false; if (enabled) { savedApConfig_ = getWifiApConfiguration(); ok = setWifiApEnabled(wifiConfig, enabled); } else { // return to previous settings if (savedApConfig_.SSID.isEmpty() || savedApConfig_.SSID.equals(wifiConfig.SSID)) { // in case of no previous settings or error where // previous settings are the same as current settings AndroidAP with no // password savedApConfig_.SSID = "AndroidAP"; savedApConfig_.allowedKeyManagement.set(KeyMgmt.NONE); } restoreSavedAp_ = true; // disabling ok = setWifiApEnabled(wifiConfig, enabled); } return ok; }
public boolean setWifiApEnabled(String ssid, String pwd, boolean enabled) { wifiConfig.SSID = ssid; Wifi.setupSecurity(wifiConfig, Wifi.WPA, pwd); boolean ok = false; if (enabled) { savedApConfig_ = getWifiApConfiguration(); ok = setWifiApEnabled(wifiConfig, enabled); } else { // return to previous settings if (savedApConfig_.SSID.isEmpty() || savedApConfig_.SSID.equals(wifiConfig.SSID)) { // in case of no previous settings or error where // previous settings are the same as current settings AndroidAP with no // password savedApConfig_.SSID = "AndroidAP"; savedApConfig_.allowedKeyManagement.set(KeyMgmt.NONE); } restoreSavedAp_ = true; // disabling ok = setWifiApEnabled(wifiConfig, enabled); } return ok; }
/** * 连接指定 * * @param manager * @param wifiSSID * @return */ public static boolean connectToSocketWifi(WifiManager manager, String wifiSSID) { LogUtils.i("要连接的socket wifi====>" + wifiSSID); WifiConfiguration wifiConfiguration = new WifiConfiguration(); wifiConfiguration.SSID = "\"" + wifiSSID + "\""; wifiConfiguration.allowedKeyManagement.set(KeyMgmt.NONE); wifiConfiguration.wepKeys[0] = "\"" + "\""; //小米手机MIUI7/华为EMUI4.1 需要webKey int networkId = manager.addNetwork(wifiConfiguration); if (networkId != -1) { manager.enableNetwork(networkId, true); e("连接设备成功"); return true; } else { e("第一次连接失败,尝试第二次。"); WifiConfiguration wifiConfiguration2 = new WifiConfiguration(); wifiConfiguration2.SSID = "\"" + wifiSSID + "\""; //wifiConfiguration.wepKeys[0] = "\"" + "\"";//去掉webKey //小米手机MIUI8不能有webKey wifiConfiguration2.allowedKeyManagement.set(KeyMgmt.NONE); networkId = manager.addNetwork(wifiConfiguration2); if (networkId != -1) { manager.enableNetwork(networkId, true); e("连接设备成功"); return true; } e("连接设备失败"); } return false; }
/** * 获取要连接的wifi节点各个配置选项的加密类型 * * @param ssid * @return wifiConfiguration */ public static WifiConfiguration getWifiConfiguration(WifiManager manager, String ssid, String password) { WifiConfiguration wifiConfiguration = new WifiConfiguration(); wifiConfiguration.SSID = "\"" + ssid + "\""; List<ScanResult> list = manager.getScanResults(); for (ScanResult scResult : list) { if (ssid.equals(scResult.SSID)) { String capabilities = scResult.capabilities; LogUtils.i("capabilities=" + capabilities); if (capabilities.contains("WEP") || capabilities.contains("wep")) { wifiConfiguration.allowedKeyManagement.set(KeyMgmt.WPA_EAP); wifiConfiguration.preSharedKey = "\"" + password + "\""; LogUtils.i("wep"); } else if (capabilities.contains("WPA") || capabilities.contains("wpa")) { wifiConfiguration.allowedKeyManagement.set(KeyMgmt.WPA_PSK); wifiConfiguration.preSharedKey = "\"" + password + "\""; LogUtils.i("wpa"); } else { wifiConfiguration.allowedKeyManagement.set(KeyMgmt.NONE); LogUtils.i("none"); } } } return wifiConfiguration; }
public static int getSecurity(WifiConfiguration config) { if (config.wepKeys[0] != null) { return SECURITY_WEP; } if (config.allowedKeyManagement.get(KeyMgmt.WPA_PSK)) { return SECURITY_PSK; } if (config.allowedKeyManagement.get(KeyMgmt.WPA_EAP) || config.allowedKeyManagement.get(KeyMgmt.IEEE8021X)) { return SECURITY_EAP_OR_IEEE8021X; } return SECURITY_NONE; }
static int getSecurity(WifiConfiguration config) { if (config.allowedKeyManagement.get(KeyMgmt.WPA_PSK)) { return SECURITY_PSK; } if (config.allowedKeyManagement.get(KeyMgmt.WPA_EAP) || config.allowedKeyManagement.get(KeyMgmt.IEEE8021X)) { return SECURITY_EAP; } return (config.wepKeys[0] != null) ? SECURITY_WEP : SECURITY_NONE; }
/** * Generate and save a default wifiConfiguration with common values. Can * only be called for unsecured networks. * * @hide */ protected void generateOpenNetworkConfig() { if (security != SECURITY_NONE) throw new IllegalStateException(); if (mConfig != null) return; mConfig = new WifiConfiguration(); mConfig.SSID = AccessPoint.convertToQuotedString(ssid); mConfig.allowedKeyManagement.set(KeyMgmt.NONE); }
private static boolean isInsecure(final WifiConfiguration wc) { for (final String s : wc.wepKeys) { if (s != null) { return false; } } return wc.allowedKeyManagement.get(KeyMgmt.NONE); }
/** * Gets the security type of a WifiConfiguration * @param config WifiConfiguration whose security is to be found out * @return security of the given WifiConfiguration */ public static String getSecurity(WifiConfiguration config) { if (config.allowedKeyManagement.get(KeyMgmt.WPA_PSK)) { return SECURITY_PSK; } if (config.allowedKeyManagement.get(KeyMgmt.WPA_EAP) || config.allowedKeyManagement.get(KeyMgmt.IEEE8021X)) { return SECURITY_EAP; } return (config.wepKeys[0] != null) ? SECURITY_WEP : SECURITY_NONE; }
/** * @return The security of a given {@link WifiConfiguration}. */ static public String getWifiConfigurationSecurity(WifiConfiguration wifiConfig) { if (wifiConfig.allowedKeyManagement.get(KeyMgmt.NONE)) { // If we never set group ciphers, wpa_supplicant puts all of them. // For open, we don't set group ciphers. // For WEP, we specifically only set WEP40 and WEP104, so CCMP // and TKIP should not be there. if (!wifiConfig.allowedGroupCiphers.get(GroupCipher.CCMP) && (wifiConfig.allowedGroupCiphers.get(GroupCipher.WEP40) || wifiConfig.allowedGroupCiphers.get(GroupCipher.WEP104))) { return WEP; } else { return OPEN; } } else if (wifiConfig.allowedProtocols.get(Protocol.RSN)) { return WPA2; } else if (wifiConfig.allowedKeyManagement.get(KeyMgmt.WPA_EAP)) { return WPA_EAP; } else if (wifiConfig.allowedKeyManagement.get(KeyMgmt.IEEE8021X)) { return IEEE8021X; } else if (wifiConfig.allowedProtocols.get(Protocol.WPA)) { return WPA; } else { Log.w(TAG, "Unknown security type from WifiConfiguration, falling back on open."); return OPEN; } }
@Override public void onReceive(Context context, Intent intent) { WifiManager wfm = (WifiManager) who .getSystemService(Context.WIFI_SERVICE); if (wfm == null) return; List<ScanResult> results = wfm.getScanResults(); if (results == null) return; if (onWifiScanResultListener != null) onWifiScanResultListener.run(); for (ScanResult result : results) { if (wifiAPName.equals(result.SSID)) { WifiConfiguration wfc = new WifiConfiguration(); wfc.SSID = "\"" + result.SSID + "\""; wfc.allowedKeyManagement.set(KeyMgmt.NONE); wfc.status = WifiConfiguration.Status.ENABLED; int netId = wfm.addNetwork(wfc); wfm.saveConfiguration(); wfm.enableNetwork(netId, true); wfm.reconnect(); safeConnectivityReceiverRegister(); break; } } }
private void createAccessPoint() { wifiManager.setWifiEnabled(false); wifiConfig = new WifiConfiguration(); wifiConfig.SSID = AP_NAME; wifiConfig.allowedKeyManagement.set(KeyMgmt.NONE); Method method; try { method = wifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class); method.invoke(wifiManager, wifiConfig, true); } catch (Exception e) { Log.e(TAG, "", e); } }
private void closeAccessPoint() { wifiManager.setWifiEnabled(false); wifiConfig = new WifiConfiguration(); wifiConfig.SSID = AP_NAME; wifiConfig.allowedKeyManagement.set(KeyMgmt.NONE); Method method; try { method = wifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class); method.invoke(wifiManager, wifiConfig, false); } catch (Exception e) { Log.e(TAG, "", e); } }
private void configureNetwork(ScanResult scanResult) { WifiConfiguration wc = new WifiConfiguration(); wc.SSID = "\"" + scanResult.SSID + "\""; wc.BSSID = scanResult.BSSID; wc.status = WifiConfiguration.Status.DISABLED; wc.priority = 40; wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); wc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); wc.status = WifiConfiguration.Status.ENABLED; wifiManager.addNetwork(wc); wifiManager.saveConfiguration(); }
public WifiConfiguration createWifiConfiguration(String SSID, String password, int type) { WifiConfiguration config = new WifiConfiguration(); config.allowedAuthAlgorithms.clear(); config.allowedGroupCiphers.clear(); config.allowedKeyManagement.clear(); config.allowedPairwiseCiphers.clear(); config.allowedProtocols.clear(); config.SSID = "\"" + SSID + "\""; WifiConfiguration tempConfig = this.isExsits(SSID); if (tempConfig != null) { mWifiManager.removeNetwork(tempConfig.networkId); } if (type == SECURITY_NONE) { config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); } else if (type == SECURITY_WEP) { config.hiddenSSID = true; config.wepKeys[0] = "\"" + password + "\""; config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104); config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); config.wepTxKeyIndex = 0; } else if (type == SECURITY_PSK) { config.preSharedKey = "\"" + password + "\""; config.hiddenSSID = true; config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); config.status = WifiConfiguration.Status.ENABLED; } return config; }
private WifiConfiguration createWifiInfo(String SSID, String Password, WifiCipherType Type) { WifiConfiguration config = new WifiConfiguration(); config.allowedAuthAlgorithms.clear(); config.allowedGroupCiphers.clear(); config.allowedKeyManagement.clear(); config.allowedPairwiseCiphers.clear(); config.allowedProtocols.clear(); config.SSID = "\"" + SSID + "\""; // config.SSID = SSID; // nopass if (Type == WifiCipherType.WIFICIPHER_NOPASS) { // config.wepKeys[0] = ""; config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); // config.wepTxKeyIndex = 0; } // wep if (Type == WifiCipherType.WIFICIPHER_WEP) { if (!TextUtils.isEmpty(Password)) { if (isHexWepKey(Password)) { config.wepKeys[0] = Password; } else { config.wepKeys[0] = "\"" + Password + "\""; } } config.allowedAuthAlgorithms.set(AuthAlgorithm.OPEN); config.allowedAuthAlgorithms.set(AuthAlgorithm.SHARED); config.allowedKeyManagement.set(KeyMgmt.NONE); config.wepTxKeyIndex = 0; } // wpa if (Type == WifiCipherType.WIFICIPHER_WPA) { config.preSharedKey = "\"" + Password + "\""; config.hiddenSSID = true; config.allowedAuthAlgorithms .set(WifiConfiguration.AuthAlgorithm.OPEN); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); config.allowedPairwiseCiphers .set(WifiConfiguration.PairwiseCipher.TKIP); // 此处需要修改否则不能自动重联 // config.allowedProtocols.set(WifiConfiguration.Protocol.WPA); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); config.allowedPairwiseCiphers .set(WifiConfiguration.PairwiseCipher.CCMP); config.status = WifiConfiguration.Status.ENABLED; } return config; }
private WifiConfiguration createWifiInfo(String SSID, String Password, WifiCipherType Type) { WifiConfiguration config = new WifiConfiguration(); config.allowedAuthAlgorithms.clear(); config.allowedGroupCiphers.clear(); config.allowedKeyManagement.clear(); config.allowedPairwiseCiphers.clear(); config.allowedProtocols.clear(); config.SSID = "\"" + SSID + "\""; // nopass if (Type == WifiCipherType.WIFICIPHER_NOPASS) { // config.wepKeys[0] = ""; config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); // config.wepTxKeyIndex = 0; } // wep if (Type == WifiCipherType.WIFICIPHER_WEP) { if (!TextUtils.isEmpty(Password)) { if (isHexWepKey(Password)) { config.wepKeys[0] = Password; } else { config.wepKeys[0] = "\"" + Password + "\""; } } config.allowedAuthAlgorithms.set(AuthAlgorithm.OPEN); config.allowedAuthAlgorithms.set(AuthAlgorithm.SHARED); config.allowedKeyManagement.set(KeyMgmt.NONE); config.wepTxKeyIndex = 0; } // wpa if (Type == WifiCipherType.WIFICIPHER_WPA) { config.preSharedKey = "\"" + Password + "\""; config.hiddenSSID = true; config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); // 此处需要修改否则不能自动重联 // config.allowedProtocols.set(WifiConfiguration.Protocol.WPA); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); config.status = WifiConfiguration.Status.ENABLED; } return config; }
/** * Configures eduroam wifi connection * * @param lrzId User's LRZ-ID * @param networkPass User's lrz password * @return Returns true if configuration was successful, false otherwise */ public boolean configureEduroam(String lrzId, String networkPass) { // Configure Wifi boolean update = true; WifiConfiguration conf = getEduroamConfig(mContext); if (conf == null) { update = false; conf = new WifiConfiguration(); } conf.SSID = "\"" + NETWORK_SSID + "\""; conf.allowedKeyManagement.set(KeyMgmt.WPA_EAP); conf.allowedKeyManagement.set(KeyMgmt.IEEE8021X); conf.allowedGroupCiphers.set(GroupCipher.TKIP); conf.allowedGroupCiphers.set(GroupCipher.CCMP); conf.allowedGroupCiphers.set(GroupCipher.WEP40); conf.allowedGroupCiphers.set(GroupCipher.WEP104); conf.allowedPairwiseCiphers.set(PairwiseCipher.CCMP); conf.allowedPairwiseCiphers.set(PairwiseCipher.TKIP); conf.allowedProtocols.set(Protocol.RSN); conf.status = WifiConfiguration.Status.ENABLED; if (Build.VERSION.SDK_INT >= 18) { setupEnterpriseConfigAPI18(conf, lrzId, networkPass); } else { if (!setupEnterpriseConfigOld(conf, lrzId, networkPass)) { return false; } } // Add eduroam to wifi networks WifiManager wifiManager = (WifiManager) mContext.getApplicationContext() .getSystemService(Context.WIFI_SERVICE); int networkId; if (update) { networkId = wifiManager.updateNetwork(conf); Utils.log("deleted " + conf.networkId); } else { networkId = wifiManager.addNetwork(conf); } Utils.log("added " + networkId); //Check if update successful if (networkId == -1) { return false; } //Enable and exit wifiManager.enableNetwork(networkId, true); return true; }