Linux网络抓包

1. tshark

1.1 安装

Centos

yum install -y wireshark

Ubuntu

apt-get install -y tshark

1.2 使用

1.2.1 抓包参数说明

常用 -i-f参数

  • -i设置抓包的网络接口,不设置则默认为第一个非自环接口。
  • -f 设定抓包过滤表达式(capture filter expression)。抓包过滤表达式的写法雷同于tcpdump,可参考tcpdump man page的有关部分。
  • -D 列出当前存在的网络接口。在不了解OS所控制的网络设备时,一般先用“tshark -D”查看网络接口的编号以供-i参数使用。
  • -s 设置每个抓包的大小,默认为65535,多于这个大小的数据将不会被程序记入内存、写入文件。(这个参数相当于tcpdump的-s,tcpdump默认抓包的大小仅为68)
  • -p 设置网络接口以非混合模式工作,即只关心和本机有关的流量。
  • -B 设置内核缓冲区大小,仅对windows有效。
  • -y 设置抓包的数据链路层协议,不设置则默认为-L找到的第一个协议,局域网一般是EN10MB等。
  • -L 列出本机支持的数据链路层协议,供-y参数使用。

-f参数详解

  • 设置监听的协议类型: -f udp/tcp/http 必须为小写
  • 设置源ip:-f "src host x.x.x.x"
  • 设置源端口:-f "src port 80"
  • 设置源ip和源端口: -f "src host x.x.x.x and src port xx"
  • 设置目的ip: -f "dst host x.x.x.x"
  • 设置目的端口: -f "dst port xx"
  • 设置目的ip和端口: -f "dsthost x.x.x.x and port xx"

1.2.2 输出参数说明

常用 -T-l 参数

  • -w 设置raw数据的输出文件
  • -F 设置输出raw数据的格式,默认为libpcap。
  • -V 设置将解码结果的细节输出,否则解码结果仅显示一个packet一行的summary。
  • -x 设置在解码输出结果中,每个packet后面以HEX dump的方式显示具体数据。
  • -T 设置解码结果输出的格式,包括text,ps,psml和pdml,默认为text。
  • -t设置解码结果的时间格式。“ad”表示带日期的绝对时间,“a”表示不带日期的绝对时间,“r”表示从第一个包到现在的相对时间,“d”表示两个相邻包之间的增量时间
  • -S 在向raw文件输出的同时,将解码结果打印到控制台。
  • -l 在处理每个包时即时刷新输出。
  • -X 扩展项。
  • -q 设置安静的stdout输出(例如做统计时)
  • -z 设置统计参数。

1.3 示例

  1. 实时打印当前http请求的url
tshark -i eth0 -n -f "tcp dst port 80" -T fields -e http.host -e http.request.uri -l
  1. 实时打印当前mysql查询语句
 tshark -i eth0 -n -f "tcp dst port 3306" -T fields -e mysql.query

2. tcpdump

这也是一个抓包工具,不过没tshark好用,简单介绍一下吧。。

2.1 安装

Centos

yum install -y tcpdump

Ubuntu

apt-get install -y tcpdump

2.2 使用

  1. 截获从网口eth0出去或接收到的包
tcpdum -i eth0
  1. 截获所有与主机 xx.xx.xx.xx 相关的包
tcpdump host xx.xx.xx.xx
  1. 截获tpc协议的80端口的包
tcpdump tcp port 80
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章