|
1 |
| -tcpdump |
2 |
| -=== |
3 |
| - |
4 |
| -一款sniffer工具 |
5 |
| - |
6 |
| -## 补充说明 |
7 |
| - |
8 |
| -**tcpdump命令** 是一款sniffer工具,它可以打印所有经过网络接口的数据包的头信息,也可以使用`-w`选项将数据包保存到文件中,方便以后分析。 |
9 |
| - |
10 |
| -### 语法 |
11 |
| - |
12 |
| -``` |
13 |
| -tcpdump(选项) |
14 |
| -``` |
15 |
| - |
16 |
| -### 选项 |
17 |
| - |
18 |
| -``` |
19 |
| --a:尝试将网络和广播地址转换成名称; |
20 |
| --c<数据包数目>:收到指定的数据包数目后,就停止进行倾倒操作; |
21 |
| --d:把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出; |
22 |
| --dd:把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出; |
23 |
| --ddd:把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出; |
24 |
| --e:在每列倾倒资料上显示连接层级的文件头; |
25 |
| --f:用数字显示网际网络地址; |
26 |
| --F<表达文件>:指定内含表达方式的文件; |
27 |
| --i<网络界面>:使用指定的网络截面送出数据包; |
28 |
| --l:使用标准输出列的缓冲区; |
29 |
| --n:不把主机的网络地址转换成名字; |
30 |
| --N:不列出域名; |
31 |
| --O:不将数据包编码最佳化; |
32 |
| --p:不让网络界面进入混杂模式; |
33 |
| --q :快速输出,仅列出少数的传输协议信息; |
34 |
| --r<数据包文件>:从指定的文件读取数据包数据; |
35 |
| --s<数据包大小>:设置每个数据包的大小; |
36 |
| --S:用绝对而非相对数值列出TCP关联数; |
37 |
| --t:在每列倾倒资料上不显示时间戳记; |
38 |
| --tt: 在每列倾倒资料上显示未经格式化的时间戳记; |
39 |
| --T<数据包类型>:强制将表达方式所指定的数据包转译成设置的数据包类型; |
40 |
| --v:详细显示指令执行过程; |
41 |
| --vv:更详细显示指令执行过程; |
42 |
| --x:用十六进制字码列出数据包资料; |
43 |
| --w<数据包文件>:把数据包数据写入指定的文件。 |
44 |
| -``` |
45 |
| - |
46 |
| -### 实例 |
47 |
| - |
48 |
| - **直接启动tcpdump将监视第一个网络接口上所有流过的数据包** |
49 |
| - |
50 |
| -``` |
51 |
| -tcpdump |
52 |
| -``` |
53 |
| - |
54 |
| - **监视指定网络接口的数据包** |
55 |
| - |
56 |
| -``` |
57 |
| -tcpdump -i eth1 |
58 |
| -``` |
59 |
| - |
60 |
| -如果不指定网卡,默认tcpdump只会监视第一个网络接口,一般是eth0,下面的例子都没有指定网络接口。 |
61 |
| - |
62 |
| - **监视指定主机的数据包** |
63 |
| - |
64 |
| -打印所有进入或离开sundown的数据包。 |
65 |
| - |
66 |
| -``` |
67 |
| -tcpdump host sundown |
68 |
| -``` |
69 |
| - |
70 |
| -也可以指定ip,例如截获所有210.27.48.1 的主机收到的和发出的所有的数据包 |
71 |
| - |
72 |
| -``` |
73 |
| -tcpdump host 210.27.48.1 |
74 |
| -``` |
75 |
| - |
76 |
| -打印helios 与 hot 或者与 ace 之间通信的数据包 |
77 |
| - |
78 |
| -``` |
79 |
| -tcpdump host helios and \( hot or ace \) |
80 |
| -``` |
81 |
| - |
82 |
| -截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信 |
83 |
| - |
84 |
| -``` |
85 |
| -tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \) |
86 |
| -``` |
87 |
| - |
88 |
| -打印ace与任何其他主机之间通信的IP 数据包, 但不包括与helios之间的数据包. |
89 |
| - |
90 |
| -``` |
91 |
| -tcpdump ip host ace and not helios |
92 |
| -``` |
93 |
| - |
94 |
| -如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令: |
95 |
| - |
96 |
| -``` |
97 |
| -tcpdump ip host 210.27.48.1 and ! 210.27.48.2 |
98 |
| -``` |
99 |
| - |
100 |
| -截获主机hostname发送的所有数据 |
101 |
| - |
102 |
| -``` |
103 |
| -tcpdump -i eth0 src host hostname |
104 |
| -``` |
105 |
| - |
106 |
| -监视所有送到主机hostname的数据包 |
107 |
| - |
108 |
| -``` |
109 |
| -tcpdump -i eth0 dst host hostname |
110 |
| -``` |
111 |
| - |
112 |
| - **监视指定主机和端口的数据包** |
113 |
| - |
114 |
| -如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令 |
115 |
| - |
116 |
| -``` |
117 |
| -tcpdump tcp port 23 host 210.27.48.1 |
118 |
| -``` |
119 |
| - |
120 |
| -对本机的udp 123 端口进行监视 123 为ntp的服务端口 |
121 |
| - |
122 |
| -``` |
123 |
| -tcpdump udp port 123 |
124 |
| -``` |
125 |
| - |
126 |
| - **监视指定网络的数据包** |
127 |
| - |
128 |
| -打印本地主机与Berkeley网络上的主机之间的所有通信数据包 |
129 |
| - |
130 |
| -``` |
131 |
| -tcpdump net ucb-ether |
132 |
| -``` |
133 |
| - |
134 |
| -ucb-ether此处可理解为“Berkeley网络”的网络地址,此表达式最原始的含义可表达为:打印网络地址为ucb-ether的所有数据包 |
135 |
| - |
136 |
| -打印所有通过网关snup的ftp数据包 |
137 |
| - |
138 |
| -``` |
139 |
| -tcpdump 'gateway snup and (port ftp or ftp-data)' |
140 |
| -``` |
141 |
| - |
142 |
| -注意:表达式被单引号括起来了,这可以防止shell对其中的括号进行错误解析 |
143 |
| - |
144 |
| -打印所有源地址或目标地址是本地主机的IP数据包 |
145 |
| - |
146 |
| -``` |
147 |
| -tcpdump ip and not net localnet |
148 |
| -``` |
149 |
| - |
150 |
| -如果本地网络通过网关连到了另一网络,则另一网络并不能算作本地网络。 |
151 |
| - |
152 |
| - |
153 |
| -<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ --> |
| 1 | +tcpdump |
| 2 | +=== |
| 3 | + |
| 4 | +一款sniffer工具,是Linux上的抓包工具,嗅探器。 |
| 5 | + |
| 6 | +## 补充说明 |
| 7 | + |
| 8 | +**tcpdump命令** 是一款抓包,嗅探器工具,它可以打印所有经过网络接口的数据包的头信息,也可以使用`-w`选项将数据包保存到文件中,方便以后分析。 |
| 9 | + |
| 10 | +### 语法 |
| 11 | + |
| 12 | +``` |
| 13 | +tcpdump(选项) |
| 14 | +``` |
| 15 | + |
| 16 | +### 选项 |
| 17 | + |
| 18 | +``` |
| 19 | +-a:尝试将网络和广播地址转换成名称; |
| 20 | +-c<数据包数目>:收到指定的数据包数目后,就停止进行倾倒操作; |
| 21 | +-d:把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出; |
| 22 | +-dd:把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出; |
| 23 | +-ddd:把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出; |
| 24 | +-e:在每列倾倒资料上显示连接层级的文件头; |
| 25 | +-f:用数字显示网际网络地址; |
| 26 | +-F<表达文件>:指定内含表达方式的文件; |
| 27 | +-i<网络界面>:使用指定的网络截面送出数据包; |
| 28 | +-l:使用标准输出列的缓冲区; |
| 29 | +-n:不把主机的网络地址转换成名字; |
| 30 | +-N:不列出域名; |
| 31 | +-O:不将数据包编码最佳化; |
| 32 | +-p:不让网络界面进入混杂模式; |
| 33 | +-q :快速输出,仅列出少数的传输协议信息; |
| 34 | +-r<数据包文件>:从指定的文件读取数据包数据; |
| 35 | +-s<数据包大小>:设置每个数据包的大小; |
| 36 | +-S:用绝对而非相对数值列出TCP关联数; |
| 37 | +-t:在每列倾倒资料上不显示时间戳记; |
| 38 | +-tt: 在每列倾倒资料上显示未经格式化的时间戳记; |
| 39 | +-T<数据包类型>:强制将表达方式所指定的数据包转译成设置的数据包类型; |
| 40 | +-v:详细显示指令执行过程; |
| 41 | +-vv:更详细显示指令执行过程; |
| 42 | +-x:用十六进制字码列出数据包资料; |
| 43 | +-w<数据包文件>:把数据包数据写入指定的文件。 |
| 44 | +``` |
| 45 | + |
| 46 | +### 实例 |
| 47 | + |
| 48 | + **直接启动tcpdump将监视第一个网络接口上所有流过的数据包** |
| 49 | + |
| 50 | +``` |
| 51 | +tcpdump |
| 52 | +``` |
| 53 | + |
| 54 | + **监视指定网络接口的数据包** |
| 55 | + |
| 56 | +``` |
| 57 | +tcpdump -i eth1 |
| 58 | +``` |
| 59 | + |
| 60 | +如果不指定网卡,默认tcpdump只会监视第一个网络接口,一般是eth0,下面的例子都没有指定网络接口。 |
| 61 | + |
| 62 | + **监视指定主机的数据包** |
| 63 | + |
| 64 | +打印所有进入或离开sundown的数据包。 |
| 65 | + |
| 66 | +``` |
| 67 | +tcpdump host sundown |
| 68 | +``` |
| 69 | + |
| 70 | +也可以指定ip,例如截获所有210.27.48.1 的主机收到的和发出的所有的数据包 |
| 71 | + |
| 72 | +``` |
| 73 | +tcpdump host 210.27.48.1 |
| 74 | +``` |
| 75 | + |
| 76 | +打印helios 与 hot 或者与 ace 之间通信的数据包 |
| 77 | + |
| 78 | +``` |
| 79 | +tcpdump host helios and \( hot or ace \) |
| 80 | +``` |
| 81 | + |
| 82 | +截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信 |
| 83 | + |
| 84 | +``` |
| 85 | +tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \) |
| 86 | +``` |
| 87 | + |
| 88 | +打印ace与任何其他主机之间通信的IP 数据包, 但不包括与helios之间的数据包. |
| 89 | + |
| 90 | +``` |
| 91 | +tcpdump ip host ace and not helios |
| 92 | +``` |
| 93 | + |
| 94 | +如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令: |
| 95 | + |
| 96 | +``` |
| 97 | +tcpdump ip host 210.27.48.1 and ! 210.27.48.2 |
| 98 | +``` |
| 99 | + |
| 100 | +抓取eth0网卡上的包,使用: |
| 101 | + |
| 102 | +``` |
| 103 | +sudo tcpdump -i eth0 |
| 104 | +``` |
| 105 | + |
| 106 | +截获主机hostname发送的所有数据 |
| 107 | + |
| 108 | +``` |
| 109 | +tcpdump -i eth0 src host hostname |
| 110 | +``` |
| 111 | + |
| 112 | +监视所有送到主机hostname的数据包 |
| 113 | + |
| 114 | +``` |
| 115 | +tcpdump -i eth0 dst host hostname |
| 116 | +``` |
| 117 | + |
| 118 | + **监视指定主机和端口的数据包** |
| 119 | + |
| 120 | +如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令 |
| 121 | + |
| 122 | +``` |
| 123 | +tcpdump tcp port 23 host 210.27.48.1 |
| 124 | +``` |
| 125 | + |
| 126 | +对本机的udp 123 端口进行监视 123 为ntp的服务端口 |
| 127 | + |
| 128 | +``` |
| 129 | +tcpdump udp port 123 |
| 130 | +``` |
| 131 | + |
| 132 | + **监视指定网络的数据包** |
| 133 | + |
| 134 | +打印本地主机与Berkeley网络上的主机之间的所有通信数据包 |
| 135 | + |
| 136 | +``` |
| 137 | +tcpdump net ucb-ether |
| 138 | +``` |
| 139 | + |
| 140 | +ucb-ether此处可理解为“Berkeley网络”的网络地址,此表达式最原始的含义可表达为:打印网络地址为ucb-ether的所有数据包 |
| 141 | + |
| 142 | +打印所有通过网关snup的ftp数据包 |
| 143 | + |
| 144 | +``` |
| 145 | +tcpdump 'gateway snup and (port ftp or ftp-data)' |
| 146 | +``` |
| 147 | + |
| 148 | +注意:表达式被单引号括起来了,这可以防止shell对其中的括号进行错误解析 |
| 149 | + |
| 150 | +打印所有源地址或目标地址是本地主机的IP数据包 |
| 151 | + |
| 152 | +``` |
| 153 | +tcpdump ip and not net localnet |
| 154 | +``` |
| 155 | + |
| 156 | +如果本地网络通过网关连到了另一网络,则另一网络并不能算作本地网络。 |
| 157 | + |
| 158 | +抓取80端口的HTTP报文,以文本形式展示: |
| 159 | + |
| 160 | +```bash |
| 161 | +sudo tcpdump -i any port 80 -A |
| 162 | +``` |
| 163 | + |
| 164 | + |
| 165 | +<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ --> |
0 commit comments