首页 > 系统管理 > 基础知识 > 几款抓包工具tcpdump、wireshark、tshark的简单介绍
2015
04-17

几款抓包工具tcpdump、wireshark、tshark的简单介绍

前言   

   在Linux下,当我们需要抓取网络数据包分析时,通常是使用工具tcpdump。但是,有时我们需要将抓取的数据包保存在一个文件中,已备以后分析。而tcpdump保存的文件是二进制的文件,使用cat vim 都无法打开查看。此时我们采取的措施是,下载到本地使用wireshark界面网络分析工具进行网络包分析。

   最近才发现,原来wireshark也提供有Linux命令行工具tshark。tshark不仅有抓包的功能,还带了解析各种协议的能力。下面我们就来简单点的介绍的下这几款工具的使用的方法。

 

一、Tcpdump工具的使用

1、常用参数

1.1、常用选项

  1. [ -i interface ]  指定接口

  2. [ -W filecount ]   保存在指定的文件

  3.  -r 通过读取文件的方式,来实现抓包,而不是使用

  4. -n 表示以数字形式显示,如果是多个N,第一个表示把主机名显示成数字,第二个N表示把协议的端口显示成数字。

  5. -XX支持链路层。

1.2、类型相关的关键字

host ,net ,port

1.3、流向相关的关键字

Src ,dst ,src or dst  ,src and dst

1.4、Proto 协议

etherip ,arp,tcp,udp,

1.5、组合逻辑表达式

        And OR NOT
2、使用举例

2.1、显示进来的IP,在22端口的。

[root@director1 keepalived]# tcpdump -i eth0 dst 172.16.11.1 and port 80

2.2、显示目标是172.16.11.1 端口是80

[root@director1 keepalived]# tcpdump -nn -vv -i eth0 tcp src or dst 172.16.11.1 and port 80

2.3、把抓取的22端口的信息放在文件/packets

[root@director1 ~]# tcpdump -nn -i eth0 -w /packets tcp and dst 172.16.11.1 and port 22

2.4、源和目标地址的

[root@director1 keepalived]# tcpdump -nn -vv -i eth0 src and dst 172.16.11.1 and port 80

最常用法

blob.png

[root@node1 ~ ]# tcpdump -nn -i eth0 tcp and host 192.168.1.163 and port 80

####注意:这个-nn的含义:第一个n表示以IP地址的方式显示主机名,第二个N是以端口数字的形式代替服务名。

[root@node1 ~ ]# tcpdump -nn -vs0 -i eth0 -c 100 -w 1.cap  
##对于包-c指定抓多少包,-w 指明自己要存放的位置,  -vs0 表示不限制包的大小,所有的包都抓出来。
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
100 packets captured
100 packets received by filter    ###显示一百个包,已经抓好了。
0 packets dropped by kernel

###但是,需要注意的是,这里面保存在1.cap的包是以二进制格式保存的,如果是vim,cat都无查看,可以借助于工具,wireshare。

二、安装wireshark

Wireshark-gnome 是一个图形化的工具

yum install wireshark wireless-tools-devel wireshark-gnome -y

1.1、打开wireshark的方式

blob.png

1.2、然后开启一个图形化界面

blob.png

1.3、点击左上角的file–>open打开我们的抓包存储的文件就可以了

blob.png

1.4、Location:输入我们要查找文件的位置

blob.png

1.5、下面分享一个我之前对MySQL命令的抓包案例

blob.png

blob.png

blob.png 

三、命令行工具tshark

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

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'

参数解释:

  1. -i eth0 :捕获eth0网卡 -s  512 :只抓取前512个字节数据

  2. -n :禁止网络对象名称解析

  3. -f 'tcp dst port 80' :只捕捉协议为tcp,目的端口为80的数据包

  4. -R 'http.host and http.request.uri' :过滤出http.host和http.request.uri

  5. -T fields -e http.host -e http.request.uri :打印http.host和http.request.uri

  6. -l :输出到标准输出

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

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

下面介绍参数含义:

  1. -s 512 :只抓取前512个字节数据

  2. -i eth0 :捕获eth0网卡

  3. -n :禁止网络对象名称解析

  4. -f 'tcp dst port 3306' :只捕捉协议为tcp,目的端口为3306的数据包

  5. -R 'mysql.query' :过滤出mysql.query

  6. -T fields -e mysql.query :打印mysql查询语句

  7. tshark使用-f来指定捕捉包过滤规则,规则与tcpdump一样,可以通过命令man pcap-filter来查得。

  8. tshark使用-R来过滤已捕捉到的包,与界面板wireshark的左上角Filter一致。

除此之外,他可以通过抓包查看到那些用户通过那些命令,以及是使用的什么方法。请求的我们的主机。

1.3、详细查看用户对我们的主机进行那些请求方法

[root@node1 ~ ]# tshark -n -t a -R http.request -T fields -e "frame.time" -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.requset.uri"

###命令的执行的结果

blob.png

总结

  关于抓包的几款工具到此解释完毕,如果有什么疑问请留言!




最后编辑:
作者:qsisqingsong
这个作者貌似有点懒,什么都没有留下。
捐 赠您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请狠狠点击

留下一个回复