android平臺tcpdump wireshark 網絡數據抓包



1       Tcpdump工具使用

 

TcpDump可以將網絡中傳送的數據包的完全截獲下來提供分析。它支持針對網絡層、協議、主機、網絡或端口的過濾,並提供andornot等邏輯語句來幫助你去掉無用的信息。

參見:http://baike.baidu.com/view/76504.htm?fr=ala0_1_1

該工具使用便捷,在linux上命令行執行即可進行抓包,尤其是在adroid手機上非常便捷。由於大部分android手機不帶tcpdump工具,首先需要將其拷貝到手機上,與網上的一些方法不一樣本文不講tcpdump執行文件拷貝至system目錄下,因爲system目錄啓動後默認都是ro屬性,拷入文件還涉及到修改屬性(具體的android手機中修改掛載目錄讀寫屬性的方法可參見本博客的http://blog.csdn.net/shuzui1985/article/details/7581803

好了言歸正傳,首先確保你的手機已經root,這裏你不懂就上網找找吧,我就不解釋了。

Ø         adb push c:\wherever_you_put\tcpdump /data/local/tcpdump

Ø         修改文件屬性

adb shell

su

chmod 6755 /data/local/tcpdump

Ø         命令行抓包

/data/local/tcpdump -p -vv -s 0 -w/sdcard/capture.pcap—這個路徑順便你寫哪

 

如果出現tcpdump: no suitable device found。得保證你是在root權限下操作

Ø         抓包完畢以後^C,並且exit退出android bash

adb pull /sdcard/capture.pcap拷貝抓包結果至本地

 

Ø         使用wireshark打開進行查看(不會用的同學可以直接搜索)

 

2       Android程序內置調用tcpdump(轉載)

參見:http://blog.csdn.net/Zengyangtech/article/details/5853366

 

 

最近做一個Android聯網抓包的工具

自己在網上搜索了好久

發現還是沒有頭緒

於是考慮在linux層上下功夫

 

於是採用linux的tcpdump來實現了抓包的功能

用簡單的話來定義tcpdump,就是:dump the traffic on a network,根據使用者的定義對網絡上的數據包進行截獲的包分析工具。

 

 

  作爲互聯網上經典的的系統管理員必備工具,tcpdump以其強大的功能,靈活的截取策略,成爲每個高級的系統管理員分析網絡,排查問題等所必備的東東之一。

 

對於tcpdump詳細的可以參考http://baike.baidu.com/view/76504.htm?fr=ala0_1_1百度百科的介紹

 

我這裏主要介紹一下如何在Android上使用tcpdump

 

我所採用的測試機是破解版G2和模擬器

 

具體的就是在APK程序裏執行linux命令

[c-sharp] view plaincopy
  1. tcpdump -p -vv -s 0 -w /sdcard/capture.pcap  

這樣就能夠將抓到的包在sdcard上寫一個capture.pcap文件

 

而這個文件可以用wireshark在PC上打開進行查看 非常方便

 

 

具體的源代碼如下

 

MainHook.java

[c-sharp] view plaincopy
  1. package zy.hook;  
  2. import java.io.IOException;  
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.util.Log;  
  6. public class MainHook extends Activity {  
  7.     /** Called when the activity is first created. */  
  8.     @Override  
  9.     public void onCreate(Bundle savedInstanceState) {  
  10.         super.onCreate(savedInstanceState);  
  11.         setContentView(R.layout.main);  
  12.         try {  
  13.             //Runtime.getRuntime().exec("su");  
  14.             //Runtime.getRuntime().exec("dd if=/sdcard/tcpdump of=/data/local/tcpdump");  
  15.             //Runtime.getRuntime().exec("chmod 6755 /data/local/tcpdump");  
  16.             Runtime.getRuntime().exec("tcpdump -p -vv -s 0 -w /sdcard/capture.pcap");  
  17.             Log.i("run","success!!!!!!!!!");  
  18.         } catch (IOException e) {  
  19.             // TODO Auto-generated catch block  
  20.             e.printStackTrace();  
  21.             Log.i("run",e.toString());  
  22.         }  
  23.     }  
  24. }  

 

AndroidManifest.xml

[xhtml] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.       package="zy.hook"  
  4.       android:versionCode="1"  
  5.       android:versionName="1.0">  
  6.     <application android:icon="@drawable/icon" android:label="@string/app_name">  
  7.         <activity android:name=".MainHook"  
  8.                   android:label="@string/app_name">  
  9.             <intent-filter>  
  10.                 <action android:name="android.intent.action.MAIN" />  
  11.                 <category android:name="android.intent.category.LAUNCHER" />  
  12.             </intent-filter>  
  13.         </activity>  
  14.     </application>  
  15.     <uses-sdk android:minSdkVersion="7" />  
  16.    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  
  17. </manifest>   

尤其不要忘記了權限<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

的聲明

 

運行程序我們就可以抓包了

 

 

會在sdcard上生成capture.pcap文件

 

 

抓一段時間之後,將文件從sdcard上導出

 

然後我們用wireshark打開

 

可以非常方便的查看我們抓到的包

 

希望能夠對大家有用

3      通過tcpdump/wireshark工具分析Android平臺上現有的直播技術(轉載)

參見:http://blog.csdn.net/moruite/article/details/6095465

 

抓包工具TcpDump for Android + wireshark

如果要抓TCP數據包,我們可以使用TCPdump工具,類似於windows/linux下使用的這個工具一樣。具體方法是

下載tcpdump,還有個地址是http://www.strazzere.com/android/tcpdump

詳細使用請參考http://www.tcpdump.org/裏面的文檔

你需要root權限,

adb push c:\wherever_you_put\tcpdump /data/local/tcpdump

adb shell chmod 6755 /data/local/tcpdump

抓包很簡單

adb shell tcpdump -p -vv -s 0 -w /sdcard/capture.pcap

# “-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

下載wireshark查看數據包,地址是http://www.wireshark.org/download.html,打開這個數據包,就可以查看數據。

轉自 http://vcommon.growprogress.com/?p=1293

要解析Android手機上電視直播協議,可以通過工具抓包查看現有的直播應用,如鳳凰衛視,手機電視,主要的方法有:

1. 在Android 模擬上安裝直播應用,通過wireshark工具抓包查看都是基於什麼協議,如RTSP/HTTP

優點:在windows下通過有界面的wireshark抓包工具較容易操作

缺點: Android模擬器資源有限,電視無法正常播放

wireshark工具的功能很多,常用的功能一般只是選取要抓包的網卡名並設置數據過濾器,如圖1所示,點擊capture菜單下的Options,可以選擇自帶的過濾器,如只抓取http協議包/TCP/UDP包等,然後點擊開始記錄數據:

 

wireshark setting

 

圖1 wireshark抓包工具

 

 

2. 在Android手機上安裝tcpdump抓包工具,將log信息保存到sdcard上,比如抓取手機電視dopool應用的數據包:

./tcpdump -n -s 0 -w /sdcard/dopool.pcap (-n 表示是忽略dns協議,-s 0表示抓取協議包頭和協議具體信息)

下面是幾個常見的Android平臺下的電視直播協議分析

2.1 w.tv手機電視

 

w.tv

 

2.2 鳳凰移動臺

 

ifeng

 

2.3 dopool手機電視

 

 

dopool

 

結論: w.tv和鳳凰衛視是基於RTSP/RTP協議實現的直播功能,dopool是基於TS流實現的直播


http://blog.csdn.net/shuzui1985/article/details/7768840

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章