做应用识别这一块经常要对应用产生的数据流量进行分析。

抓包采用wireshark,提取特征时,要对session进行过滤,找到关键的stream,这里总结了wireshark过滤的基本语法,供自己以后参考。(脑子记不住东西)

wireshark进行过滤时,按照过滤的语法可分为协议过滤和内容过滤。

对标准协议,既支持粗粒度的过滤如HTTP,也支持细粒度的、依据协议属性值进行的过滤如tcp.port==53、http.request.method=="GET"。

对内容的过滤,既支持深度的字符串匹配过滤如http contains "Server",也支持特定偏移处值的匹配过滤如tcp[20:3] == 47:45:54。

wireshark有两种过滤器:

捕捉过滤器(CaptureFilters):用于决定将什么样的信息记录在捕捉结果中。
显示过滤器(DisplayFilters):用于在捕捉结果中进行详细查找。

捕捉过滤器在抓抱前进行设置,决定抓取怎样的数据;显示过滤器用于过滤抓包数据,方便stream的追踪和排查。

捕捉过滤器仅支持协议过滤,显示过滤器既支持协议过滤也支持内容过滤。

两种过滤器它们支持的过滤语法并不一样。

捕捉过滤器--捕捉前依据协议的相关信息进行过滤设置

语法: Protocol Direction Host(s) Value Logical Operations Other expression
例子: tcp dst 10.1.1.1 80 and tcp dst 10.2.2.2 3128

示例:

(host 10.4.1.12 or src net 10.6.0.0/16) and tcp dst portrange 200-10000 and dst net 10.0.0.0/8

捕捉IP为10.4.1.12或者源IP位于网络10.6.0.0/16,目的IP的TCP端口号在200至10000之间,并且目的IP位于网络 10.0.0.0/8内的所有封包。

字段详解:

Protocol(协议):
可能值: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp.
如果没指明协议类型,则默认为捕捉所有支持的协议。
注:在wireshark的HELP-Manual Pages-Wireshark Filter中查到其支持的协议。


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)”不等价。

显示过滤器--对捕捉到的数据包依据协议或包的内容进行过滤

1.协议过滤语法

语法: Protocol . String 1 . String 2 Comparison operator   Value Logical Operations Other expression
例子: http   request   method  == "POST" or icmp.type

string1和string2是可选的。

依据协议过滤时,可直接通过协议来进行过滤,也能依据协议的属性值进行过滤。

按协议进行过滤:

snmp || dns || icmp 显示SNMP或DNS或ICMP封包。

按协议的属性值进行过滤:

ip.addr == 10.1.1.1
ip.src != 10.1.2.3 or ip.dst != 10.4.5.6
ip.src == 10.230.0.0/16 显示来自10.230网段的封包。
tcp.port == 25 显示来源或目的TCP端口号为25的封包。
tcp.dstport == 25 显示目的TCP端口号为25的封包。
http.request.method== "POST" 显示post请求方式的http封包。
http.host == "tracker.1ting.com" 显示请求的域名为tracker.1ting.com的http封包。
tcp.flags.syn == 0×02 显示包含TCP SYN标志的封包。

2.内容过滤语法

2.1深度字符串匹配

contains :Does the protocol, field or slice contain a value

示例

tcp contains "http" 显示payload中包含"http"字符串的tcp封包。
http.request.uri contains "online" 显示请求的uri包含"online"的http封包。

2.2特定偏移处值的过滤

tcp[20:3] == 47:45:54  /* 16进制形式,tcp头部一般是20字节,所以这个是对payload的前三个字节进行过滤 */

http.host[0:4] == "trac"

过滤中函数的使用(upper、lower)

upper(string-field) - converts a string field to uppercase
lower(string-field) - converts a string field to lowercase

示例
upper(http.request.uri) contains "ONLINE"

wireshark过滤支持比较运算符、逻辑运算符,内容过滤时还能使用位运算。

如果过滤器的语法是正确的,表达式的背景呈绿色。如果呈红色,说明表达式有误。

参考:

wireshark的HELP-Manual Pages-Wireshark Filter

http://blog.csdn.net/yhwxxx/article/details/5643095

http://tieba.baidu.com/p/739516717

Wireshark 过滤条件的更多相关文章

  1. WireShark系列: 使用WireShark过滤条件抓取特定数据流(zz)

    应用抓包过滤,选择Capture | Options,扩展窗口查看到Capture Filter栏.双击选定的接口,如下图所示,弹出Edit Interface Settints窗口. 下图显示了Ed ...

  2. 一站式学习Wireshark(八):应用Wireshark过滤条件抓取特定数据流

    应用抓包过滤,选择Capture | Options,扩展窗口查看到Capture Filter栏.双击选定的接口,如下图所示,弹出Edit Interface Settints窗口. 下图显示了Ed ...

  3. wireshark 过滤条件汇总

    原文地址:http://blog.const.net.cn/a/9340.htm 一.针对wireshark最常用的自然是针对IP地址的过滤.其中有几种情况: (1)对源地址为192.168.0.1的 ...

  4. 自己常用的wireshark过滤条件

    抓发给NVR的StrartRealPlay命令包: ip.src eq 118.123.114.8 and  tcp contains 02:63:64:61 抓发给NVR的心跳包: ip.src e ...

  5. 【协议分析】Wireshark 过滤表达式实例

    Wireshark 过滤表达式实例   1.wireshark基本的语法 字符 \d          0-9的数字 \D          \d的补集(以所以字符为全集,下同),即所有非数字的字符 ...

  6. (十八)WireShark 过滤语法

    1.过滤IP,如来源IP或者目标IP等于某个IP例子:ip.src eq 192.168.1.107 or ip.dst eq 192.168.1.107或者ip.addr eq 192.168.1. ...

  7. wireshark过滤语法总结-重点偏移过滤

    http://chenjiji.com/post/3371.html 作者: CHAN | 发布: 2013 年 10 月 24 日 做应用识别这一块经常要对应用产生的数据流量进行分析. 抓包采用wi ...

  8. 【转】wireshark过滤规则

    WireShark过滤语法 1.过滤IP,如来源IP或者目标IP等于某个IP 例子:ip.src eq 192.168.1.107 or ip.dst eq 192.168.1.107或者ip.add ...

  9. wireshark过滤规则

    WireShark过滤语法 1.过 滤IP,如来源IP或者目标IP等于某个IP 例子:ip.src eq 192.168.1.107 or ip.dst eq 192.168.1.107或者ip.ad ...

随机推荐

  1. C# 中的装箱与拆箱

    转角撞倒猪 原文 C# 中的装箱与拆箱   装箱:将一个数据项(副本)从栈中自动复制到堆中的行为. int i = 8; object o = i; // 装箱 // 首先在堆中开辟出一片区域,再将 ...

  2. ubuntu 11.10 (64bit) install opencv 2.4.8 and run in Qtcreator

    install gtk2+ sudo apt-get install libgtk2.0*sudo apt-get install cmake-qt-gui tar xzvf opencv-2.4.8 ...

  3. 屏蔽同步(JAVA)

    以全球气候预测程序为例.这些程序通过将地球分为许多单元,在每个循环中,每个单元的计算都是隔离进行的,直到这些值趋于稳定,然后相邻单元之间就会交换一些数据.所以,从本质上讲,在每个循环中各个线程都必须等 ...

  4. CRC(Cyclic Redundancy Check)循环冗余校验码与海明码的计算题

    (17)采用CRC进行差错校验,生成多项式为G(X)=X4+X+1,信息码字为10111,则计算出的CRC校验码是  (17)  .A.0000  B.0100   C.0010   D.1100试题 ...

  5. viedeo

    http://download.farsight.com.cn/download/Android.htm

  6. 问题:贴友关于CSS效果的实现

    今日在百度贴吧中,一贴有提出如下问题: 对于这个问题,咱们贴上代码看效果 1: <html> 2: <head> 3: <meta http-equiv="co ...

  7. adb 启动失败的原因和修改adb端口号

    在我们使用Android Studio的时候,有时候就会出现adb打开失败或者启动不了的情况. adb 启动失败的原因:有其他程序占用了adb默认启动的端口号(像我就遇到过,每次只要提前启动了酷狗音乐 ...

  8. JAVA——装箱和拆箱

    Java 将某些基本数据类型自动转换为包装类型的过程称为装箱,相反自动将包装类型转换为基本数据类型的过程称为拆箱. Integer integer_1=1; //装箱 int i=integer_1; ...

  9. Java HashMap实例源码分析

    引言 HashMap在键值对存储中被经常使用,那么它到底是如何实现键值存储的呢? 一 Entry Entry是Map接口中的一个内部接口,它是实现键值对存储关键.在HashMap中,有Entry的实现 ...

  10. Oracle 中利用闪回查询确定某表在某时间点之后的修改内容,并恢复至该时间点

    Oracle 中利用闪回查询确定某表在某时间点之后的修改内容: 1.查看 DELETE 及 UPDATE 操作修改的数据: SQL> SELECT * FROM tab AS OF TIMEST ...