tcpdump - dump traffic on a network

tcpdump - dump traffic on a network

tcpdump是一个用于截取网络分组,并输出分组内容的工具。凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具。
tcpdump 支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

参数

tcpdump [ -AbdDefhHIJKlLnNOpqRStuUvxX# ] [ -B buffer_size ] [ -c count ] [ -C file_size ] [ -G rotate_seconds ] [ -F file ] [ -i interface ] [ -j tstamp_type ] [ -k (metadata_arg) ] [ -m module ] [ -M secret ] [ --number ] [ -r file ] [ -V file ] [ -s snaplen ] [ -T type ] [ -w file ] [ -W filecount ] [ -E spi@ipaddr algo:secret,… ] [ -y datalinktype ] [ -z postrotate-command ] [ -Z user ] [ -Q packet-metadata-filter ] [ --immediate-mode ] [ --version ] [ expression ]

-c:指定要抓取的包数量。

-i interface:指定tcpdump需要监听的接口。默认会抓取第一个网络接口。

-n:对地址以数字方式显式,否则显式为主机名,也就是说-n选项不做主机名解析。

-nn:除了-n的作用外,还把端口显示为数值,否则显示端口服务名。

-P:指定要抓取的包是流入还是流出的包。可以给定的值为"in"、“out"和"inout”,默认为"inout"。

-s len:设置tcpdump的数据包抓取长度为len,如果不设置默认将会是65535字节。对于要抓取的数据包较大时,长度设置不够可能会产生包截断,若出现包截断,输出行中会出现"[|proto]"的标志(proto实际会显示为协议名)。但是抓取len越长,包的处理时间越长,并且会减少tcpdump可缓存的数据包的数量,从而会导致数据包的丢失,所以在能抓取我们想要的包的前提下,抓取长度越小越好。

-e:输出的每行中都将包括数据链路层头部信息,例如源MAC和目标MAC。

-q:快速打印输出。即打印很少的协议相关信息,从而输出行都比较简短。

-X:输出包的头部数据,会以16进制和ASCII两种方式同时输出。
-XX:输出包的头部数据,会以16进制和ASCII两种方式同时输出,更详细。

-v:当分析和打印的时候,产生详细的输出。
-vv:产生比-v更详细的输出。
-vvv:产生比-vv更详细的输出。

-D:列出可用于抓包的接口。将会列出接口的数值编号和接口名,它们都可以用于"-i"后。

-F:从文件中读取抓包的表达式。若使用该选项,则命令行中给定的其他表达式都将失效。

-w:将抓包数据输出到文件中而不是标准输出。可以同时配合"-G

time"选项使得输出文件每time秒就自动切换到另一个文件。可通过"-r"选项载入这些文件以进行分析和打印。

-r:从给定的数据包文件中读取数据。使用"-"表示从标准输入中读取。

expression 表达式

一个基本的表达式单元格式为"proto dir type ID"

对于表达式语法,参考 pcap-filter 【pcap-filter - packet filter syntax】

类型 type :host, net, port, portrange

例如:host 192.168.201.128 , net 128.3, port 20, portrange 6000-6008’

目标 dir :src, dst, src or dst, src and dst

协议 proto :tcp, udp , icmp,若未给定协议类型,则匹配所有可能的类型

表达式单元之间可以使用操作符" and / && / or / || / not / ! “进行连接,从而组成复杂的条件表达式==。如"host foo and not port ftp and not port ftp-data”,这表示筛选的数据包要满足"主机为foo且端口不是ftp(端口21)和ftp-data(端口20)的包",常用端口和名字的对应关系可在linux系统中的/etc/service文件中找到。

另外,同样的修饰符可省略,如"tcp dst port ftp or ftp-data or domain"与"tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain"意义相同,都表示包的协议为tcp且目的端口为ftp或ftp-data或domain(端口53)。

使用括号"()“可以改变表达式的优先级,但需要注意的是括号会被shell解释,所以应该使用反斜线”“转义为”()",在需要的时候,还需要包围在引号中。

举个例子:

tcpdump -c 1
// 抓一个包

192:~ root# tcpdump -c 1        
tcpdump: data link type PKTAP
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on pktap, link-type PKTAP (Packet Tap), capture size 262144 bytes
23:15:26.385086 IP 192.168.0.101.55458 > 140.143.49.61.https: Flags [F.], seq 545493183, ack 627072194, win 8192, length 0

1 packet captured
6 packets received by filter
0 packets dropped by kernel

tcpdump -vv -c 1
// for full protocol decode

192:~ root# tcpdump -vv -c 1
tcpdump: data link type PKTAP
tcpdump: listening on pktap, link-type PKTAP (Packet Tap), capture size 262144 bytes
23:16:41.850224 IP (tos 0x0, ttl 64, id 55484, offset 0, flags [DF], proto TCP (6), length 345)
    192.168.0.101.55401 > 17.57.145.100.5223: Flags [P.], cksum 0x1c17 (correct), seq 2226175619:2226175912, ack 3614834776, win 4096, options [nop,nop,TS val 474684121 ecr 2903586776], length 293

1 packet captured
24 packets received by filter
0 packets dropped by kernel

tcpdump -vv -x -c 1
// 16进制内容

192:~ root# tcpdump -vv -x -c 1
tcpdump: data link type PKTAP
tcpdump: listening on pktap, link-type PKTAP (Packet Tap), capture size 262144 bytes
23:17:09.582838 IP (tos 0x0, ttl 64, id 51958, offset 0, flags [DF], proto TCP (6), length 345)
    192.168.0.101.55401 > 17.57.145.100.5223: Flags [P.], cksum 0xaff5 (correct), seq 2226175619:2226175912, ack 3614834776, win 4096, options [nop,nop,TS val 474711802 ecr 2903586776], length 293
	0x0000:  94d9 b3fa 12fa c4b3 0194 f53a 0800 4500
	0x0010:  0159 caf6 4000 4006 0afe c0a8 0065 1139
	0x0020:  9164 d869 1467 84b0 be83 d776 0058 8018
	0x0030:  1000 aff5 0000 0101 080a 1c4b 86fa ad11
	0x0040:  37d8 1703 0301 2013 07b2 f6c0 9f08 01f8
	0x0050:  6571 32ca 053a 9559 3660 0df9 2337 364d
	0x0060:  551a 39a8 6f13 0be2 7e2a b50e e9a1 412e
	0x0070:  7d5a 3c53 0f4c 6443 2d52 27d9 7d30 1deb
	0x0080:  2686 467c 1118 863e cbd0 ec97 e27d 454d
	0x0090:  924b f81e 1ea6 fd69 ce70 e375 e03c fed0
	0x00a0:  06c5 6429 94e1 1bbf 53b6 8d48 4cf4 77b7
	0x00b0:  6e6b 0a33 4a15 a85a d787 e3d2 e7fd ffe4
	0x00c0:  eba2 7453 dc29 369a 81a2 a21a 1809 d349
	0x00d0:  2e86 d7ba 9c45 eb1c 68c5 e8e2 f858 84f1
	0x00e0:  f1c7 e203 952e a190 3107 40d3 6151 e177
	0x00f0:  5d2b 5dac 99af d83a 4ea2 cfe2 9022 d764
	0x0100:  3ce7 fffd 8324 56dd 3885 c2a4 f9d4 5c89
	0x0110:  a0b5 02a3 3408 b68f a1a5 e831 5a74 2e16
	0x0120:  478b 6026 60be 152d 346b 9fd2 41e2 9877
	0x0130:  27d4 440d a3df c103 6403 b798 0135 c236
	0x0140:  5ffe 2da0 404a a6e8 b0ab 40c6 5b5c 8b9e
	0x0150:  d812 c307 07f6 80cf 248a 81f5 de7e 1a8b
	0x0160:  4784 dc22 127c 8b

1 packet captured
3 packets received by filter
0 packets dropped by kernel

tcpdump -vv -X -c 1
// ASCII码内容

192:~ root# tcpdump -vv -X -c 1
tcpdump: data link type PKTAP
tcpdump: listening on pktap, link-type PKTAP (Packet Tap), capture size 262144 bytes
23:17:17.733636 IP (tos 0x0, ttl 64, id 42862, offset 0, flags [DF], proto TCP (6), length 153)
    192.168.0.101.55566 > 17.57.145.101.5223: Flags [P.], cksum 0x585b (correct), seq 995708955:995709056, ack 4188798093, win 4096, options [nop,nop,TS val 474719933 ecr 2904219550], length 101
	0x0000:  94d9 b3fa 12fa c4b3 0194 f53a 0800 4500  ...........:..E.
	0x0010:  0099 a76e 4000 4006 2f45 c0a8 0065 1139  ...n@.@./E...e.9
	0x0020:  9165 d90e 1467 3b59 501b f9ab fc8d 8018  .e...g;YP.......
	0x0030:  1000 585b 0000 0101 080a 1c4b a6bd ad1a  ..X[.......K....
	0x0040:  df9e 1703 0300 60bb 8f1d 4d18 da1c f234  ......`...M....4
	0x0050:  5e3a 0112 1058 d3be c4ec a070 9948 29d0  ^:...X.....p.H).
	0x0060:  a49a b678 b181 9489 5c25 51e4 5216 93f6  ...x....\%Q.R...
	0x0070:  7686 3952 3c5e 0cb7 ede6 e354 bc6a 8001  v.9R<^.....T.j..
	0x0080:  4be4 b6de c845 42a2 78cc 55a9 6ace f619  K....EB.x.U.j...
	0x0090:  6626 58d3 0891 c602 2048 60be 74f1 ec16  f&X......H`.t...
	0x00a0:  d069 2e55 7013 05                        .i.Up..

1 packet captured
26 packets received by filter
0 packets dropped by kernel
发布了78 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/LU_ZHAO/article/details/104348088