Java android使用pcap库
我有一个关于android应用的一般性问题,我需要在我的android应用中使用一些pcap功能。因为java在原始数据包注入和低层编程方面没有提供可能性(据我所知,如果我错了,请纠正我),所以我正在寻找替代方案。到目前为止,我发现了以下几点:Java android使用pcap库,java,android,libpcap,Java,Android,Libpcap,我有一个关于android应用的一般性问题,我需要在我的android应用中使用一些pcap功能。因为java在原始数据包注入和低层编程方面没有提供可能性(据我所知,如果我错了,请纠正我),所以我正在寻找替代方案。到目前为止,我发现了以下几点: 安卓NDK JNETPCAP 有什么建议我应该使用哪一个,或者有人有其他建议吗?JNI解决方案 你需要将调用和逻辑从LBPCAP中的C或C++中打包出来,并通过它公开底层函数,这样你的应用程序就可以用java调用本地代码。 关于JNI的文档在互联网上
- 安卓NDK
- JNETPCAP
有什么建议我应该使用哪一个,或者有人有其他建议吗?JNI解决方案 <>你需要将调用和逻辑从LBPCAP中的C或C++中打包出来,并通过它公开底层函数,这样你的应用程序就可以用java调用本地代码。 关于
JNI
的文档在互联网上非常完整,有很多关于这个主题的教程,例如
如果您想在JNI中轻松包装本机代码,可以使用Swig
,它允许您根据C/C++本机头自动生成JNI代码
获得的JNI代码应该使用AndroidNDK作为动态库(.so)进行编译。此库将放置在应用程序包的libs/
下。然后,您可以调用System.loadLibrary(path\u to\u You\u dynamic\u library)
来加载库中包含的所有符号并在Java中使用它们
使用第三方库
如果您担心在弄清楚如何使用JNI时会遇到麻烦,那么可以看看这个库,它为您做了大量的工作,并提供了一个API来操作Java中的原始套接字
您需要将调用和逻辑从LbpCAP中的C或C++中打包出来,并通过JNI(java本机接口)公开底层函数,这样您的应用程序就可以java调用本地代码。
或者你需要一个已经完成了的库,比如,呃,嗯
在Android或任何其他使用Linux内核的操作系统上进行数据包捕获的任何尝试都可能存在一个问题,即默认情况下,libpcap(
pfu-packet
sockets)使用的底层内核机制需要根权限。如果有办法以root用户身份运行您的代码,或者给它CAP\u NET\u RAW
和可能的CAP\u NET\u ADMIN
权限,那么它就有可能工作。您在非root用户手机上试过吗?我需要网络嗅探功能的非根安卓手机。