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

WEB2.0 »  Unix&Linux技术  评论(0)
背景:当时有用tcpdump抓包的(https://justwinit.cn/post/6406/),这儿主要是能看到mysql的查询,这个功能不错,特转载。
这个还是依赖libpcap的,如下:
一、抓Mysql包命令如下:
view plain print ?
  1. tshark -s 512 -i eth0 -n -f 'tcp dst port 3306' -R 'mysql.query' -T fields -e mysql.query    

view plain print ?
  1. tshark -s 512 -i em1 -n -f 'tcp dst port 3306' -R 'mysql.query' -T fields -e mysql.query  

二、打印当前http请求的url(包括域名)
view plain print ?
  1.       
  2. 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'  

更多见下面摘录博文。
______________________________________________________________________________
先得安装Rpm包以及自己安装时遇到的问题,如下:
view plain print ?
  1. Dependency Installed:  
  2.   libpcap.x86_64 14:1.4.0-1.20130826git2dbcaa1.el6                                                            libsmi.x86_64 0:0.4.8-4.el6                                                             
  3. Failed:  
  4.   wireshark.x86_64 0:1.8.10-7.el6_5                                                                                                                                                                    
  5. Complete!  
  6.   
  7. [root@localhost htdocs]#  tshark -s 512 -i eth0 -n -f 'tcp dst port 3306' -R 'mysql.query' -T fields -e mysql.query  
  8. Running as user "root" and group "root". This could be dangerous.  
  9. Capturing on eth0  
  10. 0 packets captured  
  11. [root@localhost htdocs]# id  
  12. uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)  
  13. [root@localhost htdocs]#  tshark -s 512 -i eth0 -n -f 'tcp dst port 3306' -R 'mysql.query' -T fields -e mysql.query  
  14. Running as user "root" and group "root". This could be dangerous.  
  15. Capturing on eth0  
  16. SET NAMES utf8  
  17. SELECT *\x0aFROM (`tv_nav`)\x0aWHERE `enabled` = 1\x0aORDER BY `order` DESC\x0aLIMIT 0, 20  
  18. SET NAMES utf8  
  19. SELECT *\x0aFROM (`tv_nav`)\x0aWHERE `enabled` = 1\x0aORDER BY `order` DESC\x0aLIMIT 0, 20  


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

CentOS: yum install -y wireshark
Ubuntu: apt-get install -y tshark
实践时出现如下问题:
Error in PREIN scriptlet in rpm package wireshark-1.8.10-7.el6_5.x86_64
groupadd: cannot open /etc/group
groupadd xxx时报错: 
groupadd : cannot open /etc/group
————————————————————————————————
解决方法:
root:chattr -i /etc/gshadow
root:chattr -i /etc/group
useradd xxx时报错:
useradd :cannot open /etc/passwd

[root@jackxiang ~]# lsattr /etc/group 
----i--------e- /etc/group

解决方法:
chattr -i /etc/shadow 
chattr -i /etc/gshadow 
chattr -i /etc/group 
chattr -i /etc/passwd
参考:http://www.linuxidc.com/Linux/2012-12/76627.htm

————————————————————————————————

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

view plain print ?
  1.       
  2. 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'  

view plain print ?
  1.       
  2. tshark -s 1024 -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查询语句

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

4、过滤HTTP请求:
# tshark 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' -R 'http.request.method == "GET" || http.request.method == "HEAD"'
输出:
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
  0.000000 123.126.68.27 -> 173.255.196.50 HTTP GET /grep.html HTTP/1.1 
12.066470 123.126.68.27 -> 173.255.196.50 HTTP GET /pro_lang.html HTTP/1.1 
4摘自:http://www.berlinix.com/net/tshark.php

下面介绍参数含义:

    -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一致。

作者:justwinit@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://justwinit.cn/post/7458/

你可能感兴趣的:(Linux命令行抓包及包解析工具tshark(wireshark)使用实例解析)