jpcap教程.doc_第1页
jpcap教程.doc_第2页
jpcap教程.doc_第3页
jpcap教程.doc_第4页
jpcap教程.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

3获取网络接口设备网卡设备想要捕捉网络数据包,首先要得到你电脑了的网络接口设备,也就是所谓的网卡设备Jpcap包向我们提供了这一个类方法静态方法:JpcapCaptor.getDeviceList( ) ,从字面见就知道返回的是网络接口设备的列表,NetworkInterface类,网络接口类。其封装了相应网络设口信息,比如:网卡名,网卡描述,网卡所处的数据链路层的名称,描述等等。简单的应用代码如下:/* (#)GetDevices.java* 显示网络接口设备信息的Demo* author scholar_ii* version 1.00 2005/12/16*/import jpcap.*;public class GetDevices public GetDevices() public static void ShowNeworkInterfaceDevices() /获得网卡设备的实例列表 NetworkInterface devices = JpcapCaptor.getDeviceList(); /循环输出全部网卡设备对象相应的信息 for (int i = 0; i 1)/*去掉虚拟网卡的处理*/ index = 1; JpcapCaptor captor = JpcapCaptor.openDevice(devicesindex, 65535, false, 20); captor.loopPacket(-1, new Receiver(); class Receiver implements PacketReceiver /*实例receivePacket方法*/ public void receivePacket(Packet packet) /*进行简单的处理*/ System.out.println(packet); 参数2 类型 PacketRecevier 解释:(回调者)事件临听者 返回值:捕捉到的数据包的个数 功能:捉自定义个数的网络数据包。与processPacket()方法不同,该方法忽视超时,不支持工作在非阻塞模式。 注意:在这两个方法的第一个参数中,你可以设定其值为-1。这时你可以停的捕捉数据包,直到捕捉结束,或错误发生为止主要程序如下:publicclass ARPMsg implementsRunnable staticJpcapCaptorcaptor; staticNetworkInterfacedevices; staticBufferedReaderin=newBufferedReader(newInputStreamReader( System.in); staticinti=0; staticStringstr; staticIPPacketp; staticIPPacketip; staticbooleanbl=true; publicstaticvoidmain(Stringargs) System.out.println( . ARP.); nic(); try captor=JpcapCaptor.openDevice(devicesi,65535,false,2000);/ 创建一个与指定设备的连接并返回该连接 captor.setFilter(arp,true);/过滤得到需要的 ARP 包 catch(IOExceptione) System.out.println(e.getMessage(); Runnablerunnable=new ARPMsg(); Threadthread=newThread(runnable);/开启一个子线程监听 ARP 报文 thread.setName(thread1); thread.setPriority(6); thread.start(); Scanners=newScanner(System.in); /在 main 线程中 , ,输入 exit 用于停止监听 Stringinput=s.next(); if(input.equals(exit) System.exit(0);/normalexit publicvoidrun() /子线程thread1运行时调用的方法 while(bl) cessPacket(1,handler);/监听并捕获 ARP 包 publicstaticintnic() devices=JpcapCaptor.getDeviceList();/ 返回一个网络设备列表 for(inti=0;i + NIO_gen_eth: + ); for(NetworkInterfaceAddressa:devicesi.addresses) System.out.println(IPaddress:+a.address); System.out.print(ChoosetheNICyouwanttouse:); try str=in.readLine();/输入数字并选择网卡 catch(IOExceptione) System.out.println(e.getMessage(); i=Integer.parseInt(str); returni; privatestaticPacketReceiverhandler=newPacketReceiver() publicvoidreceivePacket(Packetpacket)/匿名类,每捕获一个包就调用此方法 System.out.println(=); if(Short.valueOf(ARPPacket.ARP_REQUEST).equals(ARPPacket)packet).opration) System.out.println(Thisisarprequestmessage); if(Short.valueOf(ARPPacket.ARP_REPLY).equals(ARPPacket)packet).operation) System.out.println(Thisisarpreplymessage); System.out.println(硬件类型 +(ARPPacket)packet).hardtype); System.out.println(操作类型 +(ARPPacket)packet).operation); System.out.println(源 MAC 地址 +(ARPPacket)packet).getSenderHardwareAddress(); System.out.println(源 IP 地址 +(ARPPacket)packet).getSenderProtocolAddress(); System.out.println(目标 MAC 地址 +(ARPPacket)packet).getTargetHardwareAddress(); System.out.println(目标 IP 地址 +(ARPPacket)packet).getTargetProtocolAddress(); System.out.println(=); ; 本程序采用多线程的实现对ARP 数据包进行监听并捕获,首先 JpcapCaptor.getDeviceList() 获得可用的设备,并输出以供用户选择,当用户选择并输入可用的设备号后, JpcapCaptor.openDevice() 创建一个与所选设备的连接, false 参数表示启用混杂模式, captor.setFilter(arp,true) 过滤得到 ARP 数据包,这时开启一个叫做 JARP 的子线程,运行 cessPacket(1,handler) 方法用于捕获 ARP 数据包,一旦 ARP 数据包出现,交由 PacketReceiver 接口的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论