Android中使用Tcpdump抓取网络数据包

最近在Android device上做一个有关于UDP的应用,需要检查发送了多少个UDP packet.关于网络封包的抓取的工具在PC上有wireshark等工具,那如何抓取Android device上发送或者接收的封包呢?有没有类似wireshark这样的工具呢?通过搜索,还是找到了这样的工具:

来自于: http://jiayanjujyj.iteye.com/blog/1405868
工具:
tcpdump 抓取网络数据包,下载地址  http://www.strazzere.com/android/tcpdump
              源码和文档 http://www.tcpdump.org/
wireshark 无须多说了,PC上大名鼎鼎的网络数据抓取分析工具,这里主要是用来打开和分析tcpdump抓取的网路数据包。

使用:
1.下载tcpdump到电脑上
Java代码 
adb root   
adb remount   
adb push tcpdump /system/bin/tcpdump   
adb shell chmod 6755  /system/bin/tcpdump  

2. 运行tcpdump,这个需要root权限,不过上面的命令已经获取root了
Java代码 
adb shell tcpdump -i any -p -s 0 -w /sdcard/capture.pcap   
# "-i any": listen on any network interface   
# "-p": disable promiscuous mode (doesn't work anyway)   
# "-s 0": capture the entire packet   
# "-w": write packets to a file (rather than printing to stdout)   
   
   ... do whatever you want to capture, then ^C to stop it ...   
   
adb pull /sdcard/capture.pcap .   
sudo apt-get install wireshark  # or ethereal, if you're still on dapper   
wireshark capture.pcap          # or ethereal   
   
   ... look at your packets and be wise ...   
You can run tcpdump in the background from an interactive shell or from Terminal. By default, tcpdump captures all traffic without filtering. If you prefer, add an expression like port 80 to the tcpdump command line.

Real time packet monitoring
Execute the following if you would like to watch packets go by rather than capturing them to a file (-n skips DNS lookups. -s 0 captures the entire packet rather than just the header):
adb shell tcpdump -n -s 0 


Typical tcpdump options apply. For example, if you want to see HTTP traffic:
adb shell tcpdump -X -n -s 0 port 80 

怎么使用wireshark进行分析就不再赘述了。

猜你喜欢

转载自aijiawang-126-com.iteye.com/blog/1684406