Получить сохраненные пароли WiFi с устройств Android

Я занимаюсь разработкой приложения для Android, в котором мне нужно показать сохраненные пароли WiFi на мобильном телефоне или планшете. Как, например, если мой мобильный телефон подключен к какой-либо сети, пароль к которому сохранен на моем мобильном телефоне. Я хочу получить это.

4 ответа

Решение

Ваши комментарии помогли мне в какой-то степени найти решение моего вопроса. Особенно @Namik Kalavadia Я говорю о тебе. Спасибо за это. Наконец вот решение.

public class MainActivity extends Activity {

    File file;
    public StringBuffer ab;
    public File savefile;
    public InputStream in = null;
    public String filename = "wpa_supplicant.conf";
    public File ot_path;
    Context context;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        context = getApplicationContext();
        ot_path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
        Log.d("aaa", ""+ot_path.toString());
    }

    public void path(View v){
        getPath();
    }
    private void getPath(){
        file = Environment.getRootDirectory();
        String ext = ".conf";
        File list[] = file.listFiles();
        ab = new StringBuffer();
        if(list!=null){
            fileNameSearch(list);

    }
    }

    public void fileNameSearch(File list[]){
        if(list!=null){
        for(int f = 0;f<list.length;f++){
            ab.append(list[f].getName()+"\n");

            File fi = list[f];
            String path = fi.getPath();
            if(fi.isDirectory()){
                fileNameSearch(fi.listFiles());
            }
            else if(path.endsWith(".conf")){
                if(path.contains(filename)){
                    try{
                    File fileForParse = copyFile(path,ot_path);
                    in = new FileInputStream(fileForParse);
                    getStringFromInputStream(in);

                Log.d("aaa", "conf I got it"+path);
                    }catch(Exception e){
                        e.printStackTrace();
                    }
                }
            }
        }
        }
        else{
            Log.d("aaa", "List is null in method");
        }
    }
    private File copyFile(String inputPath, File outputPath) {

        InputStream input = null;
        OutputStream out = null;
        try {

            if (!outputPath.exists())
            {
                outputPath.mkdirs();
            }
            savefile = new File(outputPath,filename);
            if (!savefile.exists()) {
                savefile.createNewFile();
                File f = new File(inputPath);
                Log.d("aaa",""+f.length());
                input = new FileInputStream(inputPath);        
                out = new FileOutputStream(savefile);
                byte[] buffer = new byte[1024];
                int read;
                while ((read = input.read(buffer)) != -1) {
                    out.write(buffer, 0, read);
                }
                Log.d("aaa",""+savefile.length());
                input.close();
                input = null;
                    out.flush();
                out.close();
                out = null;        

            }


        }  catch (FileNotFoundException fnfe1) {
            Log.e("aaa", fnfe1.getMessage());
            return null;
        }
                catch (Exception e) {
            Log.e("aaa", e.getMessage());
            return null;
        }
return savefile;
    }

    @SuppressWarnings("deprecation")
    private String getStringFromInputStream(InputStream is) {

        BufferedReader br = null;
        StringBuilder sb = new StringBuilder();

        String line;
        try {

            br = new BufferedReader(new InputStreamReader(is));
            while ((line = br.readLine()) != null) {

                if(line.contains("ssid")||line.contains("psk")){
                    sb.append(line+"\n");
                }
                if(line.contains("}")){
                    sb.append("-----------------\n");
                }

            AlertDialog ad = new AlertDialog.Builder(MainActivity.this).create();
            ad.setTitle("Lis of WiFi Passwords Saved in your Mobile");
            ad.setMessage(sb);
            ad.setButton("OK",new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    finish();
                }
            });
            ad.show();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        return sb.toString();

    }

}

Если у вас нет прав, я не знаю, как это сделать. Если у вас есть права пользователя root или вы хотите получить root права на свою Galaxy для получения этих очков, вы должны иметь возможность использовать файловый менеджер (ASTRO, Root Browser и т. Д.), Чтобы найти его.

Используйте файловый менеджер, чтобы найти вашу папку data/misc/file, затем найдите wpa_supplicant.conf, или я предполагаю, что это может быть wep_supplicant.conf, если его / ее сеть использует WEP вместо WPA. Откройте файл.conf с помощью текстового редактора (который, вероятно, встроен в ваше приложение файлового менеджера, если нет, добавьте его в свой список покупок). Вы должны быть в состоянии прочитать пароль в виде простого текста на этом этапе.

Насколько я знаю, это невозможно. Это будет проблемой безопасности, если sdk tools позволит это сделать.

Из-за проблем с безопасностью восстановление сохраненного пароля Wi-Fi невозможно из-за проблем с безопасностью. Если вы рутируете свой телефон, вы можете его получить, но это также в зашифрованном виде.

Другие вопросы по тегам