안 드 로 이 드 는 어떻게 와 이 파이 비밀 번 호 를 봅 니까?

안 드 로 이 드 는 어떻게 와 이 파이 비밀 번 호 를 봅 니까?
선언:
안 드 로 이 드 폰 에서 와 이 파 이 를 연결 하면 비밀 번 호 는 일반적으로 보이 지 않 습 니 다.이 비밀 번 호 를 볼 수 있 는 방법 은 없 을까요?방법 은 일반적으로 두 가지 가 있 는데,하 나 는 와 이 파이 의 프로필 을 보 는 것 이 고,하 나 는 명령 을 사용 하 는 것 이다.첫 번 째,인터넷 에는 이미 많은 것 이 있 습 니 다.대체적으로 루트 를 먼저 사용 한 다음 에 핸드폰 조수 나 핸드폰 파일 조회 와 같은 도구(예 를 들 어 ES,Root Exploere 등)를 사용 하여 와 이 파이 설정 파일(위 치 는 data/misc/wifi 에 들 어 갑 니 다.디 렉 터 리 에 wpa 가 있 습 니 다.supplicant.conf 또는 다른 파일 이름 이.conf 로 끝 나 는 파일).
그러나 이 방법 으로 는 휴대 전화의 루트 가 철저 하지 않 을 때 예상 치 못 한 문 제 를 일 으 킬 수 있다.예 를 들 어 샤 오미 핸드폰 은 우리 가 루트 도 구 를 사용 하여 루트 를 제거 한 후에 루트 가 성공 한 것 처럼 보이 지만 일부 문 제 를 일 으 킬 수 있다.예 를 들 어 권한 수여 에 문제 가 생 겼 고 와 이 파 이 를 사용 할 수 없 으 며 핸드폰 이 컴퓨터 에 연결 되 지 못 하 는 등 이다.
그렇다면 이런 방식 을 쓰 지 않 는 다 면 어떤 방법 이 있 을 까?이것 이 바로 오늘 의 주제 이다.
와 이 파이 비밀 번 호 를 보 는 두 번 째 방법:명령.
먼저 효과 도 를 살 펴 보 자.

그림 에서 명령 을 순서대로 입력 한 후 와 이 파이 의 사용자 이름(test)과 비밀번호(12345)를 받 은 것 을 볼 수 있다.지금 이 몇 가지 명령 을 보 자.
1、adb connect 192.168.1.6。이것 은 adb 를 사용 하여 휴대 전 화 를 연결 하 는 것 이다.adb 가 환경 변수 에 설정 되 어 있 지 않 으 면 adb 가 있 는 디 렉 터 리 를 찾 은 다음 이 명령 을 실행 하거나 디 렉 터 리 를 환경 변수 에 추가 하 십시오.
2、adb shell。이것 은 휴대 전 화 를 시작 하 는 명령 단말기 다.
3、cat /data/misc/wifi/*.conf。/data/misc/wifi 폴 더 의 모든 conf 파일 접미사 정 보 를 가 져 옵 니 다.
그럼 코드 에 서 는 어떻게 실현 해 야 합 니까?다음은 실 현 된 코드 입 니 다.
WifiManage.Java

package com.example.wifipassword; 
 
import java.io.BufferedReader; 
import java.io.DataInputStream; 
import java.io.DataOutputStream; 
import java.io.InputStreamReader; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 
 
public class WifiManage { 
 
  public List<WifiInfo> Read() throws Exception { 
    List<WifiInfo> wifiInfos=new ArrayList<WifiInfo>(); 
   
    Process process = null; 
    DataOutputStream dataOutputStream = null; 
    DataInputStream dataInputStream = null; 
    StringBuffer wifiConf = new StringBuffer(); 
    try { 
      process = Runtime.getRuntime().exec("su"); 
      dataOutputStream = new DataOutputStream(process.getOutputStream()); 
      dataInputStream = new DataInputStream(process.getInputStream()); 
      dataOutputStream 
          .writeBytes("cat /data/misc/wifi/*.conf
"); dataOutputStream.writeBytes("exit
"); dataOutputStream.flush(); InputStreamReader inputStreamReader = new InputStreamReader( dataInputStream, "UTF-8"); BufferedReader bufferedReader = new BufferedReader( inputStreamReader); String line = null; while ((line = bufferedReader.readLine()) != null) { wifiConf.append(line); } bufferedReader.close(); inputStreamReader.close(); process.waitFor(); } catch (Exception e) { throw e; } finally { try { if (dataOutputStream != null) { dataOutputStream.close(); } if (dataInputStream != null) { dataInputStream.close(); } process.destroy(); } catch (Exception e) { throw e; } } Pattern network = Pattern.compile("network=\\{([^\\}]+)\\}", Pattern.DOTALL); Matcher networkMatcher = network.matcher(wifiConf.toString() ); while (networkMatcher.find() ) { String networkBlock = networkMatcher.group(); Pattern ssid = Pattern.compile("ssid=\"([^\"]+)\""); Matcher ssidMatcher = ssid.matcher(networkBlock); if (ssidMatcher.find() ) { WifiInfo wifiInfo=new WifiInfo(); wifiInfo.Ssid=ssidMatcher.group(1); Pattern psk = Pattern.compile("psk=\"([^\"]+)\""); Matcher pskMatcher = psk.matcher(networkBlock); if (pskMatcher.find() ) { wifiInfo.Password=pskMatcher.group(1); } else { wifiInfo.Password=" "; } wifiInfos.add(wifiInfo); } } return wifiInfos; } }
WifiInfo.java

package com.example.wifipassword; 
 
public class WifiInfo { 
  public String Ssid=""; 
  public String Password=""; 
} 
주:
1.Runtime.getRuntime().exec("su")를 통 해 루트 권한 을 가 져 옵 니 다.
2.process.getOutputStream()과 process.getInputStream()을 통 해 터미널 의 입력 흐름 과 출력 흐름 을 가 져 옵 니 다.
3.dataOutputStream.writeBytes("cat/data/misc/wifi/*.conf")를 통 해 터미널 에 명령 을 입력 합 니 다.이 곳 은 줄 을 바 꿔 야 합 니 다.그렇지 않 으 면 다음 exit 명령 과 명령 으로 실 패 했 고 결 과 를 얻 을 수 없습니다.
4.dataInputStream 을 통 해 명령 실행 결 과 를 가 져 오고 UTF-8 인 코딩 으로 문자열 로 변환 합 니 다.
5.정규 표현 식 을 사용 하여 와 이 파이 의 사용자 이름과 비밀 번 호 를 걸 러 냅 니 다.
비밀 번 호 를 표시 하 는 코드 를 첨부 합 니 다:

package com.example.wifipassword; 
 
import java.util.List; 
 
import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.ListView; 
import android.widget.TextView; 
 
public class MainActivity extends Activity { 
   
  private WifiManage wifiManage; 
 
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    wifiManage = new WifiManage(); 
    try { 
      Init(); 
    } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
    } 
  } 
 
  public void Init() throws Exception { 
    List<WifiInfo> wifiInfos = wifiManage.Read(); 
    ListView wifiInfosView=(ListView)findViewById(R.id.WifiInfosView); 
    WifiAdapter ad = new WifiAdapter(wifiInfos,MainActivity.this); 
    wifiInfosView.setAdapter(ad);   
  } 
   
  public class WifiAdapter extends BaseAdapter{ 
 
    List<WifiInfo> wifiInfos =null; 
    Context con; 
     
    public WifiAdapter(List<WifiInfo> wifiInfos,Context con){ 
      this.wifiInfos =wifiInfos; 
      this.con = con; 
    } 
     
    @Override 
    public int getCount() { 
      // TODO Auto-generated method stub 
      return wifiInfos.size(); 
    } 
 
    @Override 
    public Object getItem(int position) { 
      // TODO Auto-generated method stub 
      return wifiInfos.get(position); 
    } 
 
    @Override 
    public long getItemId(int position) { 
      // TODO Auto-generated method stub 
      return position; 
    } 
 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
      // TODO Auto-generated method stub 
      convertView = LayoutInflater.from(con).inflate(android.R.layout.simple_list_item_1, null); 
      TextView tv = (TextView)convertView.findViewById(android.R.id.text1); 
      tv.setText("Wifi:"+wifiInfos.get(position).Ssid+"
:"+wifiInfos.get(position).Password); return convertView; } } }
최종 효과 도:

읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기