`
gaojingsong
  • 浏览: 1200951 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【Linux之Tcpdump】

阅读更多

 

TcpDump可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

 

命令格式

tcpdump采用命令行方式,它的命令格式为:

tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ]

[ -i 网络接口 ] [ -r 文件名] [ -s snaplen ]

[ -T 类型 ] [ -w 文件名 ] [表达式 ]

1. tcpdump的选项介绍

-a:尝试将网络和广播地址转换成名称;
-c<数据包数目>:收到指定的数据包数目后,就停止进行倾倒操作;
-d:把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出;
-dd:把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出;
-ddd:把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出;
-e:在每列倾倒资料上显示连接层级的文件头;
-f:用数字显示网际网络地址;
-F<表达文件>:指定内含表达方式的文件;
-i<网络界面>:使用指定的网络截面送出数据包;
-l:使用标准输出列的缓冲区;
-n:不把主机的网络地址转换成名字;
-N:不列出域名;
-O:不将数据包编码最佳化;
-p:不让网络界面进入混杂模式;
-q :快速输出,仅列出少数的传输协议信息;
-r<数据包文件>:从指定的文件读取数据包数据;
-s<数据包大小>:设置每个数据包的大小;
-S:用绝对而非相对数值列出TCP关联数;
-t:在每列倾倒资料上不显示时间戳记;
-tt: 在每列倾倒资料上显示未经格式化的时间戳记;
-T<数据包类型>:强制将表达方式所指定的数据包转译成设置的数据包类型;
-v:详细显示指令执行过程;
-vv:更详细显示指令执行过程;
-x:用十六进制字码列出数据包资料;
-w<数据包文件>:把数据包数据写入指定的文件。

 

 

tcpdump示例

(1).默认启动

tcpdump

默认情况下,直接启动tcpdump将监视第一个网络接口(非lo口)上所有流通的数据包。这样抓取的结果会非常多,滚动非常快。

(2).监视指定网络接口的数据包

tcpdump -i eth1

如果不指定网卡,默认tcpdump只会监视第一个网络接口,如eth0。

(3).监视指定主机的数据包,例如所有进入或离开longshuai的数据包

tcpdump host longshuai

(4).打印helios<-->hot或helios<-->ace之间通信的数据包

tcpdump host helios and \( hot or ace \)

(5).打印ace与任何其他主机之间通信的IP数据包,但不包括与helios之间的数据包

tcpdump ip host ace and not helios

(6).截获主机hostname发送的所有数据

tcpdump src host hostname

(7).监视所有发送到主机hostname的数据包

tcpdump dst host hostname

(8).监视指定主机和端口的数据包

tcpdump tcp port 22 and host hostname

(9).对本机的udp 123端口进行监视(123为ntp的服务端口)

tcpdump udp port 123

(10).监视指定网络的数据包,如本机与192.168网段通信的数据包,"-c 10"表示只抓取10个包

tcpdump -c 10 net 192.168

(11).打印所有通过网关snup的ftp数据包(注意,表达式被单引号括起来了,这可以防止shell对其中的括号进行错误解析)

shell> tcpdump 'gateway snup and (port ftp or ftp-data)'

(12).抓取ping包

[root@server2 ~]# tcpdump -c 5 -nn -i eth0 icmp 

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
12:11:23.273638 IP 192.168.100.70 > 192.168.100.62: ICMP echo request, id 16422, seq 10, length 64
12:11:23.273666 IP 192.168.100.62 > 192.168.100.70: ICMP echo reply, id 16422, seq 10, length 64
12:11:24.356915 IP 192.168.100.70 > 192.168.100.62: ICMP echo request, id 16422, seq 11, length 64
12:11:24.356936 IP 192.168.100.62 > 192.168.100.70: ICMP echo reply, id 16422, seq 11, length 64
12:11:25.440887 IP 192.168.100.70 > 192.168.100.62: ICMP echo request, id 16422, seq 12, length 64
5 packets captured
6 packets received by filter
0 packets dropped by kernel

如果明确要抓取主机为192.168.100.70对本机的ping,则使用and操作符。

[root@server2 ~]# tcpdump -c 5 -nn -i eth0 icmp and src 192.168.100.62

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
12:09:29.957132 IP 192.168.100.70 > 192.168.100.62: ICMP echo request, id 16166, seq 1, length 64
12:09:31.041035 IP 192.168.100.70 > 192.168.100.62: ICMP echo request, id 16166, seq 2, length 64
12:09:32.124562 IP 192.168.100.70 > 192.168.100.62: ICMP echo request, id 16166, seq 3, length 64
12:09:33.208514 IP 192.168.100.70 > 192.168.100.62: ICMP echo request, id 16166, seq 4, length 64
12:09:34.292222 IP 192.168.100.70 > 192.168.100.62: ICMP echo request, id 16166, seq 5, length 64
5 packets captured
5 packets received by filter
0 packets dropped by kernel

注意不能直接写icmp src 192.168.100.70,因为icmp协议不支持直接应用host这个type。

(13).抓取到本机22端口包

[root@server2 ~]# tcpdump -c 10 -nn -i eth0 tcp dst port 22  

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
12:06:57.574293 IP 192.168.100.1.5788 > 192.168.100.62.22: Flags [.], ack 535528834, win 2053, length 0
12:06:57.629125 IP 192.168.100.1.5788 > 192.168.100.62.22: Flags [.], ack 193, win 2052, length 0
12:06:57.684688 IP 192.168.100.1.5788 > 192.168.100.62.22: Flags [.], ack 385, win 2051, length 0
12:06:57.738977 IP 192.168.100.1.5788 > 192.168.100.62.22: Flags [.], ack 577, win 2050, length 0
12:06:57.794305 IP 192.168.100.1.5788 > 192.168.100.62.22: Flags [.], ack 769, win 2050, length 0
12:06:57.848720 IP 192.168.100.1.5788 > 192.168.100.62.22: Flags [.], ack 961, win 2049, length 0
12:06:57.904057 IP 192.168.100.1.5788 > 192.168.100.62.22: Flags [.], ack 1153, win 2048, length 0
12:06:57.958477 IP 192.168.100.1.5788 > 192.168.100.62.22: Flags [.], ack 1345, win 2047, length 0
12:06:58.014338 IP 192.168.100.1.5788 > 192.168.100.62.22: Flags [.], ack 1537, win 2053, length 0
12:06:58.069361 IP 192.168.100.1.5788 > 192.168.100.62.22: Flags [.], ack 1729, win 2052, length 0
10 packets captured
10 packets received by filter
0 packets dropped by kernel

(14).解析包数据

[root@server2 ~]# tcpdump -c 2 -q -XX -vvv -nn -i eth0 tcp dst port 22
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
12:15:54.788812 IP (tos 0x0, ttl 64, id 19303, offset 0, flags [DF], proto TCP (6), length 40)
    192.168.100.1.5788 > 192.168.100.62.22: tcp 0
        0x0000:  000c 2908 9234 0050 56c0 0008 0800 4500  ..)..4.PV.....E.
        0x0010:  0028 4b67 4000 4006 a5d8 c0a8 6401 c0a8  .(Kg@.@.....d...
        0x0020:  643e 169c 0016 2426 5fd6 1fec 2b62 5010  d>....$&_...+bP.
        0x0030:  0803 7844 0000 0000 0000 0000            ..xD........
12:15:54.842641 IP (tos 0x0, ttl 64, id 19304, offset 0, flags [DF], proto TCP (6), length 40)
    192.168.100.1.5788 > 192.168.100.62.22: tcp 0
        0x0000:  000c 2908 9234 0050 56c0 0008 0800 4500  ..)..4.PV.....E.
        0x0010:  0028 4b68 4000 4006 a5d7 c0a8 6401 c0a8  .(Kh@.@.....d...
        0x0020:  643e 169c 0016 2426 5fd6 1fec 2d62 5010  d>....$&_...-bP.
        0x0030:  0801 7646 0000 0000 0000 0000            ..vF........
2 packets captured
2 packets received by filter
0 packets dropped by kernel

总的来说,tcpdump对基本的数据包抓取方法还是较简单的。只要掌握有限的几个选项(-nn -XX -vvv -i -c -q),再组合表达式即可。

0
0
分享到:
评论

相关推荐

    适用于ARMv5 Linux的tcpdump程序,静态编译

    适用于ARMv5 Linux的tcpdump。。 那个著名的抓包程序~ 静态编译~

    linux离线安装tcpdump

    里面附有安装文档(亲测可用)

    Linux下tcpdump使用

    `tcpdump` 是 Linux 系统中一个强大的网络封包分析工具,它能够捕获网络上的数据包并进行分析,对于网络故障排查和网络安全监控非常有用。本篇将详细介绍 `tcpdump` 的使用方法,包括基本命令格式、捕获控制参数、包...

    arm linux tcpdump

    标题中的“arm linux tcpdump”指的是在基于ARM架构的Linux系统上使用的tcpdump工具。Tcpdump是一个强大的网络分析工具,广泛用于抓取、查看和分析网络封包,它可以帮助我们理解网络流量,诊断网络问题,或者进行...

    linux的抓包程序tcpdump及其依赖

    Linux的抓包程序tcpdump是网络诊断和分析的重要工具,它允许系统管理员或开发者捕获网络上的数据包,以便分析网络通信的问题、监控网络活动或者进行安全审计。tcpdump能够解析并显示各种网络协议的数据包详细信息,...

    Linux-TCPDUMP详解.doc

    Linux中的TCPDUMP是一款强大的网络数据包分析工具,主要用于网络监控和故障排查。TCPDUMP允许用户捕获网络上的数据包并对其进行分析,其功能包括网络层、协议、主机、网络或端口的过滤,提供了丰富的逻辑语句(如and...

    Linux網絡封包(抓包)分析工具_Linux_tcpdump_wireshark.zip

    Linux網絡封包(抓包)分析工具_Linux_tcpdump_wireshark

    Linux tcpdump命令详解.docx

    ### Linux tcpdump命令详解 #### 一、简介 tcpdump是一款功能强大的网络数据包抓取与分析工具,广泛应用于Linux系统中。它能够捕获网络中传输的数据包头部信息,并支持用户自定义过滤条件,从而筛选出需要关注的...

    Linux-tcpdump命令详细讲解.doc

    Linux tcpdump 命令详解 tcpdump 是一个功能强大的网络数据包嗅探工具,能够对网络中的数据包进行截获和分析。它支持对网络层、协议、主机、网络或端口的过滤,并提供 and、or、not 等逻辑语句来帮助用户过滤无用的...

    Tcpdump抓包工具免安装版v4.5.1

    Tcpdump 4.5.1版本,解压后是一个二进制可执行文件,不需要任何编译和安装,可以直接执行,上传Linux环境解压即可使用: root@admin:/tmp# ./tcpdump -help tcpdump version 4.5.1 libpcap version 1.5.3 Usage: ...

    linux 抓包工具---Tcpdump

    Linux中的Tcpdump是一款强大的网络封包分析软件,主要用于抓取在网络接口上传输的数据包,以供分析网络流量和诊断问题。Tcpdump的核心功能是实时监控网络接口,通过灵活的过滤规则,用户可以选择性地捕获特定类型的...

    Linux系统之Tcpdump抓包常见举例分析.docx

    Tcpdump 命令参数详解与实践应用 Tcpdump 是一个功能强大且灵活的网络嗅探器,可以嗅探网络流量,抓取数据包,并对其进行分析。Tcpdump 的常见参数和命令格式将在下文中进行详细介绍。 Tcpdump 的常见参数 ...

    linux-利用tcpdump抓包和awk处理写的基于端口的流量统计

    在Linux系统中,我们可以使用以下命令来启动tcpdump并捕获指定端口的数据包: ```bash tcpdump -i interface -nn port port_number ``` 这里的`interface`是指你要监听的网络接口(如eth0、wlan0等),`-nn`选项...

    linux-tcpdump(中文)手册(上).pdf

    《Linux-tcpdump(中文)手册(上)》是一份详细介绍tcpdump工具的文档,旨在帮助用户理解和使用这个强大的网络数据包分析工具。tcpdump能够捕获并分析网络接口上的数据流,根据指定的布尔表达式筛选出感兴趣的数据包。 ...

    tcpdump 源代码安装包

    在Linux或类Unix操作系统上,tcpdump是标准的网络诊断工具,能够帮助用户深入理解网络流量,查找网络问题,或者进行安全审计。 tcpdump的源代码安装包提供了一个自定义编译和配置的机会,这对于特定环境下的优化或...

    Tcpdump命令的使用与示例—linux下的网络分析

    ### Tcpdump命令的使用与示例—Linux下的网络分析 #### 知识点一:Tcpdump简介 **Tcpdump** 是一款广泛应用于Linux系统中的网络数据包捕获工具,能够实时捕捉并显示网络中传输的数据包头部信息。该工具不仅支持...

    Linux中tcpdump命令实例详解

    Linux中的tcpdump命令是一个强大的网络数据包分析工具,主要用于在网络层截取并分析网络通信数据。这个命令允许用户根据特定的条件过滤数据包,以便更好地理解网络流量和诊断网络问题。tcpdump支持多种协议和过滤...

    tcpdump-3.9.5.tar.tar.rar_linux 流量_tcpdump tar.gz_tcpdump-3.9.5.

    一个在LINUX上很好用的工具,查看网络流量.附加了源文件,可以参考.文件最后的RAR扩展名直接可以去掉.

Global site tag (gtag.js) - Google Analytics