1. 程式人生 > >java android tcpdump抓包

java android tcpdump抓包

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; } } }