收藏 分享(赏)

Jpcap_使用指南.doc

上传人:精品资料 文档编号:8704672 上传时间:2019-07-08 格式:DOC 页数:5 大小:300.50KB
下载 相关 举报
Jpcap_使用指南.doc_第1页
第1页 / 共5页
Jpcap_使用指南.doc_第2页
第2页 / 共5页
Jpcap_使用指南.doc_第3页
第3页 / 共5页
Jpcap_使用指南.doc_第4页
第4页 / 共5页
Jpcap_使用指南.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、Jpcap 使用指南Keita Fujii原文出自:http:/netresearch.ics.uci.edu/kfujii/jpcap/doc/tutorial/index.html引言本文描述了如何使用 Jpcap 开发应用软件。不仅解释了在 Jpcap 中定义的功能以及类,而且也通过一些程序代码实例对如何使用 Jpcap 来设计程序进行了全面的阐述。最新的版本可以在 http:/netresearch.ics.uci.edu/kfujii/jpcap/doc/tutorial/index.html 找到。Jpcap 简介Jpcap 是源自于 Java 应用的一个开源类库,主要用于捕获、发

2、送网络数据包。它提供以下功能: 捕获未加工的原始数据包。 保存捕获到的数据包到本地文件,从本地文件读出先前捕获的数据包。 自动分辨数据包的类型并产生相应的 Java 类(如:Ethenet、IPv4、IPv6、ARP/RARP、TCP、UDP 和 ICMP 包) 。 根据用户在程序代码中指定的过滤规则过滤数据包。 向网络发送各种数型的数据包利用 Jpcap 包能够开发以下几种类型的应用程序: 网络以及协议的分析器 网络监听器 网络流量记录器 网络流量发生器 用户级的网桥、路由 网络入侵检测系统 网络扫描器 网络安全工具箱Jpcap 捕获、发送数据包是独立于主机协议(如:TCP/IP)的,这也就

3、意味着 Jpcap 不能阻塞、过滤或操纵由宿主机上其他程序产生的网路流量。因此它不支持诸如:流量调节器、QoS schedulers 以及个人防火墙这一类应用。Jpcap 使用指南1. 获取网络接口列表要想从网络中捕获数据包,第一件必须要做的事就是获取本机的网络接口列表。Jpcap提供了方法 JpcapCaptor.getDeviceList()完成这个任务,该方法返回一组 NetworkInterface 对象。NetworkInterface 接口对象包含了对应网络接口的一些信息,例如:名称、描述、IP 以及 MAC 地址以及数据链路层名称和描述。例一:获取网络接口列表以及网络接口基本信息

4、2. 打开网络接口一旦有了网络接口列表就可以从选定用于捕获数据包的网络接口,可以使用方法JpcapCaptor.openDevice()来打开网络接口。例二:打开网络接口调用 JpcapCaptor.openDevice()方法必须指定下列参数:名称 目的NetworkInterderface 要打开的网络接口。intrfaceint snaplen 一次捕获数据包的最大 byte 数。boolean prommics 是否采用混乱模式混乱模式中,可以捕获所有数据包,即便源 MAC 或目的 MAC地址与打开的网络接口的 MAC 地址不相同。而非混乱模式中只能捕获由宿主机发送和接收的数据包。in

5、t to_ms 捕获的数据包的超时设置(数量级为毫秒) 。3. 从网络接口捕获数据包一旦获得了 JpcapCaptor 实例就可以用来捕获来自网络接口的数据包。使用JpcapCaptor 实例来捕获数据包主要有两种方法:回调(callback)以及逐个捕获(one-by-one) 。回调方法实现的细节:首先定义一个实现 PacketReceiver 接口的类。PacketReceiver 接口中定义了receivePacket()方法,只需实现 receivePacket()这个方法。例三:实现 receivePacket()方法然后可以使用回调的方法调用 JpcapCaptor.proces

6、sPacket()或 JpcapCaptor.loopPacket()方法开始数据包的捕获。processPacket() 或 loopPacket()方法可以指定捕获的数据包的数量。 -1表示无限地捕获数据包。例四:使用 processPacket()捕获数据包两种回调方法:processPacket() 和 loopPacket()非常相似。通常建议使用 processPacket(),因为它支持超时以及非阻塞模式,而 loopPacket()并不支持。逐个捕获使用回调方法稍微有点复杂,因为并不知道 Jpcap 什么时候调用回调方法。如果不使用回调方法,可以调用 JpcapCaptor.g

7、etPacket()方法来捕获数据包。getPacket()只是简单返回一个捕获的数据包,可以多次使用 getPacket()方法捕获连续的数据包。例五:逐个捕获数据包4. 设置捕获过滤器在 Jpcap 中可以设置过滤器使得 Jpcap 不捕获不需要的数据包。例如:如果仅仅只需捕获 TCP/IPv4 数据包,就可以设置过滤器,其方法如下例所示:例六:设置过滤器过滤器表达式“ip and tcp”表示“只保留 IPv4 并且 TCP 数据包,并将其交付给应用” 。过滤器的设置可以减少所需要处理的数据包并且提高应用的性能。5. 将捕获的数据包存挡可以将捕获的数据包写入一个二进制文件,事后使用 Jp

8、cap 或支持 tcpdump 格式文件的其它应用程序进行查询。存储捕获的数据包首先需要使用 JpcapWriter.openDumpFile()打开一个文件,参数分别是用来捕获数据包的一个 JpcapCaptor 实例以及 String 文件名。例七:打开一个用于存储数据包的文件一旦通过 openDumpFile()方法获得一个 JpcapWriter 的实例,就可以使用JpcapWriter.writePacket()存储捕获的数据包。将所有要存储的数据都存储之后,必须使用JpcapWriter.close()方法关闭打开的文件。例八:存储数据包6. 读入文件中的数据包在 Jpcap 中,

9、可以使用 JpcapCaptor.openFile()方法打开一个由 JpcapWriter 存储的文件,并从中读入数据包。类似于 JpcapCaptor.openDevice()方法, JpcapCaptor.openFile()方法将返回一个 JpcapCaptor 类的实例,因此可以使用“从网络接口捕获数据包”中描述的方式来从文件中读取数据包。7. 通过网络接口发送数据包发送一个数据包首先需要调用 JacapSender.openDevice()或JacapSender.getJpcapSenderInstance()方法。一旦获得一个 JpcapSender 实例,就可以将 Packet 类实例传递给JpcapSender.sendPacket()方法。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报