常用抓包工具使用-tcpdump使用(一)
文章目录
前言
tcpdump常用于服务器/linux系统进行数据包的补货,简单记录下tcpdump常用的参数及常用场景示例
提示:以下是本篇文章正文内容,下面案例可供参考
一、tcpdump简介
tcpdump是linux下的网络抓包工具,主要用于把流经网卡的数据包头截获下来进行分析。
过滤方式:针对网络层,协议,主机,网络或者端口过滤,辅以and,or,not等逻辑语句帮助你去掉无用的信息。
注意:此命令需要设置网卡为混杂模式,普通用户不能正常使用,需要root权限。网卡默认只接收目的硬件地址是自己的或者广播硬件地址的数据包。而混杂模式则会使网卡接收所有流经网卡的数据包。
不带任何参数直接启动tcpdump命令默认回去截获流经第一个网络设备的所有数据包。
➜ /tmp sudo tcpdump
Password:
tcpdump: data link type PKTAP
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
# listening监听的网卡,capture size表示数据包大小
listening on pktap, link-type PKTAP (Apple DLT_PKTAP), capture size 262144 bytes
15:57:00.176004 IP 127.0.0.1.53965 > 127.0.0.1.https: Flags [.], ack 3835298573, win 2052, length 0
二、tcpdump常用参数
网络中的数据流量很大,如果不加分辨就把所有的数据包都截留下来,则数据量太大,反而不容易找到需要的信息。tcpdump使用参数指定需要监视数据包的类型、地址、端口等,根据具体的网络问题,充分利用这些过滤规则就能达到迅速定位故障的目的。表达式是一个正则表达式,tcpdump利用它作为过滤报文的条件。如果一个数据报满足表达式条件,则这个数据报将会被捕获。下面是几种类型的关键字
1. 关于类型的关键字
host:指定主机
# 获取指定host发送或接收的数据包
sudo tcpdump host www.baidu.com
net:指定网络地址
# 获取指定网络地址的数据包
sudo tcpdump net 10.120.113.123
port: 指定端口
# 获取指定端口发出或接收的数据包
sudo tcpdump tcp port 443
2. 确定传输方向的关键字,
src: 数据传输的源地址
# src后面为源地址,筛选从10.172.11.11发出的数据包
sudo tcpdump src 10.172.11.11
dst: 数据传输的目的地址
# dst后数据的接收地址,筛选接收地址为10.172.11.11的数据包
sudo tcpdump dst 10.172.11.11
dst or src:
# 筛选地址10.172.11.11发出和接收的数据包
sudo tcpdump dst or src 10.172.11.11
3. 关于协议的关键字
主要包括fddi,ip,arp,rarp,tcp,udp等类型。Fddi指明是在FDDI(分布式光纤数据接口网络)上的特定的网络协议,实际上它是"ether"的别名,fddi和ether具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和分析。其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议,则tcpdump将会监听所有协议的信息包。
tcp:
# 截取所有tcp数据包
sudo tcpdump tcp
udp
# 截取所有udp数据包
sudo tcpdump udp
4. 常用参数
-w:打印截取数据至指定文件中
sudo tcpdump tcp -w /tmp/tcpdump1.log
-v: 添加后更详细的输出截取数据包
sudo tcpdump tcp -v
-i: 指定捕获数据的网卡,若没有制定,则默认第一个
sudo tcpdump -i eth0
三、常用示例
- 截取百度的数据包
tcpdump host www.baidu.com
- 截取主机10.172.31.1 和主机10.172.31.2 或10.172.31.3的通信
tcpdump host 10.172.31.1 and \(10.172.31.2 or 10.172.31.3\)
- 截取百度和csdn之外的所有的数据包
tcpdump ip host www.baidu.com and not csdn.net
- 截取主机接收或发出的telnet包,使用如下命令
tcpdump tcp port 23 host 10.172.31.1
- 截取本机udp指定端口数据包
tcpdump udp port 5421
- 截取指定主机发出的所有数据
tcpdump -i eth0 src host hostname
- 截取指定主机接收的所有数据
tcpdump -i eth0 dst host hostname
- 截取通过指定网管的数据包
tcpdump -i eth0 gateway Gatewayname
- 截取指定host和端口的数据包
tcpdump -i eth0 host hostname and port 80
总结
简单记录tcpdump使用方法及常用参数,理解后对Wireshark的学习有一定的帮助,主要是用场景还是服务器,客户端抓包建议使用客户端工具更好。