首先,介绍下dhcpdump这个工具,通过名字就可以看出它应该是和tcpdump类似的工具了,不过它主要是抓取dhcp相关的包,并解析为可读的字符串。输出结果如下:
然后,下载dhcpdump源码:http://www.mavetju.org/download/dhcpdump-1.8.tar.gz,将其解压到dhcpdump目录中,在其中编写Android.mk文件:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:=\
dhcpdump.c
LOCAL_CFLAGS := -O2 -g
LOCAL_CFLAGS += -D__FAVOR_BSD
LOCAL_C_INCLUDES += \
bionic/libc/include\
external/libpcap
LOCAL_STATIC_LIBRARIES += libpcap
LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
LOCAL_MODULE_TAGS := eng
LOCAL_MODULE := dhcpdump
include $(BUILD_EXECUTABLE)
这其中有几点需要注意:
1、在android的源码环境中搜索ethernet.h文件(是位于net目录下的那个),然后在dhcpdump源码目录新建net目录,然后将ethernet.h拷贝到net目录
2、需要添加LOCAL_CFLAGS += -D__FAVOR_BSD 宏定义,否则报错
external/dhcpdump/dhcpdump.c:167: error: 'struct udphdr' has no member named 'uh_ulen'
3、需要定义c头文件位置,因为使用到了pcap以及net等相关头文件:
LOCAL_C_INCLUDES += \
bionic/libc/include\
external/libpcap
4、指定所使用的静态库:
LOCAL_STATIC_LIBRARIES += libpcap
5、修改源码,添加两个函数,否则报错:
external/dhcpdump/dhcpdump.c:161: error: undefined reference to 'ether_ntoa'
函数定义如下:
char *
ether_ntoa_r (const struct ether_addr *addr, char *buf)
{
sprintf (buf, "%x:%x:%x:%x:%x:%x",
addr->ether_addr_octet[0], addr->ether_addr_octet[1],
addr->ether_addr_octet[2], addr->ether_addr_octet[3],
addr->ether_addr_octet[4], addr->ether_addr_octet[5]);
return buf;
}
char *
ether_ntoa (const struct ether_addr *addr)
{
static char asc[18];
return ether_ntoa_r (addr, asc);
}
6、在LOCAL_SRC_FILES中不能包含strsep.c文件,否则报错:
multiple definition of 'strsep'
最后,到android的源码根目录,如system,执行如下脚本:
$ . build/envsetup
$ cd external/dhcpdump
$ mm
输出如下:
Install: out/target/product/generic/system/xbin/dhcpdump
make:离开目录“/home/lql/android/system”
至此,dhcpdump编译成功。
开始测试,可以从上面的目录中将dhcpdump拷贝到android手机的/system/xbin/目录下,并修改权限为可执行。
将手机和电脑连接,cmd,输入adb shell进入shell窗口,
执行dhcpdump -i eth0
当系统开始获取ip地址时,上面的命令即抓取对应包,并解析为可读的字符串,如最开始的截图。
- 大小: 14.9 KB
分享到:
相关推荐
本篇文章将详细讲解如何在不使用Cygwin的情况下,将一个基于Cocos2d-x的Win32项目成功地移植到Android平台。Cygwin是一个在Windows上模拟Linux环境的工具,但在某些情况下,我们可能希望避免它的使用,例如为了减少...
但是,Android系统并不具备SSH功能,这篇文章将讲述如何将OpenSSH移植到Android系统中。 Step 1: 获取OpenSSH源码 首先,我们需要获取OpenSSH的源码,因为Android SDK中并不包含OpenSSH源码。我们可以从GitHub上...
caffe-android-lib, 将caffe移植到android平台 Caffe-Android-Lib目标移植到android平台的端口 caffe支持Up-to-date caffe ( d91572d )仅 CPU不支持 hdf5插件生成推荐:使用 Dockergit clo
然而,"ntfs-3g移植到android平台-有效可行"这一标题表明,通过特定的技术手段,我们可以将开源的NTFS驱动ntfs-3g移植到Android系统中,从而实现对NTFS格式存储设备的读写功能。下面将详细介绍这个过程以及相关的...
ch02》和描述《将本地PC游戏轻松移植到Android的秘技, jni, ndk》揭示了本书第二章节将详细讨论的内容,旨在教导读者如何将本地PC上的游戏通过特定的技术手段移植到Android平台上。特别提及了JNI(Java Native ...
【标题】:“将Android平台的RIL层移植到基于LINUX的通用平台的研究与实现” 【描述】:该研究探讨了如何将Android系统的Radio Interface Layer(RIL)移植到基于LINUX的通用平台,旨在为非Android环境提供3G网络...
将 FFmpeg 移植到 Android 平台,可以让 Android 应用程序具备处理多媒体文件的强大能力,比如播放视频、音频,进行格式转换等。在 Android 上移植 FFmpeg 需要对 C/C++ 语言、Android NDK(Native Development Kit...
本教程着重于教授开发者如何将原本开发在个人电脑(PC)上的游戏移植到Android平台。这是一个复杂的工程,因为它不仅需要对原游戏架构和内容有深入了解,还需要熟悉Android平台的开发环境和特性。 在本教程中,将会...
在本文中,我们将探讨如何将J2ME游戏移植到Android平台上。作为一名IT行业大师,我将详细地解释J2ME游戏移植到Android平台的技术要点。 首先, lets talk about the differences between J2ME and Android平台。...
将XBMC移植到Android平台上需要进行一系列准备工作,包括设置Android开发环境、获取源代码以及编译等步骤。 #### 2. 安装并设置 Android 开发环境 为了在Android设备上运行XBMC,首先需要搭建Android开发环境,这...
总的来说,Dropbear在Android 9.0上的移植涉及到多个层面的知识,包括Android系统架构、编译工具链、Linux内核接口、权限管理以及SSH协议本身。这个过程既是对技术的考验,也是提升技能的好机会。
Android系统移植是将Android操作系统部署到不同的硬件平台上,使Android系统能够在非原生支持的硬件上运行。平台开发则侧重于如何在已移植的基础上进行应用、系统或硬件的定制与优化。 2. Android系统下载与编译...
以上就是将FFmpeg移植到Android平台并使用.so包的关键步骤和知识点。这个过程中需要对Android的NDK开发、C/C++编程以及FFmpeg的API有深入理解,才能顺利完成整个流程。在实际开发中,还需要不断调试和优化,以确保在...
在IT行业中,将Flash游戏移植到Android平台上是一个重要的技术议题,因为这涉及到多个技术领域,如ActionScript编程、Android应用开发、游戏引擎适配等。本篇文档将深入探讨这一主题,帮助开发者理解和掌握相关知识...
本文将基于给定的文件信息,探讨Xcode移植到Android的方法,即如何在不同的开发环境中实现代码的共享与复用。 ### Xcode与Android Studio的比较 首先,我们来对比一下Xcode与Android Studio。Xcode主要面向Apple...
为了拓宽Boa的应用场景,将其移植到Android平台成为一种可行的选择。 #### 二、移植准备工作 在开始移植工作之前,我们需要准备以下几项内容: 1. **Android NDK**:用于编译原生代码。 2. **Boa源码**:可以从官方...
本资源详细记录如何把win32项目移植到Android平台上,图文并茂,是我自己移植时的心得体会,其中还有详细记录着移植时可能遇到的错误的解决方法
本篇将详细介绍如何在Linux环境下使用Android NDK(Native Development Kit)编译libtiff库,并将其移植到Android平台。 一、libtiff库介绍 libtiff是一个强大的库,它支持读取、写入和处理多种TIFF格式的图像。...