`
邢邢色色
  • 浏览: 229902 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

手把手教你用jpcap抓包

阅读更多

本文原创,转载请注明出处~

 

在工作中经常需要抓包进行分析,我们可以使用各种工具来抓包,比如常用的tcpdump和wireshark。但有时候我们想用程序来进行控制,比如把抓到的包存储到数据库中,以后可以进行查询等等。我在工作中用的是Java,那么就用它来做示范吧。

 

本教程在centos和ubuntu上测试通过。

 

1)安装libpcap库

先安装底层使用的库吧,我们用到了libpcap库,tcpdump也是用的这个库,所以先去http://www.tcpdump.org/#old-releases

下载源码进行编译安装,不需要用太新的库吧,因为jpcap挺老的。这里我选了1.1.1版本。

解压,configure,make,make install,完成了。

 

2)安装jpcap库

我们使用v0.01.16版本,下载为:

http://sourceforge.net/projects/jpcap/files/jpcap/v0.01.16/

我们下载的是源代码版本,虽然有rpm包提供,但却是32位版本的,我们的服务器是64位的,只能自己编译生成了。

 

解压后编译scripts/env_jpcap文件,配置编译过程中的环境变量,只需要改其中的两项:

# 你解压后的目录
export PROJECT_HOME=~/dev/sourceforge/jpcap
# 生成目录
export RELEASE_HOME=~/dev/releases
# 选填,指定你的JDK目录
#export JAVA_HOME=/usr/java/jdk1.3 ; export PATH=$JAVA_HOME/bin:$PATH

 

然后让配置生效

. ./scripts/env_jpcap

编译

make clean && make

哈哈,发现出错了:

g++ -Wall -O2 -I/usr/include/pcap -I/usr/local/jdk1.6.0_29/include -I/usr/local/jdk1.6.0_29/include/linux jpcap.c process.cpp -fPIC -shared -o libjpcap.so -lnsl /usr/lib/libpcap.a
g++: /usr/lib/libpcap.a: No such file or directory

 说是没有libpcap.a,我们刚才不是安装好了吗!!find一下发现原来在/usr/local/lib目录中。拷贝过去就好了:

sudo cp /usr/local/lib/libpcap.a /usr/lib

OK,继续。

 

恭喜,又报错了:

jpcap.c:678: error: lvalue required as left operand of assignment

因为这个版本的jpcap是2004年的,我们的机器的gcc版本是4.4.6,也许gcc的版本太新了吧。可以考虑安装多个版本的gcc,但这里直接把代码改改就好:

vi capture/jpcap.c

 

定位到678行,进行修改:

// for(;ifr < last; (char*)ifr += ifrSize) {
for(;ifr < last; ifr = (ifreq*)((char*)ifr + ifrSize)) {

 OK,继续。

 

没有报错,完成了,再执行:

make release

就可以在之前配置的RELEASE_HOME目录下发现编译好的文件了:

javadoc_net.sourceforge.jpcap-0.01.16.jar

net.sourceforge.jpcap-0.01.16.jar

 

解压后者,发现libjpcap.so也在里面,需要把这个库也安装到合适的地方,你可以把库放到下面代码打印的任意一个目录中:

System.out.println(System.getProperty("java.library.path"));

 

下面就开始写Java代码了,需要引入3个Jar包,分别是前面生成的net.sourceforge.jpcap-0.01.16.jar,还有之前下载的jpcap-0.01.16/thirdParty/jars目录下的包。

net.sourceforge.jpcap-0.01.16.jar中其实就包含了很多例子程序,如图所示:


 

例子就不写了,附上java doc文档地址:

http://jpcap.sourceforge.net/javadoc/index.html

 

使用过程需要注意2个地方:

1,必须使用root权限执行,因为要使网卡进入混杂模式必须要有root权限,不过不使用root会报这样的错误:

Exception in thread "main" net.sourceforge.jpcap.capture.CaptureDeviceNotFoundException: no suitable device found

 

2,如果你发现抓到的tcp的data的数据跟实际发送的数据少了一段,那么在代码中需要注意要这样使用:

Instead of pcap.open(device, true);
try pcap.open(device, 65535, true, 1000);

 原因参考:

http://stackoverflow.com/questions/17906635/get-full-tcp-packet-data-using-jpcap

  • 大小: 135 KB
0
0
分享到:
评论
1 楼 tss0823 2017-11-20  
感谢,解决困惑我的编译问题。

相关推荐

    Java jpcap抓包

    Java jpcap抓包是一种利用Java编程语言和jpcap库来实现网络数据包捕获的技术。jpcap是Java Packet Capture的缩写,是一个开源的网络协议分析库,允许开发者在Java应用程序中进行网络数据包的捕获和处理。在计算机...

    jpcap抓包程序

    这是一个基于jpcap简单的抓包程序,要搭建Java的运行环境

    JAVA抓包工具jpcap,包含32位和64位

    Java抓包工具jpcap是Java平台上的网络数据包捕获库,它允许开发者在Java应用程序中实现网络监控和分析功能。jpcap提供了一套API接口,使得开发者能够轻松地处理网络数据包,包括捕获、过滤、解析以及网络协议分析等...

    jpcap抓包java代码以及依赖

    标题中的“jpcap抓包java代码以及依赖”指出,这个压缩包包含了使用Java进行网络数据包捕获(抓包)所需的相关资源和代码。jpcap是一个Java库,允许开发者在Java应用程序中实现网络数据包捕获和分析功能。在IT领域,...

    java jpcap 抓包

    jpcap是使用java实现的抓包工具。该资源有详细的说明使用文档,

    JPCAP网络抓包

    本文将详细介绍JPCAP库的使用及其在网络抓包中的应用。 **1. JPCAP库介绍** JPCAP是由John Linn开发的一个Java库,它提供了类似于libpcap(用于C语言的网络数据包捕获库)的功能。JPCAP允许程序员在Java环境中对...

    Java抓包工具 jpcap WinPcap

    Java抓包工具jpcap与WinPcap是网络分析和数据包捕获的重要工具,尤其在软件开发、网络故障排查和安全分析等领域中扮演着重要角色。本文将深入探讨这两个工具的功能、安装过程以及如何利用它们进行网络数据包的抓取和...

    java抓包工具jpcap

    Java抓包工具jpcap是Java编程环境中用于网络封包捕获的一个库,它为开发者提供了在TCP/IP网络上进行数据包捕获和分析的能力。这个工具在Windows 8.1 x64操作系统下经过验证可以正常工作,但对其他操作系统(如...

    计算机网络课程设计(JPCAP发包与抓包)

    在这个项目中,我们将使用JPCAP这个Java库,它为开发人员提供了在网络层进行数据包捕获(抓包)和传输层构建及发送TCP数据包的功能。这个项目不仅有助于提升对计算机网络原理的理解,还能够锻炼编程技能,特别是网络...

    jpcap依赖包及代码

    总的来说,"jpcap依赖包及代码"是一个完整的解决方案,包含了一切你需要开始使用jpcap进行网络数据包捕获和分析的组件。有了这个,开发者可以编写自己的Java应用,进行网络监控、故障排查,甚至构建高级的网络安全...

    jpcap java抓包必需jar包

    jpcap并非直接实现数据链路层的控制,而是依赖于操作系统底层的抓包库,如Windows上的winpcap和Unix/Linux上的libpcap,通过这些库来获取网络数据包,然后提供给Java程序员一个统一的API。 **jpcap的关键特性** 1....

    使用Jpcap实现的java网络抓包程序,支持ipv6

    标题中的“使用Jpcap实现的java网络抓包程序,支持ipv6”表明这是一个Java编程项目,其核心功能是利用Jpcap库进行网络封包的捕获和分析,并且该程序具有处理IPv6协议的能力。在现代网络环境中,IPv6的普及逐渐增加,...

    Jpcap 网络抓包实验

    Jpcap库将这些底层功能包装成易于使用的Java API,使得开发者可以在Java程序中方便地进行网络抓包。 在Jpcap中,我们可以创建一个网络接口对象,然后使用该对象的startCapture()方法开始抓包。抓到的数据包可以通过...

    共享Jpcap工具包

    java抓包程序,使用jpcpa.jar包java的JPCAP.jar, 不过一直调用的都是winpcap(jpcap.dll)实现的许多接口。 压缩包包含 jpcap.jar和jpcap.dll 下载要积分了,本人也积分有限!见谅

    jPcap的ip抓包

    标题"jPcap的ip抓包"揭示了我们今天要讨论的主题是使用jPcap这个库来捕获和分析IP网络数据包。jPcap是一个Java库,它允许开发者在不同平台上进行网络数据包的捕获和发送工作。 描述中提到,JPCAP并不是直接处理数据...

    jpcap 比较完成抓包示例.rar

    总的来说,这个"jpcap比较完成抓包示例"项目展示了如何整合jpcap库、SSM框架和前端技术,实现一个完整的网络抓包应用。对于想要学习网络监控或者对此领域感兴趣的开发者来说,这是一个很好的起点,可以在此基础上...

    基于java的开发源码-网络抓包工具 jpcap.zip

    基于java的开发源码-网络抓包工具 jpcap.zip 基于java的开发源码-网络抓包工具 jpcap.zip 基于java的开发源码-网络抓包工具 jpcap.zip 基于java的开发源码-网络抓包工具 jpcap.zip 基于java的开发源码-网络抓包工具 ...

    网络抓包工具 jpcap

    **网络抓包工具 jpcap** 网络抓包是IT领域中一种重要的技术,它允许我们监控和分析网络通信,帮助开发者、网络安全专家以及系统管理员理解数据在网络中的流动情况。jpcap是Java平台上的一个开源网络抓包库,它提供...

    网络抓包工具Jpcap_Java.zip

    Jpcap 是捕获和发送网络包的 Java 库。Jpcap 是基于 libcap 和 winpcap 的,所以 Jpcap 可以运行在任意支持 libcap 或者 winpcap 的平台上(Linux ,Windows,FreeBSD 和 Mac OS X)。Jpcap 支持以下的集中数据包...

    win10 下的 64位 jpcap开发包 jpcap64位

    《深入解析Win10下64位Jpcap开发包》 Jpcap,全称为Java Packet Capture,是一个用于Java平台的网络数据包捕获和分析的库。它为开发者提供了一个强大的工具集,用于在应用程序中实现网络监控、数据分析和网络测试等...

Global site tag (gtag.js) - Google Analytics