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命令
- tcpdump -p -vv -s 0 -w /sdcard/capture.pcap
這樣就能夠將抓到的包在sdcard上寫一個capture.pcap文件
而這個文件可以用wireshark在PC上打開進行查看 非常方便
具體的源代碼如下
MainHook.java
- package zy.hook;
- import java.io.IOException;
- import android.app.Activity;
- import android.os.Bundle;
- import android.util.Log;
- public class MainHook extends Activity {
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- try {
- //Runtime.getRuntime().exec("su");
- //Runtime.getRuntime().exec("dd if=/sdcard/tcpdump of=/data/local/tcpdump");
- //Runtime.getRuntime().exec("chmod 6755 /data/local/tcpdump");
- Runtime.getRuntime().exec("tcpdump -p -vv -s 0 -w /sdcard/capture.pcap");
- Log.i("run","success!!!!!!!!!");
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- Log.i("run",e.toString());
- }
- }
- }
AndroidManifest.xml
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="zy.hook"
- android:versionCode="1"
- android:versionName="1.0">
- <application android:icon="@drawable/icon" android:label="@string/app_name">
- <activity android:name=".MainHook"
- android:label="@string/app_name">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
- <uses-sdk android:minSdkVersion="7" />
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- </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包等,然後點擊開始記錄數據:
圖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流實現的直播