CentOS安装tshark抓包工具

准备在服务器上用tshark抓包,分析一下数据。直接yum install tshark却发现没有这个包。网上搜索一下,各种奇葩安装方式,又是安装apt?又是安装各种环境?我相信既然CentOS已经有了yum这么好的包管理工具,那么一定有更简单的方式。
最后只好在Google上直接用我这蹩脚的英文搜索一下。果然,一句how to install tshark on centos顺利解决了我的问题。
原来一直是自己对yum这个命令了解太少了,平时只会yum install,yum update :first_quarter_moon_with_face: 。那么到底故事如何,客官且听我细细道来。
当我试图直接安装时:

$ yum install tshark
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
没有可用软件包 tshark。
错误:无须任何处理

那么,该怎么办呢? 原来yum提供了搜索功能。

$ yum whatprovides *tshark*
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
base/7/x86_64/filelists_db                                                    | 6.9 MB  00:00:00
epel/x86_64/filelists                                                         |  10 MB  00:00:00
extras/7/x86_64/filelists_db                                                  | 524 kB  00:00:00
updates/7/x86_64/filelists_db                                                 | 2.1 MB  00:00:00
1:bash-completion-extras-2.1-11.el7.noarch : Additional programmable completions for Bash
源    :epel
匹配来源:
文件名    :/usr/share/bash-completion/completions/tshark

wireshark-1.10.14-14.el7.i686 : Network traffic analyzer
源    :base
匹配来源:
文件名    :/usr/sbin/tshark
文件名    :/usr/share/wireshark/tshark.html
文件名    :/usr/share/man/man1/tshark.1.gz

wireshark-1.10.14-14.el7.x86_64 : Network traffic analyzer
源    :base
匹配来源:
文件名    :/usr/sbin/tshark
文件名    :/usr/share/wireshark/tshark.html
文件名    :/usr/share/man/man1/tshark.1.gz

我们可以看到wireshark包已经包含了tshark包。

接下来就是我们熟悉的步骤了==。

$ yum install wireshark
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 wireshark.x86_64.0.1.10.14-14.el7 将被 安装
--> 正在处理依赖关系 libsmi.so.2()(64bit),它被软件包 wireshark-1.10.14-14.el7.x86_64 需要
--> 正在处理依赖关系 libcares.so.2()(64bit),它被软件包 wireshark-1.10.14-14.el7.x86_64 需要
--> 正在检查事务
---> 软件包 c-ares.x86_64.0.1.10.0-3.el7 将被 安装
---> 软件包 libsmi.x86_64.0.0.4.8-13.el7 将被 安装
--> 解决依赖关系完成

...

已安装:
  wireshark.x86_64 0:1.10.14-14.el7

作为依赖被安装:
    c-ares.x86_64 0:1.10.0-3.el7                                                                        libsmi.x86_64 0:0.4.8-13.el7

完毕!

最后我们验证一下:

 $ tshark -v
TShark 1.10.14 (Git Rev Unknown from unknown)

Copyright 1998-2015 Gerald Combs <gerald@wireshark.org> and contributors.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Compiled (64-bit) with GLib 2.50.3, with libpcap, with libz 1.2.7, with POSIX
capabilities (Linux), without libnl, with SMI 0.4.8, with c-ares 1.10.0, with
Lua 5.1, without Python, with GnuTLS 3.3.26, with Gcrypt 1.5.3, with MIT
Kerberos, without GeoIP.

Running on Linux 3.10.0-693.11.1.el7.x86_64, with locale zh_CN.UTF-8, with
libpcap version 1.5.3, with libz 1.2.7.
Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GHz

Built using gcc 4.8.5 20150623 (Red Hat 4.8.5-16).

写这边文章并不只是只是为了说明tshark怎么在centos怎么安装,更多的是有时候我们需要扩展自己的知识面,避免重复造轮子。

记录一次Tshark使用异常

记录备忘!

使用tshark抓包时,出现以下异常:

Running as user “root” and group “root”. This could be dangerous. 
Capturing on ‘enp3s0’ 
tshark: The file to which the capture would be saved (“tmp1/test.pcap”) could not be opened: Permission denied.

问题描述:

tshark抓包时必须以root身份运行,在普通用户模式下以sudo su 切换到root身份时,运行报错.

问题原因:

ls -lst 查看权限如下:

drwxr-xr-x 2 yk opuser 4096 Dec 4 16:53 tmp1 

该目录的所有者并非root,也没有提供其他用户的使用权。修改目录权限使root拥有写入权限即可.

chmod o+w tmp1 

权限不一定修改为o,同组时也可以使用g.
或者直接使用root身份创建目录.
如果是多级目录,只修改最下一级目录是不能解决问题的,必须将目标路径上的目录的权限全修改.
再次运行即可解决问题.

Linux命令行抓包及包解析工具tshark(wireshark)使用实例解析

在Linux下,当我们需要抓取网络数据包分析时,通常是使用tcpdump抓取网络raw数据包存到一个文件,然后下载到本地使用wireshark界面网络分析工具进行网络包分析。
最近才发现,原来wireshark也提供有Linux命令行工具-tshark。tshark不仅有抓包的功能,还带了解析各种协议的能力。下面我们以两个实例来介绍tshark工具。

1、安装方法

  1. CentOS: yum install -y wireshark
  2. Ubuntu: apt-get install -y tshark

2、实时打印当前http请求的url(包括域名)

  1. tshark -s 512 -i eth0 -n -f ‘tcp dst port 80’ -R ‘http.host and http.request.uri’ -T fields -e http.host -e http.request.uri -l | tr -d ‘t’

下面介绍参数含义:

  • -s 512 :只抓取前512个字节数据
  • -i eth0 :捕获eth0网卡
  • -n :禁止网络对象名称解析
  • -f ‘tcp dst port 80’ :只捕捉协议为tcp,目的端口为80的数据包
  • -R ‘http.host and http.request.uri’ :过滤出http.host和http.request.uri
  • -T fields -e http.host -e http.request.uri :打印http.host和http.request.uri
  • -l :输出到标准输出

3、实时打印当前mysql查询语句

  1. tshark -s 512 -i eth0 -n -f ‘tcp dst port 3306’ -R ‘mysql.query’ -T fields -e mysql.query

下面介绍参数含义:

  • -s 512 :只抓取前512个字节数据
  • -i eth0 :捕获eth0网卡
  • -n :禁止网络对象名称解析
  • -f ‘tcp dst port 3306’ :只捕捉协议为tcp,目的端口为3306的数据包
  • -R ‘mysql.query’ :过滤出mysql.query
  • -T fields -e mysql.query :打印mysql查询语句

tshark使用-f来指定捕捉包过滤规则,规则与tcpdump一样,可以通过命令man pcap-filter来查得。
tshark使用-R来过滤已捕捉到的包,与界面版wireshark的左上角Filter一致。