java android tcpdump抓包
阿新 • • 發佈:2018-10-31
java android tcpdump抓包
最近研究了一下怎樣使用java 在android 執行tcpdump進行抓包
找了好多資料都不怎麼準確,這裡就記錄一下提供參考
方法主要放在execCmd 裡面了
生成的 pacp 檔案主要是可以配合 wireshark 檢視抓包到的內容
說一下遇到的幾個問題:
1. tcpdump 如果手機上沒有,需要自己下載一個,adb push 到自己手機上。
2. 執行tcpdump 需要root 許可權,沒有許可權執行不了
3. su 和 後面的命令不能放在一條執行,例如:su tcpdump -c xxx /xxx/xx
4. 新的一行命令後面要加 \n 才能執行成功!!!
package com.example.arvinliu.tcpdump;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import java.io.*;
public class MainActivity extends AppCompatActivity {
public DataOutputStream mOutputStream;
private Process mProcess = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i("start executing","+++++++++++++++++++++++++++++");
execCmd();
Log.i("done","$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
}
public boolean execCmd() {
try {
Process process = Runtime.getRuntime().exec("su");
InputStreamReader in = new InputStreamReader(process.getInputStream());
DataOutputStream out = new DataOutputStream(process.getOutputStream());
BufferedReader br = new BufferedReader(in);
out.writeBytes("/sdcard/tcpdump/tcpdump -i any -p -s 0 -c 10 -w /sdcard/tcpdump/c3.pcap \n");
out.writeBytes("exit \n");
out.flush();
String line;
while ((line = br.readLine()) != null){
Log.i("output==>",line);
}
br.close();
in.close();
out.close();
return false;
} catch (Exception e) {
return false;
}
}
}