1. Tshark
1.1 Tshark简介
1.2 man Page
1.3 Tshark时间显示
1.4 统计 statistics
2. Tcpdump
2.1 tcpdump -h
2.2 包格式
3. tshark VS tcpdump
3.1 命令行捕获
3.2 vs小结
3.3 书籍介绍
1. Tshark
1.1 Tshark简介
TShark是基于终端的Wireshark,它是能够提供大量和Wireshark功能相同的数据包分析应用,但仅限于没有GUI的命令行界面。
如果你安装了Wireshark,那么你应该也安装了TShark,除非你在Wireshark安装过程中明确反选了安装TShark。
你可以输入以下命令确认TShark是否安装。
PS D:\Program Files\Wireshark> .\tshark.exe -v
TShark (Wireshark) 4.4.7 (v4.4.7-0-g7980339b1630).
如果没安装TShark但你现在又想使用它,那么你可以直接回到 Wireshark的安装向导重新安装,并确保默认的TShark安装选项被勾 选。
1.2 man Page
查看帮助命令
D:\Program Files\Wireshark> .\tshark.exe -h
查看手册页
以下是本机D盘安装目录下的路径
- file:///D:/Program%20Files/Wireshark/tshark.html
- file:///D:/Program%20Files/Wireshark/Wireshark%20User's%20Guide/AppToolstshark.html
1.3 Tshark时间显示
时间戳使用-t选项切换:
tshark –r packets.pcap –t ad
注: Tcpdump不提供这样多层面时间戳格式的控制
Tshark中可用的时间显示格式
值 | 时间戳 >tshark –r packets.pcap –t ad | 示例 |
a | 包被捕获的绝对时间(在您的时区) | 15:47:58.004669 |
ad | 包被捕获的绝对时间(在您的时区)带日期 | 2015-10-09 15:47:58.004669 |
d | 自之前捕获的数据包以来的增量(时差) | 0.000140 |
dd | 之前显示的数据包 | 0.000140 |
e | 亿元时间(1970年1月1日以来的秒数) | 1444420078.004669 |
r | 第一个数据包和当前数据包之间的运行时间 | 0.000140 |
u | 捕获数据包的绝对时间(UTC) | 19:47:58.004669 |
ud | 捕获数据包的绝对时间(UTC)带日期 | 2015-10-09 19:47:58.004669 |
1.4 统计 statistics
TShark的另一个有用的功能 (也是比Tcpdump先进的功能), 是它可以从捕获的文件中生成统计的一个子集。
统计示例
- tshark -r packets.pcap –z conv,ip //有关IP会话的信息的统计图
- tshark -r packets.pcap –z http,tree //以表的形式来分解HTTP的请求和返回数据包
- tshark -r http_google.pcap -z follow,tcp,ascii,0 //以ASCII形式将http_google.pcap的0号TCP流打印到 屏幕上
- tshark –r packets.pcap –z follow,udp,ascii,192.168.1.5:23429,4.2.2.1:53 //指明端点和端口的UDP流
查看所有可用的统计: tshark –z help
类 | .\tshark.exe -z help |
afp,srt | |
ancp,tree | |
ansi_a,bsmap | |
ansi_a,dtap | |
ansi_map | |
asap,stat | |
bacapp_instanceid,tree | |
bacapp_ip,tree | |
bacapp_objectid,tree | |
bacapp_service,tree | |
calcappprotocol,stat | |
camel,counter | |
camel,srt | |
collectd,tree | |
componentstatusprotocol,stat | |
会 话 |
conv,bluetooth |
conv,bpv7 | |
conv,dccp | |
conv,eth | |
conv,fc | |
conv,fddi | |
conv,ip //有关IP会话的信息 | |
conv,ipv6 | |
conv,ipx | |
conv,jxta | |
conv,ltp | |
conv,mptcp | |
conv,ncp | |
conv,opensafety | |
conv,rsvp | |
conv,sctp | |
conv,sll | |
conv,tcp | |
conv,tr | |
conv,udp | |
conv,usb | |
conv,wlan | |
conv,wpan | |
conv,zbee_nwk | |
credentials | |
dcerpc,srt | |
dests,tree | |
dhcp,stat | |
diameter,avp | |
diameter,srt | |
dns,tree | |
dns_qr,tree | |
e2ap,tree | |
端 点 |
endpoints,bluetooth |
endpoints,bpv7 | |
endpoints,dccp | |
endpoints,eth | |
endpoints,fc | |
endpoints,fddi | |
endpoints,ip | |
endpoints,ipv6 | |
endpoints,ipx | |
endpoints,jxta | |
endpoints,ltp | |
endpoints,mptcp | |
endpoints,ncp | |
endpoints,opensafety | |
endpoints,rsvp | |
endpoints,sctp | |
endpoints,sll | |
endpoints,tcp | |
endpoints,tr | |
endpoints,udp | |
endpoints,usb | |
endpoints,wlan //显示无线端点。 | |
endpoints,wpan | |
endpoints,zbee_nwk | |
enrp,stat | |
expert //从捕获中显示专家信息(对话, 错误等)。 | |
f1ap,tree | |
f5_tmm_dist,tree | |
f5_virt_dist,tree | |
fc,srt | |
流 量 图 |
flow,any |
flow,icmp | |
flow,icmpv6 | |
flow,lbm_uim | |
flow,tcp | |
跟 随 流 |
follow,dccp |
follow,http | |
follow,http2 | |
follow,quic | |
follow,sip | |
follow,tcp | |
follow,tls | |
follow,udp | |
follow,usbcom | |
follow,websocket | |
fractalgeneratorprotocol,stat | |
gsm_a | |
gsm_a,bssmap | |
gsm_a,dtap_cc | |
gsm_a,dtap_gmm | |
gsm_a,dtap_mm | |
gsm_a,dtap_rr | |
gsm_a,dtap_sacch | |
gsm_a,dtap_sm | |
gsm_a,dtap_sms | |
gsm_a,dtap_ss | |
gsm_a,dtap_tp | |
gsm_map,operation | |
gtp,srt | |
gtpv2,srt | |
h225,counter | |
h225_ras,rtd | |
hart_ip,tree | |
hosts | |
hpfeeds,tree | |
http,stat | |
http,tree //显示关于HTTP请求和回应的统计。 | |
http2,tree | |
http_req,tree //显示每个HTTP请求的统计。 | |
http_seq,tree | |
http_srv,tree | |
icmp,srt | |
icmpv6,srt | |
io,phs //分层级统计在捕获文件中找到的所有协议。 | |
io,stat | |
ip_hosts,tree //显示并统计每个IP地址在所占流量的比率。 | |
ip_srcdst,tree | |
ip_ttl,tree | |
ipv6_dests,tree | |
ipv6_hop,tree | |
ipv6_hosts,tree | |
ipv6_ptype,tree | |
ipv6_srcdst,tree | |
isup_msg,tree | |
kerberos,srt | |
lbmr_queue_ads_queue,tree | |
lbmr_queue_ads_source,tree | |
lbmr_queue_queries_queue,tree | |
lbmr_queue_queries_receiver,tree | |
lbmr_topic_ads_source,tree | |
lbmr_topic_ads_topic,tree | |
lbmr_topic_ads_transport,tree | |
lbmr_topic_queries_pattern,tree | |
lbmr_topic_queries_pattern_receiver,tree | |
lbmr_topic_queries_receiver,tree | |
lbmr_topic_queries_topic,tree | |
ldap,srt | |
ltp,tree | |
mac-3gpp,stat | |
megaco,rtd | |
mgcp,rtd | |
mtp3,msus | |
ncp,srt | |
nfsv4,srt | |
ngap,tree | |
npm,stat | |
osmux,tree | |
pfcp,srt | |
pingpongprotocol,stat | |
plen,tree | |
proto,colinfo | |
ptype,tree | |
radius,rtd | |
rlc-3gpp,stat | |
rpc,programs | |
rpc,srt | |
rtp,streams | |
rtsp,stat | |
rtsp,tree | |
sametime,tree | |
scsi,srt | |
sctp,stat | |
sip,stat | |
smb,sids | |
smb,srt //显示关于Windows会话的SMB命令的统计。 | |
smb2,srt | |
smpp_commands,tree | |
snmp,srt | |
someip_messages,tree | |
someipsd_entries,tree | |
ssprotocol,stat | |
sv | |
ucp_messages,tree | |
wsp,stat |
2. Tcpdump
- 如果说Wireshark是世界上最流行的图形化数据包分析应用,
- 那么Tcpdump就是世界上最流行的命令行数据包分析应用。
Tcpdump基于Linux系统的工具, 支持Linux和macOS.
如果想在Windows上使用Tcpdump,那么可以下载安装WinDump。
在WinDump中一些Tcpdump的功能可能会缺失甚至可能会有安全漏洞。
2.1 tcpdump -h
~$ man tcpdump
~$ tcpdump -h
2.2 包格式
Tcpdump中每行也代表一个数据包,根据不同的协议来规范每行的输出格式。
因为Tcpdump不依赖于Wireshark的协议解析器,所以第7层的协议信息无法被解码。
这也是Tcpdump的最大限制之一。
取而代之的是,Tcpdump单行数据包只会根据传输层协议(TCP或UDP)进行解码。
- TCP包使用以下格式:
[Timestamp] [Layer 3 Protocol] [Source IP].[Source Port] > [Destination IP]. [Destination Port]: [TCP Flags], [TCP Sequence Number], [TCP Acknowledgement Number], [TCP Windows Size], [Data Length]
- UDP包使用以下格式:
[Timestamp] [Layer 3 Protocol] [Source IP].[Source Port] > [Destination IP]. [Destination Port]: [Layer 4 Protocol], [Data Length]
3. tshark VS tcpdump
3.1 命令行捕获
操作 | tshark (Windows) | tcpdump (Linux, MacOS) |
抓包 | tshark | sudo tcpdump |
列出网卡 | tshark -D | ifconfig |
指定网卡 | tshark -i 1 | sudo tcpdump -i eth0 |
保存 | tshark –i 1 –w packets.pcap | tcpdump –i eth0 –w packets.pcap |
回读数据包 | tshark –r packets.pcap | tcpdump –r packets.pcap |
限制显示数量 | tshark –r packets.pcap –c10 | tcpdump –r packets.pcap –c10 |
增加冗馀 | tshark –r packets.pcap –V | tcpdump –r packets.pcap –vvv |
正常显示 | tshark -r packets.pcap -c1 | tcpdump -r packets.pcap -c1 |
冗余显示 | tshark -r packets.pcap -V -c1 | tcpdump -r packets.pcap -c1 -v tcpdump -r packets.pcap -c1 -vv tcpdump -r packets.pcap -c1 -vvv |
ASCII, hex | tshark –xr packets.pcap | tcpdump –Xr packets.pcap tcpdump –xr packets.pcap //hex tcpdump –Xr packets.pcap //ascII |
禁用名称解析 | tshark –ni 1 | tcpdump –nni eth1 |
仅启用传输层 端口的解析 |
tshark –i 1 –Nt | tcpdump –ni eth1 -n会禁用IP解析,-nn禁用IP和端口解析 |
启用传输层 和MAC层 |
tshark –i 1 -Ntm | |
捕获过滤器 | tshark –ni 1 –w packets.pcap –f tcp port 80 | tcpdump –nni eth0 –w packets.pcap 'tcp dst port 80' |
显示捕获器 | tshark –ni 1 –w packets.pcap –Y tcp.dstport == 80 | |
tshark –r packets.pcap –Y tcp.dstport == 80 | tcpdump –r packets.pcap 'tcp dst port 80' | |
另存为 | 读取→过滤→写入 | tcpdump –r packets.pcap 'tcp dst port 80' –w http_packets.pcap |
指派BPF 过滤器文件 |
tcpdump –nni eth0 –F dns_servers.bpf | |
显示绝对时间 | tshark –r packets.pcap –t ad | Tcpdump不提供多层面时间戳格式的控制 |
3.2 vs小结
这些工具的使用方式都是类似的, 学会其中一个就能很快上手另一个
差别 | tshark | tcpdump | WinDump |
操作系统 | Windows, Linux, macOS | Linux, macOS | WinDump: 是Tcpdump在Windows平台的发行版. 在WinDump中一些Tcpdump的功能可能会缺失甚至可能会有安全漏洞 |
时间格式 | 提供多层面时间戳格式的控制 | 标准时间戳 | |
协议支持 | 提供丰富的第7层协议支持 | 对第7层的协议支持不足 | |
分析功能 | 类似Wireshark的强大统计分析功能 | 不提供 | |
补充 | Windows系統下Wireshark的命令行版 | 虽然Tcpdump缺少图形特性, 但它处理海量数据时非常靠谱。 可用管道将输出重定向到其他命令, 比如Linux的sed 和awk。 |
3.3 书籍介绍
书名:Wireshark数据包分析实战(第3版)
ISBN:978-7-115-49431-3
著 [美] 克里斯•桑德斯(Chris Sanders)
译 诸葛建伟 陆宇翔 曾皓辰
本书在上一版的基础上针对Wireshark 2.0.5和IPv6进行了更新
本书从2015年底开始编写, 在2017年早期完成,总计历时一年半。
而在本书出版之日,距离本书第2版发布的时间已经有6年,距离第1版则长达10年之久。
额外内容, 书籍附带的演示数据包
下载本书的捕获文件(.zip)
(MD5校验和:C532A797958649D821BC2EDBC3A2DDD9)
ppa3ecaptures.zip的哈希值
MD5:C532A797958649D821BC2EDBC3A2DDD9
SHA1:7887C73BDB0F9BA1AF7FADBE01F1F0AAF2F2D5C6
SHA256:6EC7B9B0D1E88AE957D9B40FE9FD992316DD0619191FBA11582FC567D556C87E