java android tcpdump抓包

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Jasonliujintao/article/details/78523293

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

猜你喜欢

转载自blog.csdn.net/Jasonliujintao/article/details/78523293
今日推荐