Jnetpcap 官方样例 (7)- 遍历pcap并输出数据包header信息
来源:互联网 发布:c语言字符串 编辑:程序博客网 时间:2024/06/05 08:00
这个例子打开一个捕获包的文件作为源,遍历所有数据包。这个例子同时演示了如何创建一个包含了关联数据包和头部数据的 PcaPacket 对象。libpcap提供的header和data都存储再libpcap私有的内存缓存中,每次迭代都会被重写。
public static void main(String[] args) { final String FILE_NAME = "tests/test-l2tp.pcap"; StringBuilder errbuf = new StringBuilder(); // For any error msgs /*************************************************************************** * 打开文件 **************************************************************************/ Pcap pcap = Pcap.openOffline(FILE_NAME, errbuf); if (pcap == null) { System.err.printf("Error while opening file for capture: " + errbuf.toString()); return; } /*************************************************************************** *创建一些再loop中会使用和重用的对象 **************************************************************************/ Ip4 ip = new Ip4(); Ethernet eth = new Ethernet(); PcapHeader hdr = new PcapHeader(JMemory.POINTER); JBuffer buf = new JBuffer(JMemory.POINTER); /*************************************************************************** * 我们必须将pcap’s data-link-type 映射到 jnetPcap‘s 协议id,scanner需要这个id数据用来判断packet的第一个header是什么 **************************************************************************/ int id = JRegistry.mapDLTToId(pcap.datalink()); // JRegistry 是协议的注册表,包括它们的类,运行时id,和相关的绑定,这个全局的注册表包括 绑定表,header scanner表和每个header的数字化id表。同时也提供一些查找和转化功能,比如吧header class 映射为 数字化id /*************************************************************************** * 我们同步header 和 buffer 不是copy的,而是如同指针的 **************************************************************************/ while (pcap.nextEx(hdr, buf) == Pcap.NEXT_EX_OK) { /************************************************************************* * 我们吧header和buffer复制(指向)到新的packet对象中 ************************************************************************/ PcapPacket packet = new PcapPacket(hdr, buf); /************************************************************************* * 扫描packet ************************************************************************/ packet.scan(id); /* * 使用 格式化工具吧源数据变为容易看懂的数据 */ if (packet.hasHeader(eth)) { // 如果packet有ether头部 String str = FormatUtils.mac(eth.source()); System.out.printf("#%d: eth.src=%s\n", packet.getFrameNumber(), str); } if (packet.hasHeader(ip)) { // 如果packet有ip头部 String str = FormatUtils.ip(ip.source()); System.out.printf("#%d: ip.src=%s\n", packet.getFrameNumber(), str); // getFrameNumber()是帧号 } } /************************************************************************* * 关闭pcap ************************************************************************/ pcap.close(); }
0 0
- Jnetpcap 官方样例 (7)- 遍历pcap并输出数据包header信息
- Jnetpcap 官方样例 (1)- 捕获数据包
- Jnetpcap 官方样例(2)- 创建一个TCP数据包
- Jnetpcap 官方实例(5)- 发送数据包
- Jnetpcap 官方案例(3)- 从离线文件捕获数据包
- Jnetpcap 官方实例(4)- 将捕获的数据包写入文件
- 网络数据包捕捉工具jNetPcap学习笔记(一)
- Jnetpcap 官方实例 (6)- 获取设备的MAC地址
- 使用jnetpcap捕获数据包进行流量检测
- 使用pcap捕捉网络数据包
- 使用Scapy分析pcap数据包
- pcap数据包转换成netflow
- RestTemplate发送请求并携带header信息
- 遍历文件夹输出版本信息
- pcap 文件 数据过滤脚本(遍历目录文件)
- python解析pcap文件中的http数据包
- pcap数据包解析及数据特征提取
- 遍历链表 构造并升序输出(解题报告)
- [生存志] 第4节 第一篇 以史为鉴 易中天的历史地位
- 各种编程语言的 Hello World
- 初学linux命令-top
- MTK 6261D FAQ
- hadoop启动前配置(CentOS6.4)
- Jnetpcap 官方样例 (7)- 遍历pcap并输出数据包header信息
- AndroidKill反编译软件使用详解
- Java跨域设置
- 获取指定日期的后一天或前一天的日期
- 排序算法(十) 桶排序
- Oracle批量Update记录
- 第二天:菜鸟的进步之道Service
- 划线样式的EditText,可选右侧删除按钮是否可见
- 运用JS设置cookie、读取cookie、删除cookie