admin管理员组

文章数量:1540708

概述

最近出了一个wifi万能钥匙很火,但是用wifi万能钥匙连接上wifi我们是看不到密码,假如我想给平板连接,这是我们只能用手机3G网络建立热点然后让平板上的wifi万能钥匙进行连接,这样显然很麻烦。假如手机端有个wifi密码查看器就好了。wifi密码查看器配合wifi万能钥匙使用是很不错的想法。 其实wifi密码查看器就是查看已连接过wifi的密码。因为已连接过wifi的密码都会集中保存在一个系统文件中。

实现

前提:设备获取过root权限。 wifi密码的保存文件为/data/misc/wifi/wpa_supplicant.conf 我们只需执行linux shell命令获取里面的信息再进行解析即可。
public class MainActivity extends ListActivity {
    public static final String TAG="MainActivity";
    private boolean isRoot=false;
    private ArrayList<String> strlist= new ArrayList<String>();
    private DataOutputStream dos;
    private DataInputStream dis;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//        setContentView(R.layout.activity_main);
        setTitle(R.string.title);
        try {
            Process p=Runtime.getRuntime().exec("su");
            Log.d(TAG,"root");
            dos = new DataOutputStream(p.getOutputStream());
            dis = new DataInputStream(p.getInputStream());
            dos.writeBytes("cat /data/misc/wifi/wpa_supplicant.conf" + "\n");
            dos.flush();
            dos.writeBytes("exit\n");
            dos.flush();
            String line;
            while((line= dis.readLine())!=null){
                String str="";
                if(line.trim().startsWith("ssid")){
                    str=line.trim();
                    line= dis.readLine();
                    if(line.trim().startsWith("psk")){
                        str+="\n"+line.trim();
                        strlist.add(str);
                    }
                    Log.d(TAG, str);
                }

            }
            Collections.reverse(strlist);
            p.waitFor();

        } catch (InterruptedException e) {
            e.printStackTrace();

        } catch (IOException e) {
            Log.d(TAG,"not root");
            new AlertDialog.Builder(this).setMessage("对不起,您的设备没有获取root权限").setNeutralButton("确定",null).show();

            e.printStackTrace();
            finish();
        }finally{
            if(dos!=null){
                try {
                    dos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(dis!=null){
                try {
                    dis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        if(strlist.size()>0){
            ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,R.layout.activity_main,strlist);
            setListAdapter(adapter);
        }
    }
@Override
    public boolean onCreateOptionsMenu(Menu menu){
    MenuInflater mflater=getMenuInflater();
    mflater.inflate(R.menu.menu_main,menu);
    return true;
}
    @Override
    public boolean onOptionsItemSelected(MenuItem item){
        if(item.getItemId()==R.id.about){
            AboutBox.show(this);
        }
        return true;
    }

}



本文标签: 思路密码查看器androidwifi