文档章节

tcpdump过滤表达式

秋风醉了
 秋风醉了
发布于 2014/10/10 18:12
字数 1430
阅读 128
收藏 0

tcpdump过滤表达式

tcpdump利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。

如果没有给出任何条件,则网络上所有的信息包将会被截获。

以下演示用windump演示。windump需要下载安装。

tcpdump和windump在过滤表达式的语法上有可能不同,没有进行实际的验证。


tcpdump过滤表达式的语法

Protocol(协议)

可能的值: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp

如果没有特别指明是什么协议,则默认使用所有支持的协议


Direction(方向)

可能的值: src, dst, src and dst, src or dst

如果没有特别指明来源或目的地,则默认使用 “src or dst” 作为关键字

例如,”host 10.2.2.2″与”src or dst host 10.2.2.2″是一样的


Host(s)

可能的值: net, port, host, portrange

如果没有指定此值,则默认使用”host”关键字

例如,”src 10.1.1.1″与”src host 10.1.1.1″相同


Logical Operations(逻辑运算)

可能的值:not, and, or

否(“not”)具有最高的优先级。或(“or”)和与(“and”)具有相同的优先级,运算时从左至右进行。

例如,

“not tcp port 3128 and tcp port 23″与”(not tcp port 3128) and tcp port 23″相同。

“not tcp port 3128 and tcp port 23″与”not (tcp port 3128 and tcp port 23)”不同。


host, net, port表明数据包(packet)的类型

一种是关于类型的关键字,主要包括host, net, port。

例如host 210.27.48.2,指明210.27.48.2是一台主机,net 202.0.0.0指明202.0.0.0是一个网络地址,port 23指明端口号是23。

如果没有指定类型,缺省的类型是host。

捕捉210.27.48.1的主机收到的和发出的所有的数据包

D:\soft\windump>windump host 10.255.9.79

输出

windump: listening on \Device\NPF_{B310DB50-3CE0-4EE9-8FB2-2FAB0C95C25E}
15:04:00.272373 IP Lenovo-PC > 218.205.187.57: ICMP echo request, id 1, seq 19362, length 40
15:04:00.279128 IP 218.205.187.57 > Lenovo-PC: ICMP echo reply, id 1, seq 19362, length 40
15:04:00.528084 IP Lenovo-PC.137 > 218.205.187.57.137: UDP, length 50
15:04:00.534355 IP 218.205.187.57 > Lenovo-PC: ICMP 218.205.187.57 udp port 137 unreachable, length
36
.........

捕捉8080端口的数据包

D:\soft\windump>windump port 8080
windump: listening on \Device\NPF_{B310DB50-3CE0-4EE9-8FB2-2FAB0C95C25E}
15:14:17.507424 IP Lenovo-PC.58970 > 112.90.17.179.8080: S 4218824838:4218824838(0) win 8192 <mss 14
60,nop,nop,sackOK>
15:14:17.565358 IP 112.90.17.179.8080 > Lenovo-PC.58970: S 3061885582:3061885582(0) ack 4218824839 w
in 5840 <mss 1380,nop,nop,sackOK>
15:14:17.565415 IP Lenovo-PC.58970 > 112.90.17.179.8080: . ack 1 win 16560


src, dst表明数据包的传输方向

第二种是确定传输方向的关键字,主要包括src, dst, dst or src, dst and src,这些关键字指明了传输的方向。举例说明,

src 210.27.48.2指明ip包中源地址是210.27.48.2 。

dst net 202.0.0.0指明目的网络地址是202.0.0.0 。

如果没有指明方向关键字,则缺省是src or dst关键字。

D:\soft\windump>windump src host 10.255.9.79
windump: listening on \Device\NPF_{B310DB50-3CE0-4EE9-8FB2-2FAB0C95C25E}
15:06:55.351206 IP Lenovo-PC > 218.205.187.57: ICMP echo request, id 1, seq 19537, length 40
15:06:56.294031 IP Lenovo-PC.137 > 218.205.187.57.137: UDP, length 50
15:06:56.352565 IP Lenovo-PC > 218.205.187.57: ICMP echo request, id 1, seq 19538, length 40
15:06:56.616626 IP Lenovo-PC.58531 > ..80: P 3497409587:3497410288(701) ack 4204552782 win 15528
15:06:56.616748 IP Lenovo-PC.58531 > ..80: . 701:2081(1380) ack 1 win 15528
.............

这样也可以

D:\soft\windump>windump src 10.255.9.79
windump: listening on \Device\NPF_{B310DB50-3CE0-4EE9-8FB2-2FAB0C95C25E}
15:25:19.191729 IP Lenovo-PC > 218.205.187.57: ICMP echo request, id 1, seq 20626, length 40
15:25:19.579012 IP Lenovo-PC.137 > 218.205.187.57.137: UDP, length 50


fddi, ip ,arp, rarp, tcp, udp表明协议类型

第三种是协议的关键字,主要包括fddi, ip ,arp, rarp, tcp, udp等类型。fddi指明是在FDDI(分布式光纤数据接口网络)上的特定的网络协议,实际上它是"ether"的别名,fddi和ether具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和分析。

如果没有指定任何协议,则tcpdump将会监听所有协议的信息包。

D:\soft\windump>windump ip
windump: listening on \Device\NPF_{B310DB50-3CE0-4EE9-8FB2-2FAB0C95C25E}
15:21:00.740903 IP Lenovo-PC.59024 > ..80: P 3750843348:3750844049(701) ack 3395671920 win 16388
15:21:00.741032 IP Lenovo-PC.59024 > ..80: . 701:2081(1380) ack 1 win 16388
15:21:00.741036 IP Lenovo-PC.59024 > ..80: . 2081:3461(1380) ack 1 win 16388
..................

这样

D:\soft\windump>windump tcp
windump: listening on \Device\NPF_{B310DB50-3CE0-4EE9-8FB2-2FAB0C95C25E}
15:31:49.098485 IP Lenovo-PC.59363 > ..80: . ack 490083869 win 16044
15:31:53.716766 IP Lenovo-PC.59363 > ..80: P 0:701(701) ack 1 win 16044


windump使用举例

捕捉指定主机和端口的数据包

D:\soft\windump>windump host 10.255.9.79 and port 80
windump: listening on \Device\NPF_{B310DB50-3CE0-4EE9-8FB2-2FAB0C95C25E}
17:32:49.706890 IP Lenovo-PC.52173 > ..80: P 2673414750:2673415452(702) ack 2188041574 win 15528
17:32:49.707020 IP Lenovo-PC.52173 > ..80: . 702:2082(1380) ack 1 win 15528

示例

D:\soft\windump>windump host 10.255.9.79 and tcp port 80
windump: listening on \Device\NPF_{B310DB50-3CE0-4EE9-8FB2-2FAB0C95C25E}
17:34:26.815437 IP Lenovo-PC.52233 > 111.13.100.116.80: R 50176284:50176284(0) ack 2325323249 win 0


ping baidu.com时抓包

抓取从百度主机返回的icmp协议的数据包

D:\soft\windump>windump src host baidu.com and icmp
windump: listening on \Device\NPF_{B310DB50-3CE0-4EE9-8FB2-2FAB0C95C25E}
17:46:48.816422 IP 220.181.111.85 > Lenovo-PC: ICMP echo reply, id 1, seq 28731, length 40
17:46:49.812120 IP 220.181.111.85 > Lenovo-PC: ICMP echo reply, id 1, seq 28733, length 40
17:46:50.805159 IP 220.181.111.85 > Lenovo-PC: ICMP echo reply, id 1, seq 28735, length 40
17:46:51.807633 IP 220.181.111.85 > Lenovo-PC: ICMP echo reply, id 1, seq 28737, length 40


windump列出可抓包的接口

这个命令在本机有多个网卡时非常有用。比如,我的机器装有3块网卡,而我只抓第二块网卡上的包,那么我用windump –D列出机器上所有的网卡,再指定只抓第二块网卡的包,方法如下:

D:\soft\windump>windump -D
1.\Device\NPF_{3B97B5BC-06DF-4652-BDB9-6BE446278EFA} (Realtek PCIe GBE Family Controller)
2.\Device\NPF_{B310DB50-3CE0-4EE9-8FB2-2FAB0C95C25E} (Microsoft)
3.\Device\NPF_{A1124E74-4AD2-4958-A7DE-D82D47A870BD} (Microsoft)

更过细节见:http://fangxin.blog.51cto.com/1125131/735178

注:捕获过程是在数据链路层完成的,并且数据链路首部也包含在被捕获的数据中。

=======END=======

© 著作权归作者所有

秋风醉了
粉丝 252
博文 532
码字总数 405694
作品 0
朝阳
程序员
私信 提问
Linux 基础教程 30-tcpdump命令-2

    在上一节讲了一些tcpdump常用功能,本期我们继续学习tcpdump后续功能。 流量过滤     tcpdump不仅支持单个过滤表达式过滤,也还支持多个过滤表达式。但需要注意的是传入的过滤表达式...

Surpassme
2018/07/30
0
0
tcpdump非常实用的抓包实例

tcpdump非常实用的抓包实例 详细的文档见tcpdump高级过滤技巧 基本语法 ======== 过滤主机 -------- 抓取所有经过 eth1,目的或源地址是 192.168.1.1 的网络数据 tcpdump -i eth1 host 192.1...

_纵横捭阖_
2018/10/17
36
0
嵌入式linux系统的开发——tcpdump网络工具的应用

前言 作为网络开发人员来说Wireshark是最为流行的网络分析工具,可以捕捉网络中的数据报文,提供关于网络协议上的各种信息,一般在PC上的Windows、Linux等平台上应用。在嵌入式linux系统中由...

元宵大师
2018/05/29
0
0
tcpdump详细用法--包括如何打开截获的数据包

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://gosman.blogbus.com/logs/5504841.html 原文:simple usage of tcpdump 作者:mysurface 译者:gosman(lianming...

linhao_214
2011/07/10
0
0
Linux 基础教程 29-tcpdump命令-1

什么是tcpdump     在Linux中输入命令man tcpdump给出的定义如下所示: 是不是感觉很懵?我们用通俗、形象、学术的表达方式来全方位描述tcpdump: 通俗的来说,tcpdump是一个抓包工具,用于...

Surpassme
2018/07/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx+tomcat配置https

1、nginx配置https和【proxy_set_header X-Forwarded-Proto $scheme;】 2、java代码: String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServe......

perofu
28分钟前
4
0
必看的Linux系统新手进阶老手心得

不知道从什么时候起,linux这个话题变得越来越普及,成为大家经常讨论的话题。无论在网络上还是实际生活中,竟然很多人都在纠结学习linux的问题。网络上给的答案千千万万,而却还有很多人踌躇...

Linux就该这么学
31分钟前
4
0
Spring Boot 配置元数据指南

1. 概览 在编写 Spring Boot 应用程序时,将配置属性映射到 Java bean 上是非常有用的。但是,记录这些属性的最好方法是什么呢? 在本教程中,我们将探讨 Spring Boot Configuration Proces...

liululee
35分钟前
3
0
foreach查找子类

$list = $menu_model -> menu_list();$parent_list = [];foreach ($list as $v){ if ($v['pid'] == 0) { $parent = $v; foreach ($list as $v1) ......

小小小壮
46分钟前
3
0
基于 HTML5 Canvas 实现的 TP-LINK 电信拓扑设备面板

前言 今天我们以真实的 TP-LINK 设备面板为模型,完成设备面板的搭建,和指示灯的闪烁和图元流动。 先来目睹下最终的实现效果:http://www.hightopo.com/demo/blog_tplink_20170511/index.h...

htdaydayup
52分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部