package test.jpcap;
import net.sourceforge.jpcap.capture.*;
import net.sourceforge.jpcap.net.*;
import java.util.*;
import java.io.*;
public class CapturePacketTest implements RawPacketListener,PacketListener{
public static FileOutputStream fos = null;
public static void main(String[] args)throws Exception{
// Print copyright info
System.out.println();
System.out.println("Capture Ethernet packet Ver 0.01, author yanqlv(maomao).");
System.out.println("Copyright (c) 2005 yanqlv of Luoyang Normal College, all Rights Reserved.");
System.out.println();
// Determin which capture device to use
PacketCapture pcap = new PacketCapture();
String defaultDevice = pcap.findDevice();
StringTokenizer st1 = new StringTokenizer(defaultDevice,"\n");
String defaultDeviceStr = st1.nextToken();
int default_num = 1;
String[] capDevices = pcap.lookupDevices();
int capdevice_num = capDevices.length;
System.out.println("There "+ (capdevice_num>1?"are":"is") + " "+ capdevice_num +" device"+(capdevice_num>1?"s":"")+" found!");
System.out.println("*****************************************************************************");
for (int i=0; i<capdevice_num; i++){
//System.out.println("*****capture device["+ i +"]="+capDevices[i]);
StringTokenizer st = new StringTokenizer(capDevices[i],"\n");
String capStr = st.nextToken();
String capDesc = st.nextToken();
if( defaultDeviceStr.equals(capStr) ) default_num = i+1;
System.out.println( "[" + (i+1) + "] " + capStr + "\n(" + capDesc + ")");
}
System.out.println("*****************************************************************************");
System.out.println("(default to use "+ default_num +")");
int selectn = 1;
if(capdevice_num > 1 ){
System.out.print("Please select [");
for(int i=0; i<capdevice_num;i++) {
System.out.print(i+1);
if(i!=capdevice_num-1) System.out.print(" or ");
}
System.out.print("]:");
String readstr = new DataInputStream(System.in).readLine();
selectn = Integer.parseInt( new String( readstr ) );
}
//System.out.println("selectn="+selectn);
// Want to save capture result to file
fos = new FileOutputStream("capture.txt");
// Begin capture
pcap.open( (new StringTokenizer(capDevices[selectn-1],"\n")).nextToken(),true );
CapturePacketTest t1= new CapturePacketTest();
pcap.addRawPacketListener(t1);
pcap.addPacketListener(t1);
pcap.capture(-1);
}
public void rawPacketArrived(RawPacket rawPacket){
//System.out.println("rawPacket="+rawPacket);
}
public void packetArrived(Packet packet) {
try{
if( packet instanceof TCPPacket){
TCPPacket tcppacket = ((TCPPacket)packet);
//System.out.println("Packet="+packet);
//System.out.println("window size="+tcppacket.getWindowSize());
//System.out.println("Packet="+((TCPPacket)packet).toColoredVerboseString(true));
//if( tcppacket.getDestinationPort()==110 || tcppacket.getSourcePort() ==110) // pop3
if( tcppacket.getDestinationPort()==80 || tcppacket.getSourcePort() ==80){ // http
String captureStr = new String( tcppacket.getTCPData() );
System.out.println( ">>"+ captureStr);
fos.write(tcppacket.getTCPData());
fos.write(new String("**********************************************************\n").getBytes());
//fos.close();
//CaptureVec.addElement(captureStr);
}
}
}catch(Exception ioe){
System.out.println("Exception ocurred:"+ioe);
}
}
}
分享到:
相关推荐
《Jpcap:Java网络封包捕获库的深度解析》 Jpcap,全称为Java Packet Capture,是一个用于网络封包分析的开源库,专为Java编程语言设计。其核心功能是允许开发者在Java环境中捕获、过滤、分析以及回放网络数据包。...
标题 "64位jpcap.jar及对应jpcap.dll下载" 暗示了这是一个针对64位操作系统的Java库,主要用于网络数据包捕获和分析。jpcap是一个开源项目,它提供了Java接口来处理网络接口卡(NIC)的数据包捕获,类似于著名的...
《深入解析Jpcap库:基于jpcap-1.0.jar的网络数据包捕获与分析》 在计算机网络领域,数据包捕获和分析是至关重要的环节,它可以帮助我们深入了解网络通信的过程,排查故障,甚至进行网络安全研究。本文将详细探讨...
**Jpcap.dll和jpcap.jar是Java网络包捕获库Jpcap的重要组成部分**。Jpcap是一个开源的Java库,它为Java程序员提供了网络数据包的捕获和分析功能,类似于知名的libpcap(在Unix系统上)和WinPcap(在Windows系统上)...
《Jpcap:Java平台上的数据包捕获与分析库》 Jpcap是一个专为Java平台设计的数据包捕获和分析库,它允许开发者在Java应用程序中实现网络监控和数据包处理功能。这个库的核心组件包括两个主要部分:`jpcap.jar`和`...
《Java网络通信与jpcap库详解》 在IT领域,网络通信是不可或缺的一部分,而Java作为一门跨平台的编程语言,提供了丰富的网络编程接口。本文将深入探讨使用Java进行网络通讯报文监听的关键技术——jpcap库,以及如何...
**Jpcap使用文档及jpcap.jar** Jpcap是一个强大的Java库,它为网络数据包捕获和分析提供了接口。这个库是为那些希望在Java环境中进行网络监控、数据分析或者网络安全研究的开发者设计的。Jpcap的全称是Java Packet ...
《jpcap.jar和jpcap.dll:Java网络封包捕获库的解析与应用》 在计算机网络中,封包捕获(Packet Capture)是一项关键的技术,它允许开发者或网络管理员监控网络流量,分析数据传输,排查网络问题。本文将深入探讨...
`Jpcap` 是一个用Java编写的库,专门用于捕获、分析和过滤网络数据包。本篇文章将详细探讨`Jpcap`库及其在Java中的应用,特别是如何实现数据链路层的包过滤。 首先,我们要理解`Jpcap`是什么。`Jpcap`是Java Packet...
《jpcap.jar与jpcap.dll:网络数据包捕获与分析的利器》 在IT行业中,网络数据包的捕获与分析是一项至关重要的任务,对于网络安全、故障排查、性能优化等领域都有着广泛的应用。jpcap.jar和jpcap.dll就是这样的工具...
Java抓包工具jpcap与WinPcap是网络分析和数据包捕获的重要工具,尤其在软件开发、网络故障排查和安全分析等领域中扮演着重要角色。本文将深入探讨这两个工具的功能、安装过程以及如何利用它们进行网络数据包的抓取和...
与标准的libpcap库(主要用于C语言环境)相比,jpcap为Java环境提供了类似的接口,但同时也进行了额外的封装,使得Java开发者能更便捷地使用这些功能。 二、net.sourceforge.jpcap.jar的优势 ...
《深入理解64位jpcap.dl与jpcap.jar在抓包技术中的应用》 在信息技术领域,网络数据的捕获与分析是至关重要的一个环节,这涉及到网络安全、性能监控、故障排查等多个方面。jpcap作为Java平台上的一个网络包捕获库,...
JAVA数据链路层 所需 JPCAP API
**Jpcap安装包及详细安装说明文档** **一、Jpcap简介** Jpcap是Java平台上的一个网络封包捕获库,它允许开发者在Java程序中进行网络数据包的捕获、分析和发送。Jpcap提供了一套API,能够方便地访问网络接口,读取...
Java jpcap抓包是一种利用Java编程语言和jpcap库来实现网络数据包捕获的技术。jpcap是Java Packet Capture的缩写,是一个开源的网络协议分析库,允许开发者在Java应用程序中进行网络数据包的捕获和处理。在计算机...
《全面解析jpcap.dll与jpcap.jar:配置与测试实战》 在信息技术领域,网络数据包捕获是分析网络行为、诊断问题和开发网络安全工具的重要环节。本文将深入探讨"jpcap.dll"与"jpcap.jar"这两个核心组件,以及如何正确...
标题中的"jpcap.jar jpcap.dll 32 64"指的是Jpcap库的相关文件,包括Java的jar包和Windows平台下的动态链接库(dll)文件,分别适用于32位和64位操作系统。Jpcap是一个用于网络数据包捕获和分析的开源库,它为Java...
标题中的"mgodave-Jpcap.zip"是一个压缩包文件,包含了与Jpcap相关的资源,Jpcap是一个Java包捕获库,主要用于在Linux环境下进行网络数据包的捕获和分析。描述中提到,这个压缩包可以帮助用户在Linux系统上生成...
**安装Jpcap详解** Jpcap是一款强大的网络数据包捕获库,它为Java开发者提供了接口,使得在Java环境中捕获和分析网络流量成为可能。这篇文章将详细讲解如何在Windows环境下,特别是在Win7专业版上,安装并配置Jpcap...