android平台tcpdump wireshark 網路資料抓包(綜合)

來源:互聯網
上載者:User
1       Tcpdump工具使用

 

TcpDump可以將網路中傳送的資料包的“頭”完全截獲下來提供分析。它支援針對網路層、協議、主機、網路或連接埠的過濾,並提供and、or、not等邏輯語句來協助你去掉無用的資訊。

參見: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 plaincopyprint?
  1. tcpdump -p -vv -s 0 -w /sdcard/capture.pcap  

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

 

而這個檔案可以用wireshark在PC上開啟進行查看 非常方便

 

 

具體的原始碼如下

 

MainHook.java

[c-sharp]
view plaincopyprint?
  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 plaincopyprint?
  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通過tcpdump/wireshark工具分析Android平台上現有的直播技術

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

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

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

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

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

 

 

圖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手機電視

 

 

2.2 鳳凰移動台

 

 

2.3 dopool手機電視

 

 

 

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

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.