版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}
}
}