java怎么解析Wireshark抓包文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java怎么解析Wireshark抓包文件相关的知识,希望对你有一定的参考价值。

    Wireshark数据包解析:在Wireshark中关于数据包的叫法有三个术语,分别是帧、包、段。

    Wireshark分析数据包

    在Wireshark中的数据包都可以称为是网络数据。每个网络都有许多不同的应用程序和不同的网络涉及。但是一些常见的包中,通常都会包括一些登录程序和网络浏览会话。

    捕获访问网站的数据包,并保存该文件名为http-wireshar.pcapng。

    接下来通过该捕获文件中的数据,分析访问Web的整个过程。在该捕获过程中,将包含DNS请求、响应、TCP三次握手等数据。

    在该界面31帧,是DNS解析为一个IP地址的数据包(被称为一个“A”记录)。32帧表示返回一个与主机名相关的IP地址的DNS响应包。如果客户端支持IPv4和IPv6,在该界面将会看到查找一个IPv6地址(被称为“AAAA”记录)。此时,DNS服务器将响应一个IPv6地址或混杂的信息。

    在该界面看客户端和服务器之间TCP三次握手(33、34、35帧)和客户端请求的GET主页面(36帧)。然后服务器收到请求(37帧)并发送响应包(38帧)。

    当客户端从相同的服务器上再次请求访问另一个链接时,将会再次看到一个GET数据包(1909帧)。

注意:

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

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

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

参考技术A 1. 调用 tshark, text2pcap 进行 system() 操作,并将结果发到流中,总体来说,在jvm调用shell 是效率比较低的
2. 使用 GitHub - kaitoy/pcap4j: A Java library for capturing, crafting, and sending packets. 它完全脱离wireshark了,只是说libpcap的包装,支持的协议不是很全
参考技术B 安装目录下有一个叫tshark的命令行程序,自己上网查下就懂了,学会调用它,就可以直接输出解析结果,然后你的程序只要显示显示这些结果即可。
仅提供大致思路,或许有很好的解决方法

wireshark的配置

参考技术A

除了官网,很少有文章来说wireshark的配置的,由于研究需要,我们需要了解wireshark的配置,所以把官网的一些资料翻译下。
说明本文主要翻译官网的内容,结合自己的理解可能有所更改,也许有些错误,请谅解。

也许是软件本身比较复杂的原因,导致wireshark的配置非常多,在不同的文件夹下面,导致理解起来非常麻烦。

配置文件/文件夹 描述 unix/linux 文件夹 windows 下
1)preferences 对话框的偏好设置 /etc/wireshark.conf $HOME/.wireshark/preferences %WIRESHARK%\\wireshark.conf, %APPDATA%\\Wireshark\\preferences

2)recent 最近GUI设置(最近文件列表) $HOME/.wireshark/recent %APPDATA%\\Wireshark\\recent

3)cfilters 抓包过滤 $$HOME/.wireshark/cfilters %APPDATA%|%WIRESHARK%\\Wireshark\\cfilters

4)dfilters 显示过滤器 $HOME/.wireshark/dfilters %APPDATA%|%WIRESHARK%\\Wireshark\\dfilters

5) colorfilters 颜色规则 $HOME/.wireshark/colorfilters %APPDATA%|%WIRESHARK%\\Wireshark\\colorfilters

6) disabled_protos 禁止协议 $HOME/.wireshark/disabled_protos %APPDATA%|%WIRESHARK%\\Wireshark\\disabled_protos

7)ethers 以太网名称解析 /etc/ethers $HOME/.wireshark/ethers %APPDATA%|%WIRESHARK%\\Wireshark\\ethers

**8)manuf ** 以太网名称解析 /etc/manuf $HOME/.wireshark/manuf %APPDATA%|%WIRESHARK%\\Wireshark\\manuf

9) 主机 IPV4和IPV6名称解析 /etc/hosts ,$HOME/.wireshark/hosts %APPDATA%|%WIRESHARK%\\Wireshark\\hosts

10) subnets IPV4子网名称解析 /etc/subnets $HOME/.wireshark/subnets %APPDATA%|%WIRESHARK%\\Wireshark\\subnets

11)ipxnets IPX名称解析 /etc/ipxnet $HOME/.wireshark/ipxnets %APPDATA%|%WIRESHARK%\\Wireshark\\ipxnets

12)plugins 插件目录 /usr/share/wireshark/plugins /usr/local/share/wireshark/plugins $HOME/.wireshark/plugins %APPDATA%|%WIRESHARK%\\Wireshark\\plugins

13)temp 临时文件 环境变量:TMPDIR 环境变量:TMPDIR 或TEMP

windows下的目录说明:
%APPDATA%指向个人配置文件夹,例如:( C:\\Documents and Settings\\<username>\\Application Data 详细信息请参见: 第A.3.1节“Windows配置文件” ),

%WIRESHARK%指向Wireshark程序文件夹,例如: C:\\Program Files\\Wireshark

preferences/wireshark.conf
这个文件包括wireshark的偏好配置,包括默认的抓包和显示包等,简单的text语句显示格式如下:
variable:value
在程序启动的时候读取这个配置,在你更改“首选项”的时候将数据写入到文件。
可以看下界面,内容是相当丰富。

最近配置,此文件包含各种GUI相关设置,如主窗口位置和大小,最近的文件列表等。它是一个包含以下形式语句的简单文本文件:

variable:value

此文件包含已经定义和保存的所有捕获过滤器。它由一行或多行组成,每行包括以下格式:
"<filter name>" <filter string>
在捕获过滤器对话框中按“保存”按钮时保存到文件,程序启动时候读取配置

此文件包含已经定义和保存的所有显示过滤器,它由一行或多行组成,每行包含以下格式:
"<filter name>" <filter string>

此文件包含已经定义和保存的所有滤色器,它由一行或多行组成,每行包括以下格式:

程序启动时候读取,在颜色规则对话框中设置保存按钮的时候保存。

每行表示一个禁止的协议名,下面给出一些列子:

当Wireshark尝试将以太网硬件地址转换为名称时,它会查询 表A.1“配置文件和文件夹概述”中 列出的 文件 。如果在/etc/ethers中找不到地址,Wireshark将查找$ HOME /.wireshark/ethers

这些文件中的每一行由一个硬件地址和由空格分隔的名称组成。硬件地址的数字由冒号(:),短划线( - )或句点(。)分隔。以下是一些例子:

启动时候读取,但是不会写。

Wireshark使用 表A.1“配置文件和文件夹概述”中 列出的文件将 以太网地址的前三个字节转换为制造商名称。此文件具有与ethers文件相同的格式,但地址长度为三个字节。

一个例子是:

启动时候读入,但是不写。

Wireshark使用 表A.1“配置文件和文件夹概述”中 列出的 文件 将IPv4和IPv6地址转换为名称。
此文件的格式与Unix系统上通常的/ etc / hosts文件相同。
一个例子是:

只加载,但是不写入。

Wireshark使用 表A.1“配置文件和文件夹概述”中 列出的文件将 IPv4地址转换为子网名称。如果未找到来自hosts文件或DNS的完全匹配,Wireshark将尝试部分匹配该地址的子网。

此文件的每一行都包含一个IPv4地址,一个仅由\'/\'分隔的子网掩码长度和一个用空格分隔的名称。虽然地址必须是完整的IPv4地址,但随后会忽略超出掩码长度的任何值。

一个例子是:

部分匹配的名称将打印为“subnet-name.remaining-address”。例如,上面子网下的“192.168.0.1”将打印为“ws_test_network.1”; 如果上面的掩码长度是16而不是24,则打印的地址将是“ws_test_network.0.1”。

此文件中的设置在程序启动时读入,并且从不由Wireshark写入。

Wireshark使用 表A.1“配置文件和文件夹概述”中 列出的 文件 将IPX网络号转换为名称。

一个例子是:

此文件中的设置在程序启动时读入,并且从不由Wireshark写入。

Wireshark在 表A.1“配置文件和文件夹概述”中 列出的目录中搜索插件 。按列出的顺序搜索它们。

如果你开始一个新的捕获并且没有为它指定文件名,Wireshark使用这个目录来存储该文件; 请参见 第4.7节“捕获文件和文件模式” 。

如果你开始一个新的捕获并且没有为它指定文件名,Wireshark使用这个目录来存储该文件; 请参见 第4.7节“捕获文件和文件模式” 。

以上是关于java怎么解析Wireshark抓包文件的主要内容,如果未能解决你的问题,请参考以下文章

如何让wireshark支持OpenFlow解析

wireshark的https解析配置

如何让Wireshark可以捕获无线网卡的数据包

带你一起用 ElasticStack 搞定 Wireshark 抓包数据可视化

带你一起用 ElasticStack 搞定 Wireshark 抓包数据可视化

带你一起用 ElasticStack 搞定 Wireshark 抓包数据可视化