1.准备工作

Jpcap是一个可以监控当前网络情况的中间件,弥补了java对网络层以下的控制,

可以达到抓包的效果。

Jpcap运行需要依赖winCap和Jpcap的dll动态库和Jpcap.jar包。

这个我贴出来两个exe文件,一 一安装后

http://note.youdao.com/noteshare?id=040315a1e04a6146d4f950017f52e83c&sub=FAF884B3EE0E4912AAFA05B56459F87B

http://note.youdao.com/noteshare?id=af8fa2323b41fa8164096cc6a04f85ad&sub=49EEC856E57241E8805A0348A273034B

jdk-->bin目录会多了一个Jpcap.dll

jre-->bin目录会多了一个Jpcap.dll

jre-->lib-->ext会多一个Jpcap的jar包

在eclipse中修改jre的环境

常用类

JpcapHandler :这个接口用来定义分析被捕获数据包的方法

ARPPacket :这个类描述了ARP/RARP包,继承了Packet类

DatalinkPacket :这个抽象类描述了数据链路层

EthernetPacket :这个类描述了以太帧包,继承DatalinkPacket类

ICMPPacket :这个类描述了ICMP包,继承了IPPacket类

IPAddress :这个类描述了IPv4和IPv6地址,其中也包含了将IP地址转换为域名的方法

IPPacket :这个类描述了IP包,继承了Packet类,支持IPv4和IPv6

IPv6Option :这个类描述了IPv6选项报头

Jpcap :用来捕获数据包

Jpcap.JpcapInfo :Jpcap的内部类, 它包含被捕获数据包的信息(在jpcap0.4修改部分BUG之后不再使用这个类)

JpcapSender :它用来发送一个数据包

JpcapWriter :它用来将一个被捕获的数据包保存到文件

Packet :这个类是所有被捕获的数据包的基类

TCPPacket :这个类描述TCP包,继承了IPPacket类

UDPPacket :这个类描述了UDP包,继承了IPPacket类

常用api

2.1 代码实现

import java.io.IOException;

import java.util.Scanner;

import jpcap.JpcapCaptor;

import jpcap.NetworkInterface;

import jpcap.NetworkInterfaceAddress;

import jpcap.PacketReceiver;

import jpcap.packet.Packet;

/**

* Jpcat实现抓包

* @date 2018年2月7日

*/

public class NetFetcher implements PacketReceiver{

@Override

public void receivePacket(Packet arg0) {

System.out.println(arg0);

}

public static void main(String[] args){

//获得网卡设备列表

NetworkInterface[] devices = JpcapCaptor.getDeviceList();

if(devices.length==0){

System.out.println("无网卡信息!");

return;

}

//输出网卡信息

for(int i=0;i

System.out.println("网卡"+i+"信息:"+devices[i].name);

for(NetworkInterfaceAddress address:devices[i].addresses){

System.out.print(address.address+" ");

}

System.out.println("\n");

}

Scanner scan = new Scanner(System.in);

System.out.println("请选择您要监听的网卡序号:");

int index = scan.nextInt();

//监听选中的网卡

try {

JpcapCaptor jpcapCaptor = JpcapCaptor.openDevice(devices[index], 2000, false, 20);

jpcapCaptor.loopPacket(-1, new NetFetcher());

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

java jpcap 抓包并分析_java利用Jpcap实现抓包相关推荐

  1. java jpcap 抓包并分析_用Jpcap赶做了一个极其简陋版的TCP抓包程序

    Jpcap是一个能够抓取与发送网络数据包的Java组件. 你可以使用Jpcap从一个网络接口获取数据包,然后在Java中对它们进行分析和显示.同样也可以通过一个网络接口发送任意数据包.Jpcap当前能 ...

  2. java 获取邮编_java利用爬虫技术抓取(省、市(区号\邮编)、县)数据

    /** * @param var 城市名称 * @returnstring数组.0表示邮编1表示区号 */ @SuppressWarnings("deprecation") pri ...

  3. java 写数据到pdf模板_java利用itext填写pdf模板并导出

    1.先用word做出界面 2.再转换成pdf格式 3.用Adobe Acrobat 打开你刚刚用word转换成的pdf 会出现如下界面 下一步 点击浏览,选择刚才你转换好的pdf 下一步 4.打开后它 ...

  4. java mysql 文本导入数据语句_Java利用MYSQL LOAD DATA LOCAL INFILE实现大批量导入数据到MySQL...

    Mysql load data的使用 数据库中,最常见的写入数据方式是通过SQL INSERT来写入,另外就是通过备份文件恢复数据库,这种备份文件在MySQL中是SQL脚本,实际上执行的还是在批量IN ...

  5. java命令依赖第三方jar原理_java命令执行带jar包依赖的文件执行不了

    import org.apache.commons.io.FilenameUtils; public class Test { public static void main(String[] arg ...

  6. java数组随机抽取分布均匀_java利用数组随机抽取幸运观众

    本文实例为大家分享了java利用数组随机抽取幸运观众的具体代码,供大家参考,具体内容如下 思想: 首先将所有观众姓名生成数组,然后获取数组元素的总数量,再在数组元素中随机抽取元素的下标,根据元素的下标 ...

  7. JAVA标准包不存在_JAVA中引入自建包时提示包不存在

    请各位帮帮忙,我在引入自建的一个包的时候遇到了个问题:有两个JAVA程序:SquareEquation.java(保存于E:\1000)-------------------------------- ...

  8. JAVA判断sheet有效行数_Java 利用POI 读取指定excel的真实行数

    Java 使用poi包 读excel文件时,获取指定sheet页中数据行数可以通过调用 sheet.getLastRowNum() ;但这种方法仅限于当前sheet页中没有带格式的空白行时.如果其中一 ...

  9. java 去除字符串中的英文_Java利用正则表达式去掉字符串中的英文

    利用正则表达式去掉字符串中的英文String str = "111,aaa,222,bbb"; Pattern p = Pattern.compile("[a-zA-z] ...

最新文章

  1. 算法 快速求一个整数的7倍
  2. Linux上新建用户及赋权操作
  3. JAVA二分查找-探讨思维与代码的一致性
  4. Hibernate视频学习笔记(3)常用映射标签及属性
  5. 写一个使两个整数进行交换的方法(不能使用临时变量) 【前端每日一题-27】...
  6. python爬取网易云音乐问题陈述_python 网易云音乐 评论爬取问题
  7. VC创建DLL动态链接库及其调用
  8. html网页商品销量滞后怎么做,iview 刷新滞后于html问题
  9. 电子垃圾行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  10. poj 2503 Babelfish
  11. java冒泡排序代码详解
  12. 2018第九届蓝桥杯国赛C组_java
  13. 基于Python的信用评分卡模型建立和分析,万字阐述,收藏
  14. 联合循环——16(电缆终端接地总结)
  15. 中国的量子计算机什么水平,被西方称为中国新“霸权”的量子计算机,除了波色采样还会什么?...
  16. 东华软件张涵诚:政府大数据应用的案例和数据价值释放的方法
  17. 2017江苏高职计算机分数线,2017—2019江苏高考招生投档分数线(体育高职专科院校).docx...
  18. MySQL5.7安装--二进制方式安装
  19. 《北京爱情故事》:四个女人的爱情
  20. Mybatis中模糊查询的各种写法

热门文章

  1. MPB:宁大张德民组-对虾养殖系统微生物组样品的采集与制备
  2. Mac如何安装并永久激活PyCharm以及IntelliJ IDEA
  3. R语言生成词云(wordcloud)实战
  4. R语言ggplot2可视化分面图(facet_wrap)、使用size参数自定义设置分面图标签栏(灰色标签栏)中的标签文本的字体大小
  5. pandas使用dropna函数删除dataframe中所有包含缺失值的数据行(drop rows which contain missing vlaues in dataframe)
  6. R语言ggplot2可视化时避免geom_bar对x轴进行排序实战:直接对因子变量进行提前排序后再进行可视化、使用scale_x_discrete函数限定因子顺序
  7. pandas使用append函数在dataframe上纵向合并数据实战:多个dataframe合并、合并series左右dataframe的一样、合并字典数据作为dataframe的行
  8. R语言生存分析COX回归分析实战:放疗是否会延长胰脏癌症患者的生存时间
  9. dropout是什么?为什么dropout管用?测试集上是否需要使用dropout?说明为什么神经网络中的dropout可以作为正则化?
  10. java连接Hbase数据库