tcpdump抓包及tshark解包方法介绍

tshark是wireshark的命令行工具,通过shell命令抓取、解析报文。tcpdump是Linux系统下的抓包工具。wireshark和tcpdump都共同使用 libpcap作为其底层抓包的库,tshark也可以抓取报文。

有时候需要在linux系统或者ARM开发板中进行抓包,使用tcpdump抓包更加方便,在这种场景下,一般使用tcpdump进行抓包,然后在Windows中使用wireshark来分析生成的包文件,在自动化分析或者自动化测试中,可以使用tshark来进行包解析。本文介绍使用tcpdump抓取报文后使用tshark进行报文解析。

安装

wireshark下载安装
wireshark官网:https://www.wireshark.org/download.html

# linux
yum -y install wireshark
yum -y install tcpdump

帮助信息

$ tcpdump -h

查看可用端口:

$ tcpdump -D
1.ens33
2.ens37
3.veth2424bf4
4.any (Pseudo-device that captures on all interfaces)
5.lo [Loopback]

tcpdump

tcpdump官方文档:https://www.tcpdump.org/index.html#documentation

常用参数

  • -i interface :指定抓包接口,tcpdump -i eth1
  • -c count:抓取包个数,tcpdump -c 5 -i eth0 仅抓取5个包
  • -w file:保存
  • -A:ASCII码形式打印报文
  • -XX:HEX 和 ASCII形式显示报文

抓包

抓取eth1网卡数据包,数据写入文件/tmp/packet.pcap

tcpdump -i eth1 -w /tmp/packet.pcap  >/dev/null 2>&1 &

其中

  • >/dev/null:将标准输出(控制台输出)重定向到/dev/null中,/dev/null代表 linux 的空设备文件。表示不输出内容
  • 2>&1:重定向绑定,错误输出(2)和标准输出(1)输出到同一个地方
  • >/dev/null 2>&1的作用就是丢弃标准输出和错误输出,不会输出任何信息到控制台。

也可以只抓取特定协议的报文,比如过滤tcp报文:

tcpdump -i eth1 tcp

抓取指定端口的报文

tcpdump -i eth1 port 22

抓取指定源IP的报文

tcpdump -i src 192.168.0.1

抓取指定目的IP的报文

tcpdump -i dst 192.168.0.1

停止抓包

如果没有限制 tcpdump 抓包的数量(-c 参数),tcpdump 会持续抓包。可以通过 Ctrl+C 来停止抓包,或者杀掉tcpdump进程:

killall -9 tcpdump

杀掉tcpdump进程后会停止抓包。

读取报文

$ tcpdump -r packet.pcap
reading from file packet.pcap, link-type EN10MB (Ethernet)
20:47:07.732570 IP 192.168.2.103.53074 > 69.173.159.48.https: Flags [F.], 
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值