文章目录

  • 安装 Wireshark
  • Wireshark 可以做什么?
  • Wireshark 的操作步骤
  • 一个典型的命令
  • 选择监听的网卡
  • Start Or Start a capture with detailed options
  • 设置 Capture Filter,设置捕获条件
  • 点击 Start 开始捕获
  • 设置 Filter 并点击确认
  • 跟踪某一条访问
  • 保存新文件和打开已保存文件
  • 标记和含义
  • 留个悬念-网络分层
  • 常用的过滤命令
  • 参考链接


Wireshark 是一款功能强大的抓包工具,可以让我们了解网络传输的细节,比如用于了解经典的三次握手四次握手,化抽象为具体。本文将介绍 Wireshark的简单使用。

安装 Wireshark

官网下载地址 https://www.wireshark.org/#download

Wireshark 可以做什么?

Wireshark 可以截取指定 host、协议 的信息流,并且可以按照协议类型、IP、端口、不同编码格式对信息流进行查看,而且可以追踪某一个信息流。可以讲获取的信息流保存以便于以后再次查看。

Wireshark 的操作步骤
  • 打开 Wireshark

选择 Wireshark Legacy

一个典型的命令
ip.dst == 192.168.1.1 and tcp.port==80 and tcp.seq==0

wireshark 导入证书 wireshark怎么能够获取信息_IP

选择监听的网卡

这个要看你计算机的联网方式,比如是通过有线网卡或者无线网卡,这里我使用无线网卡。如果你想监听多个网卡,则点击Interface List

wireshark 导入证书 wireshark怎么能够获取信息_wireshake_02

Start Or Start a capture with detailed options

在选择好要监听的网卡之后,我们有两种方式开始捕获网络上的信息流,如上图所示,一种是 Start,一种是Capture Options。前者会直接开始捕获信息流,你可以先点进去体验一下,在不启用任何过滤措施的情况下,信息显得有些乱。后者可以对捕获的信息有一个基本设置,点击确定之后,进入的页面和前者一样,然后可以对捕获的结果做进一步的过滤。
点击 Capture Options

wireshark 导入证书 wireshark怎么能够获取信息_Wireshark_03

设置 Capture Filter,设置捕获条件

你可以直接在后面输入过滤命令,如果格式正确输入框将会变成绿色,你也可以使用后面的按钮Compile selected BPFs,会得到一些有效信息,这个按钮不是必须的。
如果你还不熟悉命令,可以点击 Capture Filter按钮,从中选择一个作为模板。比如下图,捕获过滤条件是 ip地址 192.0.2.1 的信息流(192.0.2.1 发出的或者接收到的信息流)

wireshark 导入证书 wireshark怎么能够获取信息_wireshark 导入证书_04

点击 Start 开始捕获

点击 Start 将进入到下面的页面
1 是刷新的作用,他左边的红色按钮可以终止捕获;
2是对捕获结果进行二次过滤;
3是捕获到的具体的一条信息流,或者你也可以叫做报文,尽管这个名称并不适合于所有协议。

wireshark 导入证书 wireshark怎么能够获取信息_wireshark 导入证书_05

设置 Filter 并点击确认

比如我想知道来自ip 192.168.1.106 的访问,或者目标地址为 192.168.1.106 的访问,则需要在2添加过滤命令。
ip.src192.168.1.106 会对捕获结果进行再次过滤,将发起请求ip地址为 192.168.1.106 的信息流留下
ip.dst
192.168.1.106 会对捕获结果进行再次过滤,将请求访问目标ip地址为 192.168.1.106 的信息流留下
会有自动提示哦,写完命令如果正确输入框会变为绿色,然后按一下标注为2 的按钮更新一下

wireshark 导入证书 wireshark怎么能够获取信息_IP_06

  • Mac 版的写 ip.dst == 有提示点击 ->
跟踪某一条访问

网络访问有时候存在重试的情况,这对于我们分析信息流来说是一种干扰,所以我们可以选择跟踪一个连续的信息流,而不是多个。右键 点击 Foller 协议名字(如TCP) Stream

wireshark 导入证书 wireshark怎么能够获取信息_Wireshark_07

保存新文件和打开已保存文件

关闭窗口会提示你保存
至于打开新文件,停止当前捕获,然后左上角 File->open 你保存的文件即可

标记和含义
"eth"   Ethernet addresses
  "fc"    Fibre Channel addresses
  "fddi"  FDDI addresses
  "ip"    IPv4 addresses
  "ipv6"  IPv6 addresses
  "ipx"   IPX addresses
  "tcp"   TCP/IP socket pairs   Both IPv4 and IPv6 are supported
  "tr"    Token Ring addresses
  "udp"   UDP/IP socket pairs   Both IPv4 and IPv6 are supported
留个悬念-网络分层

下图对应 网络协议分层,含义是>>>
参考

wireshark 导入证书 wireshark怎么能够获取信息_封包_08

常用的过滤命令
  • ip.addr==127.0.0.1 ,客户端IPv4 的地址为 127.0.0.1
  • ip.dst==127.0.0.1,服务端的IPv4 地址为 127.0.0.1
  • and 或者 && ,并且,比如 ip.addr127.0.0.1 and ip.dst127.0.0.1,表示客户端和服务端的IPv4 地址都是 127.0.0.1
  • tcp.seq==0,表示,TCP协议的seq值为0
  • tcp.ack==1,表示 TCP 协议的ack值为1
  • or 或者 ||,或者,比如 ip.addr127.0.0.1 || ip.addr192.168.1.10
  • (),括号,可以使用括号,比如 (ip.addr127.0.0.1 and ip.dst == 192.168.1.10) || (ip.addr 192.168.1.10 and ip.dst == 127.0.0.1)
  • tls,表示tls协议,用于捕获https的不二选择
  • tcp,限定为 tcp 协议
  • dns.qry.name == img.alicdn.com ,域名为img.alicdn.com
  • tcp dst port 3128,显示目的TCP端口为3128的封包。
  • ip src host 10.1.1.1 显示来源IP地址为10.1.1.1的封包。
  • host 10.1.2.3 显示目的或来源IP地址为10.1.2.3的封包。
  • src portrange 2000-2500 显示来源为UDP或TCP,并且端口号在2000至2500范围内的封包。
  • not imcp 显示除了icmp以外的所有封包。(icmp通常被ping工具使用)
  • src host 10.7.2.12 and not dst net 10.200.0.0/16 显示来源IP地址为10.7.2.12,但目的地不是10.200.0.0/16的封包。
  • (src host 10.4.1.12 or src net 10.6.0.0/16) and tcp dst portrange 200-10000 and dst net 10.0.0.0/8 显示来源IP为10.4.1.12或者来源网络为10.6.0.0/16,目的地TCP端口号在200至10000之间,并且目的位于网络10.0.0.0/8内的所有封包。
  • http.host==magentonotes.com http.host contains xxx.com
    过滤经过指定域名的http数据包,这里的host值不一定是请求中的域名
  • http.response.code==302 过滤http响应状态码为302的数据包
  • http.response==1 过滤所有的http响应包
  • http.request==1 过滤所有的http请求,貌似也可以使用http.request
  • http.request.method==POST wireshark过滤所有请求方式为POST的http请求包,注意POST为大写
  • http.cookie contains guid 过滤含有指定cookie的http数据包
  • http.request.uri==”/online/setpoint” 过滤请求的uri,取值是域名后的部分
  • http.request.full_uri==” http://task.browser.360.cn/online/setpoint”
    过滤含域名的整个url则需要使用http.request.full_uri
  • http.server contains “nginx”
    过滤http头中server字段含有nginx字符的数据包
  • http.content_type == “text/html”
    过滤content_type是text/html的http响应、post包,即根据文件类型过滤http数据包
  • http.content_encoding == “gzip”
    过滤content_encoding是gzip的http包
  • http.transfer_encoding == “chunked”
    根据transfer_encoding过滤
  • http.content_length == 279
    http.content_length_header == “279″
    根据content_length的数值过滤
  • http.server
    过滤所有含有http头中含有server字段的数据包
  • http.request.version == “HTTP/1.1″
    过滤HTTP/1.1版本的http包,包括请求和响应
  • http.response.phrase == “OK”
    过滤http响应中的phrase
参考链接

[1].http://blog.jobbole.com/70907/

[4].https://jingyan.baidu.com/article/b87fe19e7603b75218356825.html