1. 程式人生 > >Ubuntu下移植Tcpdump到Android平臺

Ubuntu下移植Tcpdump到Android平臺

系統: ubuntu14.04.2
NDK: android-ndk-r10e

為Linux平臺編譯Tcpdump

編譯之前確保有lex和yacc工具

sudo apt-get install flex bison

1.解壓libpcap-1.7.4之後進入該目錄,開啟終端
這裡寫圖片描述
接著輸入

make

完成編譯
2.解壓Tcpdump-4.7.4之後進入該目錄,開啟終端
同樣

./configure
make

不出意外的話
這裡寫圖片描述

檢視檔案資訊

這裡寫圖片描述

直接輸入

./tcpdump

可能會提示
這裡寫圖片描述

需要帶上許可權

sudo ./tcpdump

為Android平臺編譯Tcpdump

新建一個Shell指令碼
筆者稍微做了一點修改

#!/bin/sh

# --------------------------------------
#
#      Title: build-tcpdump
#     Author: Loic Poulain, [email protected]
# Updated by: muzso (http://muzso.hu/)
#
#    Purpose: download & build tcpdump for arm android platform
#
# You have to define your android NDK directory before calling this script
# example: # $ export NDK=/home/Workspace/android-ndk-r10e # $ sh build-tcpdump # # works with # tcpdump 4.7.4 # android-ndk-r10e # # You'll need lex and yacc. # On Debian/Ubuntu based systems run this: # sudo apt-get install flex bison # -------------------------------------- # default, edit version
tcpdump_ver=4.7.4 libpcap_ver=1.7.4 # note: libpcap v1.7.2 only required api v9, but libpcap v1.7.3+ requires api v21 # And tcpdump v4.7.4 requires libpcap v1.7.3+ too (tcpdump v4.7.3 could be compiled with libpcap v1.7.2). # So viable combos are: # * api=9, libpcap=1.7.2, tcpdump=4.7.3 # * api=21, libpcap=1.7.4, tcpdump=4.7.4 android_api_def=21 ndk_dir_def=android-ndk-r10e #指定平臺arm mips aarch64 platform=arm #-------------------------------------------------------# tcpdump_dir=tcpdump-${tcpdump_ver} libpcap_dir=libpcap-${libpcap_ver} if [ ${NDK} ] then ndk_dir=${NDK} else ndk_dir=${ndk_dir_def} fi ndk_dir=`readlink -f ${ndk_dir}` if [ ${ANDROID_API} ] then android_api=${ANDROID_API} else android_api=${android_api_def} fi echo "_______________________" echo "" echo "NDK - ${ndk_dir}" echo "Android API: ${android_api}" echo "_______________________" exit_error() { echo " _______" echo "| |" echo "| ERROR |" echo "|_______|" exit 1 } { if [ $# -ne 0 ] then if [ -d $1 ] then cd $1 else echo directory $1 not found exit_error fi else mkdir tcpdumpbuild cd tcpdumpbuild fi } # create env { echo " ____________________" echo "| |" echo "| CREATING TOOLCHAIN |" echo "|____________________|" if [ -d toolchain ] then echo Toolchain already exist! Nothing to do. else echo Creating toolchain... mkdir toolchain bash ${ndk_dir}/build/tools/make-standalone-toolchain.sh --arch=$platform --platform=android-${android_api} --install-dir=toolchain if [ $? -ne 0 ] then rm -fr toolchain exit_error fi fi export CC=arm-linux-androideabi-gcc export RANLIB=arm-linux-androideabi-ranlib export AR=arm-linux-androideabi-ar export LD=arm-linux-androideabi-ld export PATH=`pwd`/toolchain/bin:$PATH } # download & untar libpcap + tcpdump { echo " _______________________________" echo "| |" echo "| DOWNLOADING LIBPCAP & TCPDUMP |" echo "|_______________________________|" tcpdump_file=${tcpdump_dir}.tar.gz libpcap_file=${libpcap_dir}.tar.gz tcpdump_link=http://www.tcpdump.org/release/${tcpdump_file} libpcap_link=http://www.tcpdump.org/release/${libpcap_file} if [ -f ${tcpdump_file} ] then echo ${tcpdump_file} already downloaded! Nothing to do. else echo Download ${tcpdump_file}... wget ${tcpdump_link} if [ ! -f ${tcpdump_file} ] then exit_error fi fi if [ -f ${libpcap_file} ] then echo ${libpcap_file} already downloaded! Nothing to do. else echo Download ${libpcap_file}... wget ${libpcap_link} if [ ! -f ${libpcap_file} ] then exit_error fi fi if [ -d ${tcpdump_dir} ] then echo ${tcpdump_dir} directory already exist! Nothing to do. else echo untar ${tcpdump_file} tar -zxf ${tcpdump_file} fi if [ -d ${libpcap_dir} ] then echo ${libpcap_dir} directory already exist! Nothing to do. else echo untar ${libpcap_file} tar -zxf ${libpcap_file} fi } # build libpcap { cd ${libpcap_dir} echo " _____________________" echo "| |" echo "| CONFIGURING LIBPCAP |" echo "|_____________________|" chmod +x configure ./configure --host=$platform-linux --with-pcap=linux ac_cv_linux_vers=2 if [ $? -ne 0 ] then exit_error fi echo " __________________" echo "| |" echo "| BUILDING LIBPCAP |" echo "|__________________|" chmod +x runlex.sh make if [ $? -ne 0 ] then exit_error fi cd .. } # build tcpdump { cd ${tcpdump_dir} echo " _____________________" echo "| |" echo "| CONFIGURING TCPDUMP |" echo "|_____________________|" chmod +x configure # Compile PIE (position independent executable) for Lollipop compatibility. ./configure --host=$platform-linux ac_cv_linux_vers=2 --with-crypto=no CFLAGS='-fPIE' LDFLAGS='-fPIE -pie' if [ $? -ne 0 ] then exit_error fi echo " __________________" echo "| |" echo "| BUILDING TCPDUMP |" echo "|__________________|" #setprotoent endprotoen not supported on android sed -i".bak" "s/setprotoent/\/\/setprotoent/g" print-isakmp.c sed -i".bak" "s/endprotoent/\/\/endprotoent/g" print-isakmp.c # NBBY is not defined => FORCE definition make CFLAGS='-DNBBY=8' # for tcpdump < 4.2.1 (CFLAGS redefined in Makefile) => just make if [ $? -ne 0 ] then exit_error fi cd .. } cp ${tcpdump_dir}/tcpdump . chmod +x tcpdump echo " __________________" echo "| |" echo "| TCPDUMP IS READY |" echo "|__________________|" echo `pwd`/tcpdump

編譯開始

export NDK=/xxxxxx/android-ndk-r10e
bash build_tcpdump.sh

完成編譯後即可看到
這裡寫圖片描述

然後使用adb上傳到手機裡

adb push tcpdump /sdcard/
adb shell
su
cd /sdcard/
mv tcpdump /data/local/
cd /data/local/
chmod -R 777 tcpdump

不過在一款華為手機上執行的時候,發現一個問題

./tcpdump: not executable: magic 7F45

究其原因發現是混合編譯的平臺不一致導致的

我們可以通過命令檢視CPU資訊

adb shell cat /proc/cpuinfo

這裡寫圖片描述

修改上面的shell指令碼

platform=aarch64

編譯之後按照上述方式上傳到手機裡執行

./tcpdump -i any -p -s 0 -w /sdcard/temp/log.pcap

接著就可以使用
wireshark分析抓到的包了

相關推薦

Ubuntu移植Tcpdump到Android平臺

系統: ubuntu14.04.2 NDK: android-ndk-r10e 為Linux平臺編譯Tcpdump 編譯之前確保有lex和yacc工具 sudo apt-get install flex bison 1.解壓libpcap-1.7

Ubuntu用NDK編譯移植FFmpeg 2.0(配置最新版x264)到Android平臺

將x264配置到ffmpeg中需要先編譯x264,生成靜態庫或動態庫。因為264的靜態庫本身不大(我編譯完成後是1.1M)且考慮到平臺移植問題,這裡選擇的是編譯生成靜態庫。 準備,新建工作空間 (1)建立總目錄FFmpeg-Android eg: mkdir workspace --> cd wor

修復英特爾新平臺集顯在ubuntu分辨率不正常的方法

pda inux IT 分辨率 web containe log line ont 修改Grub sudo gedit /etc/default/grub 找到 "GRUB_CMDLINE_LINUX_DEFAULT",把"quiet splash"

ubuntuzephyr開發環境搭建以及移植到iMX.7S的M4核心的過程

zephyr開發環境搭建 首先介紹如何在ubuntu16.04 Desktop環境下搭建Zephyr開發環境。構建Zephyr開發環境除了需要正確獲取Zephyr原始碼和Zephyr SDK,還需要正確安裝python3、cmake和git等工具。 更新軟體源 sudo apt-get

Ubuntu使用Deepin-wine的移植版安裝qq微信等

title: Ubuntu下使用Deepin-wine的移植版安裝qq微信等 toc: false date: 2018-09-18 16:12:49 categories: methods tags: ubuntu 下載Deepin-wine的Ubuntu移植版: gi

ubuntu 16.04 環境編譯S3C2440平臺總結

1. 使用openocd燒寫S3C2440的nandflash     a) 準備工作:sudo apt-get install openocd     b) openocd 需要配置自己的openocd.cfg,配置檔案可以放在當前執行openocd的目錄,也可以是用引數

不同平臺移植x264

  一.   編譯環境     mips移植x264相關記錄,mips交叉編譯工具採用buildroot-gcc342版本,x264 版本x264-snapshot-20140831-2245。     android 平臺下移植, 採用android-ndk-r9d  

ubuntu安裝phpstudy環境記錄

completed ubuntu 下載地址 計算機 下載安裝 下載一鍵安裝包下載地址:h t tp:// w w w.p h p st u dy.n et/a. php/208 .html安裝過程開啟終端更改文件權限 chmod +x phpstudy進行安裝 ./phpstudy.bin

ubuntunvm,node以及npm的安裝與使用

詳細 manage tag 不知道 https desc .org 原因 使用方法 一:安裝nvm 首先下載nvm。這裏我們須要使用git,假設沒有安裝git,能夠使用 sudo apt-get install git來安裝 git clone https://g

Ubuntu安裝Maven

clas log 移動 exp .tar.gz blog opts .gz -xms 1、JDK默認已經安裝,所以不需要。 2、下載Maven wget http://apache.fayea.com/maven/maven-3/3.5.0/binaries/apa

Ubuntu如何解壓各類文件

當前 理想 平臺 macos 方式 arch -a archive 解壓縮 tar解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(註:tar是打包,不是壓縮!)———————————————.gz解壓1:gunz

Ubuntu安裝java環境

方法 x64 light tar zxvf inux -1 .tar.gz jdk1 1,在官網中下載 2,通過xshell將壓縮包傳到虛擬機中的 /usr/local/ 目錄下 3 cd /usr/local 4 ls tar zxvf jdk-7u79-linux

Ubuntumysql修改連接超時wait_timeout

執行 rac nbsp ria 修改 cti int ubun pan 命令行登入mysql show variables like ‘%timeout%‘;(其中有用的是: interactive_timeout 和wait_timeout 為28800,默認為8小

ubuntu安裝zsh + oh my zsh

ubuntu下 git .sh https default href apt-get 使用 ubuntu 1.需要zsh支持,所以安裝zsh: sudo apt-get install zsh 2.安裝oh my zsh 根據官方: $ sh -c "$(curl

Ubuntubuild wxPython報錯

wxpythonUbuntu下build wxPython報錯configure: error: GStreamer not available百度到如下頁面http://wxpython-users.1045709.n5.nabble.com/Linux-configure-fails-on-GStream

ubuntu解決u盤成只讀文件系統問題

afa 不知道 bsp com ack pac back 系統故障 功能 Ubuntu下U盤出現文件系統只讀的問題了。癥狀為無法刪除U盤中現有文件,無法向U盤拷貝新的文件。但不知道是什麽原因。今天下決心解決這個問題。解決方法:1. 在Ubuntu終端運行如下命令tail -

Linux(Ubuntu)搭建ASP.NET Core環境

代碼 win ner tps tool 環境 pan test deb 今天來學習一下ASP.NET Core 運行在Ubuntu中。無需安裝mono 。 環境 Ubuntu 14.04.4 LTS 服務器版 全新安裝系統。 下載地址:http://mirrors.n

ubuntu安裝jre

增加 lin ubun 解壓 href .bashrc .gz linux img jre下載地址:http://www.java.com/en/download/manual.jsp 1、將下載好的jre-7u55-linux-x64.tar.gz文件解壓縮,得到jr

ubuntuspring環境搭建

ext targe out 插件 fontsize article ase tex get 一.安裝JDK 下載官網:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-21331

Ubuntu Eclipse 安裝SVN

path size add library 內容 svn 註意 -- xms 如果尚未安裝Eclipse,先安裝;也可以直接下載Google提供的ADT Bundle。 sudo apt-get install eclipse 安裝Subversion sudo apt-g