`
aswang
  • 浏览: 847839 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

将dhcpdump移植到android平台

 
阅读更多

首先,介绍下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
1
1
分享到:
评论

相关推荐

    将Cocos2dx从win32移植到android平台 不用cygwin

    本篇文章将详细讲解如何在不使用Cygwin的情况下,将一个基于Cocos2d-x的Win32项目成功地移植到Android平台。Cygwin是一个在Windows上模拟Linux环境的工具,但在某些情况下,我们可能希望避免它的使用,例如为了减少...

    SSH移植到android系统步骤.doc

    但是,Android系统并不具备SSH功能,这篇文章将讲述如何将OpenSSH移植到Android系统中。 Step 1: 获取OpenSSH源码 首先,我们需要获取OpenSSH的源码,因为Android SDK中并不包含OpenSSH源码。我们可以从GitHub上...

    caffe-android-lib, 将caffe移植到android平台.zip

    caffe-android-lib, 将caffe移植到android平台 Caffe-Android-Lib目标移植到android平台的端口 caffe支持Up-to-date caffe ( d91572d )仅 CPU不支持 hdf5插件生成推荐:使用 Dockergit clo

    ntfs-3g移植到android平台-有效可行

    然而,"ntfs-3g移植到android平台-有效可行"这一标题表明,通过特定的技术手段,我们可以将开源的NTFS驱动ntfs-3g移植到Android系统中,从而实现对NTFS格式存储设备的读写功能。下面将详细介绍这个过程以及相关的...

    将本地PC游戏轻松移植到Android的秘技-ch02

    ch02》和描述《将本地PC游戏轻松移植到Android的秘技, jni, ndk》揭示了本书第二章节将详细讨论的内容,旨在教导读者如何将本地PC上的游戏通过特定的技术手段移植到Android平台上。特别提及了JNI(Java Native ...

    将Android平台的RIL层移植到基于LINUX的通用平台的研究与实现.pdf

    【标题】:“将Android平台的RIL层移植到基于LINUX的通用平台的研究与实现” 【描述】:该研究探讨了如何将Android系统的Radio Interface Layer(RIL)移植到基于LINUX的通用平台,旨在为非Android环境提供3G网络...

    FFMPEG 移植到android

    将 FFmpeg 移植到 Android 平台,可以让 Android 应用程序具备处理多媒体文件的强大能力,比如播放视频、音频,进行格式转换等。在 Android 上移植 FFmpeg 需要对 C/C++ 语言、Android NDK(Native Development Kit...

    精通Android游戏开发(将本地PC游戏轻松移植到Android的秘技)

    本教程着重于教授开发者如何将原本开发在个人电脑(PC)上的游戏移植到Android平台。这是一个复杂的工程,因为它不仅需要对原游戏架构和内容有深入了解,还需要熟悉Android平台的开发环境和特性。 在本教程中,将会...

    J2ME游戏如何移植成android

    在本文中,我们将探讨如何将J2ME游戏移植到Android平台上。作为一名IT行业大师,我将详细地解释J2ME游戏移植到Android平台的技术要点。 首先, lets talk about the differences between J2ME and Android平台。...

    xbmc 移植到ANDROID 方法

    将XBMC移植到Android平台上需要进行一系列准备工作,包括设置Android开发环境、获取源代码以及编译等步骤。 #### 2. 安装并设置 Android 开发环境 为了在Android设备上运行XBMC,首先需要搭建Android开发环境,这...

    dropbear移植到android9.0系统

    总的来说,Dropbear在Android 9.0上的移植涉及到多个层面的知识,包括Android系统架构、编译工具链、Linux内核接口、权限管理以及SSH协议本身。这个过程既是对技术的考验,也是提升技能的好机会。

    Android系统移植与平台开发

    Android系统移植是将Android操作系统部署到不同的硬件平台上,使Android系统能够在非原生支持的硬件上运行。平台开发则侧重于如何在已移植的基础上进行应用、系统或硬件的定制与优化。 2. Android系统下载与编译...

    FFmpeg移植到android平台使用的.so包

    以上就是将FFmpeg移植到Android平台并使用.so包的关键步骤和知识点。这个过程中需要对Android的NDK开发、C/C++编程以及FFmpeg的API有深入理解,才能顺利完成整个流程。在实际开发中,还需要不断调试和优化,以确保在...

    行业文档-设计装置-将Flash游戏移植到Android平台上的方法.zip

    在IT行业中,将Flash游戏移植到Android平台上是一个重要的技术议题,因为这涉及到多个技术领域,如ActionScript编程、Android应用开发、游戏引擎适配等。本篇文档将深入探讨这一主题,帮助开发者理解和掌握相关知识...

    Xcode移植到android方法 地址

    本文将基于给定的文件信息,探讨Xcode移植到Android的方法,即如何在不同的开发环境中实现代码的共享与复用。 ### Xcode与Android Studio的比较 首先,我们来对比一下Xcode与Android Studio。Xcode主要面向Apple...

    boa移植到android平台

    为了拓宽Boa的应用场景,将其移植到Android平台成为一种可行的选择。 #### 二、移植准备工作 在开始移植工作之前,我们需要准备以下几项内容: 1. **Android NDK**:用于编译原生代码。 2. **Boa源码**:可以从官方...

    cocos2d-x win32项目移植到Android平台

    本资源详细记录如何把win32项目移植到Android平台上,图文并茂,是我自己移植时的心得体会,其中还有详细记录着移植时可能遇到的错误的解决方法

    Linux使用NDK编译libtiff库并移植到Android平台

    本篇将详细介绍如何在Linux环境下使用Android NDK(Native Development Kit)编译libtiff库,并将其移植到Android平台。 一、libtiff库介绍 libtiff是一个强大的库,它支持读取、写入和处理多种TIFF格式的图像。...

Global site tag (gtag.js) - Google Analytics