导航:首页 > 文件目录 > java筛选pcap文件内容

java筛选pcap文件内容

发布时间:2023-08-25 05:24:53

网络嗅探器的设计与实现 全代码 最简单的就行 最好用java 可以用的加分

主要原理是利用网卡的混杂模式,和以太网自身的特点进行的。
java写的话用 JPACAP

Jpcap是一个能够抓取与发送网络数据包的Java组件。可以使用Jpcap从一个网络接口获取数据包,然后在Java中对它们进行分析和显示。同样也可以通过一个网络接口发送任意数据包。Jpcap当前能够 捕获以太网,IPv4,IPv6,ARP/RARP,TCP,UDP和ICMPv4数据包。
Jpcap实际上并非一个真正去实现对数据链路层的控制,而是一个中间件,Jpcap调用wincap/libcap,而给Java语言提供一个公共的接口,从而实现了平台无关性。在官方网站上声明,Jpcap支持FreeBSD3.x,Linux RedHat6.1, Fedora Core4,Solaris,and Microsoft Windows 2000/XP等系统
Jpcap的整个结构大体上跟wincap/libpcap是很相像的,例如NetworkInterface类对应wincap的 typedef struct_ADAPTER ADAPTER,getDeviceList()对应pcap_findalldevs()等等。
Jpcap主要的类有如下几个:
1.NetworkInterface
该类的每一个实例代表一个网络设备,一般就是网卡。这个类只有一些数据成员,除了继承自java.lang.Object的基本方法以外,没有定义其它方法。
2.JpcapCaptor
该类提供了一系列静态方法实现一些基本的功能。该类一个实例代表建立了一个与指定设备的链接,可以通过该类的实例来控制设备,例如设定网卡模式、设定过滤关键字等等。
3.JpcapSender
该类专门用于控制数据包的发送。
4.Packet
这个是所有其它数据包类的父类。Jpcap所支持的数据包有:
ARPPacket、DatalinkPacket、EthernetPacket、ICMPPacket、IPPacket、TCPPacket、UDPPacket。

Ⅱ SplitCap的使用

来源:http://www.netresec.com/?page=SplitCap

SplitCap是免费的开源pcap文件分割器。SplitCap根据TCP和UDP会话将一个大型pcap文件拆分为多个文件,每个会话一个pcap文件。SplitCap还可以用于将pcap文件拆分为每个主机对的pcap文件,而不是会话。

SplitCap最好的特点之一就是它的速度非常快!

SplitCap中的TCP和UDP会话概念被定义为双向流,即所有具有相同5-touple(源主机、目标主机、源端口、目标端口、传输协议)的帧/数据包,不管包方向是同一会话的一部分。

SplitCap是使用NET framework 2.0用c#编写的。在运行SplitCap之前,请确保安装了它。大多数版本差档的MS Windows默认设置NET framework 2.0框架。

SplitCap是由Erik Hjelmvik提供的统计协议识别研究项目的一部分,该项目由瑞典互联网基础设施基金会(the Swedish Internet Infrastructure Foundation)提供。

SplitCap可以从版本1.5中使用,以便有效地过滤基于一个或多个IP地址或udp端口号的大型PCAP文件。虚指乱简单地使用“-s nosplit”选项和一个或多个“-端口”或“-ip”开关来指定从大型pcap文件中保留哪些流量。SplitCap执行这种类型的过滤的速度要快得多,而且与tshark相比,它的内存使用更少。

警告:当使用“- yl7”SplitCap提取应用层数据(L7)时,不执行任何适当的TCP会话重新组装。逗仔这意味着TCP重新传输和重叠部分将导致相同的数据写入两次。无序的TCP包也会导致应用程序层数据以无序的顺序存储。

可以进行适当的TCP会话重新组装的应用程序是NetworkMiner和Wireshark。

在我们的博客文章“拆分或过滤您的PCAP文件与SplitCap”中,您可以阅读更多关于如何使用SplitCap。

使用GUI应用程序分割大型pcap。

是否需要根据流/会话筛选大型pcap文件?那么请看看我们的CapLoader工具吧。CapLoader可以有效地提取来自大型pcap文件的单个或多个流的完整内容数据。请访问我们的CapLoader页面获取更多信息:

https://www.netresec.com/?page=CapLoader

SplitCap中流保存的信息:

在一个流提取文件中包含了双向通信中的所有流数据信息,以上是访问某网站时的双向流信息.

以下是用wireshark展看的截获的流数据信息:

Ⅲ java怎么解析Wireshark抓包文件

注意:

  1. 如果链接另一个Web站点时,客户端将再次对下一个站点进行DNS查询(156、157帧),TCP三次握手(158、159、160帧)。

  2. 31帧是客户端请求网络,通过DNS服务器解析IP地址的过程。标识为“A”记录。

  3. 32帧是DNS服务器回应客户端请求的过程。标识为response。

Ⅳ java如何编程实现,获取固定IP发来所有的数据包

额。。。初看到你的问题的时候吓了一跳。还以为是用java实现网络嗅探呢。
你问的是socket编程?
那么socket 均分为两个,
一部分是服务端,
一部分是客户端,
服务端一直开启着监听,
现在你的情况和平时不太一样的是,平时,是服务端的ip不变化,而客户端的变化。而是客户端给服务端进行发送。
你的情况是相反。客户端经常变动ip或者端口,而要求服务端发送。
其实转换一下思路就好了。
有点类似于现在网页在线聊天工具里的“长连接”思想。
你的那个固定ip服务器,可以完全不管,你是什么端口。因为,如果你的电脑准备好接受数据了。那么你就向服务端发起请求。而服务端将结果发送给你。就是说,不是说服务器一直给你发送,而是,你这个客户端只要准备好接受数据,就向服务器发送请求。这样,不是没有问题了么。。

如果还按你那个思路就是,你的电脑,需要实现网络嗅探的部分功能。但是

Java是网络层以上的。
你通过Java的Socket得到的数据包嗅探不出什么敏感的东东了。
所以Java不适合做网络嗅探。

不过还好,现在有了叫jpcap的工具。你可以搜一下,
下面是一个简单的实现,里面获得了来源的ip和端口 你可以加一个判断,如果来源ip是固定的ip的话,那么,你可以获取对应的数据包

本程序用eclipse编辑在J2SDK6.0+WinPcap 3.1+Jpcap 0.5下编译运行

/*******************
* JpcapTip.java
*/
package m;

import jpcap.PacketReceiver;
import jpcap.JpcapCaptor;
import jpcap.packet.*;
import jpcap.NetworkInterface;
import jpcap.NetworkInterfaceAddress;
//import java.net.InetAddress;
//import java.net.UnknownHostException;

public class JpcapTip implements PacketReceiver {

public void receivePacket(Packet packet) {
System.out.println("********************************************");
/*IP数据报报文头*/
byte[] l=packet.header;
/*
for (int t=0;t<21;t++){
System.out.print(l[t]+" *** ");
}
*/
String str="";
System.out.print("报文头 : ");
for (int i=0;i<l.length;i++) {
//str=str+l;
int m=0;
m=l[i];
m=m<<24;
m=m>>>24;
str=str+Integer.toHexString(m);
//System.out.print(" *** "+l[i]);
}
System.out.println(str);
int d=l.length;
System.out.println("首部长度 :"+(d*8)+"bit");

/*分析源IP地址和目的IP地址*/
/*分析协议类型*/
/**
if(packet.getClass().equals(IPPacket.class)) {
IPPacket ipPacket=(IPPacket)packet;
byte[] iph=ipPacket.option;
String iphstr=new String(iph);
System.out.println(iphstr);
}
*/
if(packet.getClass().equals(ARPPacket.class))
{
System.out.println("协议类型 :ARP协议");
try {
ARPPacket arpPacket = (ARPPacket)packet;
System.out.println("源网卡MAC地址为 :"+arpPacket.getSenderHardwareAddress());
System.out.println("源IP地址为 :"+arpPacket.getSenderProtocolAddress());
System.out.println("目的网卡MAC地址为 :"+arpPacket.getTargetHardwareAddress());
System.out.println("目的IP地址为 :"+arpPacket.getTargetProtocolAddress());

} catch( Exception e ) {
e.printStackTrace();
}
}
else
if(packet.getClass().equals(UDPPacket.class))
{
System.out.println("协议类型 :UDP协议");
try {
UDPPacket udpPacket = (UDPPacket)packet;
System.out.println("源IP地址为 :"+udpPacket.src_ip);
int tport = udpPacket.src_port;
System.out.println("源端口为:"+tport);
System.out.println("目的IP地址为 :"+udpPacket.dst_ip);
int lport = udpPacket.dst_port;
System.out.println("目的端口为:"+lport);
} catch( Exception e ) {
e.printStackTrace();
}
}
else
if(packet.getClass().equals(TCPPacket.class)) {
System.out.println("协议类型 :TCP协议");
try {
TCPPacket tcpPacket = (TCPPacket)packet;
int tport = tcpPacket.src_port;
System.out.println("源IP地址为 :"+tcpPacket.src_ip);
System.out.println("源端口为:"+tport);
System.out.println("目的IP地址为 :"+tcpPacket.dst_ip);
int lport = tcpPacket.dst_port;
System.out.println("目的端口为:"+lport);
} catch( Exception e ) {
e.printStackTrace();
}
}
else
if(packet.getClass().equals(ICMPPacket.class))
System.out.println("协议类型 :ICMP协议");
else
System.out.println("协议类型 :GGP、EGP、JGP协议或OSPF协议或ISO的第4类运输协议TP4");

/*IP数据报文数据*/
byte[] k=packet.data;
String str1="";
System.out.print("数据 : ");
for(int i=0;i<k.length;i++) {
//int m=0;
//m=k[i];
//m=m<<24;
//m=m>>>24;
//str1=str+Integer.toHexString(m);
str1 = new String(k);
//str1=str1+k[i];
//System.out.print(" *** "+k[i]);
}
System.out.println(str1);
System.out.println("数据报类型 : "+packet.getClass());

System.out.println("********************************************");
}

public static void main(String[] args) throws Exception{
// TODO 自动生成方法存根

NetworkInterface[] devices = JpcapCaptor.getDeviceList(); //.getDeviceList();.
//for (int i =0; i<devices.length;i++) {
int a=0;
//try {
/*本地网络信息*/
byte[] b=devices[1].mac_address; //网卡物理地址
//}
//catch() {}
System.out.print("网卡MAC : 00");
for (int j=0;j<b.length;j++){
//a=a<<8;
a=b[j];
a=a<<24;
a=a>>>24;
System.out.print(Integer.toHexString(a));
}
System.out.println();
NetworkInterfaceAddress[] k=devices[1].addresses;

//System.out.println("网卡MAC : "+Integer.toHexString(a));
for(int n=0;n<k.length;n++) {
System.out.println("本机IP地址 : "+k[n].address); //本机IP地址
System.out.println("子网掩码 : "+k[n].subnet); //子网掩码
}
System.out.println("网络连接类型 : "+devices[1].datalink_description);
//}
NetworkInterface deviceName = devices[1];
/*将网卡设为混杂模式下用网络设备deviceName*/
JpcapCaptor jpcap =JpcapCaptor.openDevice(deviceName, 2000, false, 1); //openDevice(deviceName,1028,false,1);
jpcap.loopPacket(-1,new JpcapTip());
}

}

加油~~

阅读全文

与java筛选pcap文件内容相关的资料

热点内容
js跳到页面某地 浏览:550
jsp展示clob字段 浏览:779
nyx在网络上是什么意思 浏览:145
乐播农业app是什么 浏览:530
编程框架如何开发 浏览:136
金庸群侠传3修改代码 浏览:712
检察院的文件类别有哪些 浏览:793
怎么把九游残留数据删除 浏览:828
有什么女生主动聊天的app 浏览:436
有哪些可以督促自己的app 浏览:244
用USB传输视频文件夹显示为空 浏览:710
恢复文件软件免费版手机 浏览:648
lg怎么隐藏文件 浏览:836
苹果免费读书app推荐 浏览:497
刘骏微信 浏览:113
书旗旧版本80 浏览:467
教编程考什么证 浏览:990
下载编程猫后哪里有客服 浏览:13
如何编辑歌曲文件格式 浏览:638
cf无限领取cdk工具 浏览:350

友情链接