下面介紹一下具體過程。
1.git clone libpcap和tcpdump兩個專案。
git clone
git clone2.編譯libpcap:
(1)進入libpcap目錄,開啟configure。將下面兩端**注釋掉
#if test -z "$with_pcap" && test "$cross_compiling" = yes; then
# # ; }
#fi.......
# if test $ac_cv_linux_vers = unknown ; then
#
# ; }
# fi
(如果不注釋掉上面兩段**,可能會出現determine linux version when cross-compiling或pcap type not determined when cross-compiling導致無法configure)。
(2)返回上一目錄,建立compile-pcap.sh,內容如下:
#!/bin/bash
basepath=$(cd `dirname $0`; pwd)
cd libpcap-master
export ndk=/root/documents/android-ndk-r10e
export prebuilt=$ndk/toolchains/arm-linux-androideabi-4.9/prebuilt
export platform=$ndk/platforms/android-8/arch-arm
export prefix=$basepath/build/libpcap
build_pcap()
build_pcap
make
make install
cd ..
(3)然後執行如下命令
chmod +x ./compile-pcap.sh
./compile-pcap.sh
3.編譯tcpdump
(1)進入tcpdump目錄,開啟configure,將下面一段**注釋掉
# if test $ac_cv_linux_vers = unknown ; then
#
# ; }
# fi
(2)返回上一目錄,建立
compile-tcpdump.sh,內容如下:
#!/bin/bash
basepath=$(cd `dirname $0`; pwd)
cd tcpdump-master
export ndk=/root/documents/android-ndk-r10e
export prebuilt=$ndk/toolchains/arm-linux-androideabi-4.9/prebuilt
export platform=$ndk/platforms/android-8/arch-arm
export prefix=$basepath/build/tcpdump
export libpcap=$basepath/build/libpcap
build_tcpdump()
build_tcpdump
make
make install
cd ..
(上面的兩個標準需要加入-pie -fpie。
pie安全機制從安卓4.1引入,但是android l之前的系統版本並不會去檢驗可執行檔案是否基於pie編譯出的。因此不會報錯。但是android l已經開啟驗證,如果呼叫的可執行檔案不是基於pie方式編譯的,則無法執行。)
(3)然後執行如下命令
chmod +x ./compile-tcpdump.sh
./compile-tcpdump.sh
最終生成tcpdump可執行檔案。
version:
4.9.0 / 1.8.1
release date:
january 18, 2017
file size:
2057576
tcpdump 4.9.0
tcpdump 的抓包儲存到檔案的命令引數是-w ***.cap
抓eth1的包
tcpdump -i eth1 -w /tmp/***.cap
抓 192.168.1.123的包
tcpdump -i eth1 host 192.168.1.123 -w /tmp/***.cap
抓192.168.1.123的80埠的包
tcpdump -i eth1 host 192.168.1.123 and port 80 -w /tmp/***.cap
抓192.168.1.123的icmp的包
tcpdump -i eth1 host 192.168.1.123 and icmp -w /tmp/***.cap
抓192.168.1.123的80埠和110和25以外的其他埠的包
tcpdump -i eth1 host 192.168.1.123 and ! port 80 and ! port 25 and ! port 110 -w /tmp/***.cap
抓vlan 1的包
tcpdump -i eth1 port 80 and vlan 1 -w /tmp/***.cap
抓pppoe的密碼
tcpdump -i eth1 pppoes -w /tmp/***.cap
以100m大小分割儲存檔案, 超過100m另開乙個檔案 -c 100m
抓10000個包後退出 -c 10000
後台抓包, 控制台退出也不會影響:
nohup tcpdump -i eth1 port 110 -w /tmp/***.cap &
抓下來的檔案可以直接用ethereal 或者wireshark開啟。
1
tcpdump
安裝tcpdump
,命令列模式依次執行: 1
23adb root
adb push tcpdump /data/local/tcpdump
adb shell chmod 6755 /data/local/tcpdump
其中adb push
的第乙個引數為本地
tcpdump
的路徑。
2
、啟動並執行
tcpdump
命令列模式執行下面命令: 1
adb shell /data/local/tcpdump -n -s 0
這時在手機上做任何涉及到網路的操作都會在螢幕上列印出來,可以通過
ctrl+c
停止。
由於命令列最大輸出的限制及螢幕不斷滾動,檢視不方便,我們可以將抓取的網路包儲存到
sd卡,如下命令: 1
adb shell /data/local/tcpdump -i any -p -s 0 -w /sdcard/netcapture.pcap
依然通過
ctrl+c
停止,將檔案拉取到本地pc
1adb pull /sdcard/netcapture.pcap .
通過–help
我們發現
tcpdump
支援如下引數:
tcpdump [-aaddefllnnopqrstuuvxx] [-c count] [ -c file_size ]
[ -e algo:secret ] [ -f file ] [ -i inte***ce ] [ -m secret ]
[ -r file ] [ -s snaplen ] [ -t type ] [ -w file ]
[ -w filecount ] [ -y datalinktype ] [ -z user ]
[ expression ]
其中-c
表示監控的請求個數;
-c表示儲存檔案的最大大小;
-i表示監控的型別;
-s表示抓取的網路請求返回的大小,
0表示抓取整個網路包;
-w表示抓取的包儲存的檔案路徑,此時不會在標準輸出列印。並且可以新增
port
引數表示埠。
3
、利用wireshark
分析資料
wireshark
,英文版位址
(需要翻牆):
用wireshark
開啟capture.pcap
即可分析
log關於
wireshark
具體可見:
tcpdump 交叉編譯移植(mips)
一 libpcap 交叉編譯 1libpcap 1.8.1 2 解壓 3 修改configure檔案 a 注釋掉 if test z with pcap test cross compiling yes then as fn error pcap type not determined whencr...
tcpdump交叉編譯及使用
tar zxvf libpcap 1.4.0.tar.gz2.2 進入解壓目錄 cd libpcap 1.4.0 2.3 配置生成makefile檔案 cc arm none linux gnueabi gcc ac cv linux vers 2 configure host arm linux ...
arm開發 交叉編譯及tcpdump
命名規則 arch vendor kernel system arch 體系架構,如arm,mips vendor 工具鏈提供商 kernel 目標核心 system 目標系統 build 編譯該軟體所使用的平台 host 該軟體將執行的平台 target 該軟體所處理的目標平台 wget tar ...