tcpdump
简介
-
不通平台的 tcpdump 支持的参数是不一样的
-
比如 windows 下的 tcpdump 就不支持 -i 参数
-
有些嵌入式设备,只支持 -i -w 参数等
-
一般只用tcpdump进行过滤抓包,然后使用 wireshark 进行解析
-
表达式单元之间可以使用操作符进行连接
- 否定操作 (
!
或not
) - 与操作(
&&
或and
) - 或操作(
||
或or
)
- 否定操作 (
-
使用括号"()"可以改变表达式的优先级,但需要注意的是括号会被shell解释,所以应该使用反斜线""转义为"()",在需要的时候,还需要包围在引号中。
-
tcpdump [options] [not] proto dir type
- options: -i -s -w ...
- proto: tcp/udp/arp/ip/ether/icmp
- type: host/net/port/portrange
参数options
-s
- 设置tcpdump的数据包抓取长度为len,如果不设置默认将会是65535字节。
- 对于要抓取的数据包较大时,长度设置不够可能会产生包截断,若出现包截断,输出行中会出现"[|proto]"的标志(proto实际会显示为协议名)。
- 抓取len越长,包的处理时间越长,并且会减少tcpdump可缓存的数据包的数量,从而会导致数据包的丢失,所以在能抓取我们想要的包的前提下,抓取长度越小越好。
-i
- 指定网卡名称,如果不指定网卡名称,则默认使用第一个网卡
- 可以通过命令 ifconfig 查看
- 也可以通过命令
tcpdump -D
查看 - 可以使用
any
关键字表示所有网络接口。
src
:源ip,默认是 src or dstdst
:目的ip,默认是 src or dstport
:端口号, 多个端口号用空格隔开host
指定主机 hostname/ip-w
:写数据到指定目录,可以配合 -G -C 参数使用-G
:指定保存文件的时间,单位为秒, 设置后会自动切换文件-C
:指定保存文件的大小, 设置后会自动切换文件-W
此选项与-C 选项配合使用, 这将限制可打开的文件数目, 并且当文件数据超过这里设置的限制时, 依次循环替代之前的文件, 这相当于一个拥有filecount 个文件的文件缓冲池
-c
- 指定要抓取的包数量。注意,是最终要获取这么多个包。
- 例如,指定"-c 10"将获取10个包,但可能已经处理了100个包,只不过只有10个包是满足条件的包。
举例
tcpdump -i any -w test.cap
抓取所有网卡的数据包到 test.cap 文件
tcpdump -s 0 host 10.1.2.190
抓取指定主机的数据包
tcpdump -i eth0 src 10.1.10.185
抓取指定网卡和源ip的数据包
tcpdump -i eth0 dst 10.1.10.158 and tcp and port ! 22
抓取指定网卡和目的ip的tcp数据包, 排除端口为22的数据包
tcpdump -i eth0 host 10.1.10.158
抓取指定网卡和ip的数据包
tcpdump -i eth0 dst 10.1.10.158 and udp
抓取指定网卡和目的ip的udp数据包
tcpdump -i eth0 tcp and port 554 22
抓取指定网卡和端口的tcp数据包
tcpdump -i eth0 -w 1.cap
抓取指定网卡的数据包并写入到文件
tcpdump -i lo -s 0
抓取本地回环数据包,不限制包长度
tcpdump host foo and not port ftp and not port ftp-data
,这表示筛选的数据包要满足"主机为foo且端口不是ftp(端口21)和ftp-data(端口20)的包
tcpdump -c 10 net 192.168
抓取网络为192.168的数据包,并只抓取10个
tcpdump -c 5 -nn -i eth0 icmp
抓取5个ICMP数据包,并显示端口号
参考文章
有任何问题,请联系:knowledgebao@163.com