两种过滤器

捕捉过滤器:用于决定将什么样的信息记录在捕捉结果中。需要在开始捕捉前设置
显示过滤器:在捕捉结果中进行详细查找。他们可以在得到捕捉结果后随意修改

1、捕捉过滤器

 

语法实例:

tcp dst port 3128   显示目的TCP端口为3128的封包。

ip src host 10.1.1.1   显示来源IP地址为10.1.1.1的封包。

host 10.1.2.3   显示目的或来源IP地址为10.1.2.3的封包。

src portrange 2000-2500   显示来源为UDP或TCP,并且端口号在2000至2500范围内的封包。

not imcp   显示除了icmp以外的所有封包。(icmp通常被ping工具使用)

src host 10.7.2.12 and not dst net 10.200.0.0/16   显示来源IP地址为10.7.2.12,但目的地不是10.200.0.0/16的封包。

(src 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或者来源网络为10.6.0.0/16,目的地TCP端口号在200至10000之间,并且目的位于网络10.0.0.0/8内的所有封包。

注意事项: 
1)当使用关键字作为值时,需使用反斜杠“\”。 
    "ether proto \ip" (与关键字"ip"相同)  这样写将会以IP协议作为目标

"ip proto \icmp" (与关键字"icmp"相同)  这样写将会以ping工具常用的icmp作为目标

2) 可以在"ip"或"ether"后面使用"multicast"及"broadcast"关键字 当您想排除广播请求时,"no broadcast"就会非常有用。

2、显示过滤器

语法实例:   

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

ip.addr == 10.1.1.1   显示来源或目的IP地址为10.1.1.1的封包。

ip.src != 10.1.2.3 or ip.dst != 10.4.5.6   显示来源不为10.1.2.3或者目的不为10.4.5.6的封包。 换句话说,显示的封包将会为: 来源IP:除了10.1.2.3以外任意;目的IP:任意 以及 来源IP:任意;目的IP:除了10.4.5.6以外任意。

ip.src != 10.1.2.3 and ip.dst != 10.4.5.6   显示来源不为10.1.2.3并且目的IP不为10.4.5.6的封包。 换句话说,显示的封包将会为: 来源IP:除了10.1.2.3以外任意;同时须满足,目的IP:除了10.4.5.6以外任意

tcp.port == 25    显示来源或目的TCP端口号为25的封包。

tcp.dstport == 25    显示目的TCP端口号为25的封包。

tcp.flags    显示包含TCP标志的封包。

tcp.flags.syn == 0x02   显示包含TCP SYN标志的封包。

3、实用过滤

1)过滤IP

ip.src eq 192.168.1.107 or ip.dst eq 192.168.1.107  或者  ip.addr eq 192.168.1.107              // 都能显示来源IP和目标IP

2)过滤端口

tcp.port eq 80         //不管端口是来源的还是目标的都显示 
tcp.port == 80 
tcp.port eq 2722 
tcp.port eq 80 or udp.port eq 80 
tcp.dstport == 80      //只显tcp协议的目标端口80 
tcp.srcport == 80      //只显tcp协议的来源端口80 
udp.port eq 15000 
tcp.port >= 1 and tcp.port <= 80     //过滤端口范围

3)过滤协议

tcp  udp  arp  icmp  http  smtp  ftp  dns  msnms  ip  ssl  oicq  bootp等

如:

排除arp包:!arp  或者  not arp

4)过滤MAC 

eth.dst == A0:00:00:04:C5:84    //过滤目标mac 
eth.src eq A0:00:00:04:C5:84    //过滤来源mac 
eth.dst==A0:00:00:04:C5:84 
eth.dst==A0-00-00-04-C5-84 
eth.addr eq A0:00:00:04:C5:84     //过滤来源MAC和目标MAC都等于A0:00:00:04:C5:84的

5)包长度过滤

udp.length == 26        这个长度是指udp本身固定长度8加上udp下面那块数据包之和 
tcp.len >= 7        指的是ip数据包(tcp下面那块数据),不包括tcp本身 
ip.len == 94      除了以太网头固定长度14,其它都算是ip.len,即从ip本身到最后 
frame.len == 119      整个数据包长度,从eth开始到最后 
eth ---> ip or arp ---> tcp or udp ---> data

6)http模式过滤

http.request.method == "GET" 
http.request.method == "POST" 
http.request.uri == "/img/logo-edu.gif" 
http contains "GET" 
http contains "HTTP/1." 
// GET包 
http.request.method == "GET" && http contains "Host: " 
http.request.method == "GET" && http contains "User-Agent: " 
// POST包 
http.request.method == "POST" && http contains "Host: " 
http.request.method == "POST" && http contains "User-Agent: " 
// 响应包 
http contains "HTTP/1.1 200 OK" && http contains "Content-Type: " 
http contains "HTTP/1.0 200 OK" && http contains "Content-Type: "

7)TCP参数过滤

tcp.flags     显示包含TCP标志的封包。 
tcp.flags.syn == 0x02       显示包含TCP SYN标志的封包。 
tcp.window_size == 0 && tcp.flags.reset != 1

8)过滤内容

tcp[20]表示从20开始,取1个字符 
tcp[20:]表示从20开始,取1个字符以上 
tcp[20:8]表示从20开始,取8个字符 
tcp[offset,n] 
udp[8:3]==81:60:03 //偏移8个bytes,再取3个数,是否与==后面的数据相等? 
udp[8:1]==32   //如果我猜的没有错的话,应该是udp[offset:截取个数]=nValue 
eth.addr[0:3]==00:06:5B 
例子: 
判断upd下面那块数据包前三个是否等于0x20 0x21 0x22(我们都知道udp固定长度为8) 
udp[8:3]==20:21:22

判断tcp那块数据包前三个是否等于0x20 0x21 0x22(tcp一般情况下,长度为20,但也有不是20的时候) 
tcp[8:3]==20:21:22 
如果想得到最准确的,应该先知道tcp长度

9)matches(匹配)和contains(包含某字符串)语法

ip.src==192.168.1.107 and udp[8:5] matches "\\x02\\x12\\x21\\x00\\x22" 
ip.src==192.168.1.107 and udp contains 02:12:21:00:22 
ip.src==192.168.1.107 and tcp contains "GET" 
udp contains 7c:7c:7d:7d 匹配payload中含有0x7c7c7d7d的UDP数据包,不一定是从第一字节匹配。 
例子: 
得到本地qq登陆数据包(判断条件是第一个包==0x02,第四和第五个包等于0x00x22,最后一个包等于0x03):0x02 xx xx 0x00 0x22 ... 0x03 
正确 
oicq and udp[8:] matches "^\\x02[\\x00-\\xff][\\x00-\\xff]\\x00\\x22[\\x00-\\xff]+\\x03$" 
oicq and udp[8:] matches "^\\x02[\\x00-\\xff]{2}\\x00\\x22[\\x00-\\xff]+\\x03$" // 登陆包 
oicq and (udp[8:] matches "^\\x02[\\x00-\\xff]{2}\\x03$" or tcp[8:] matches "^\\x02[\\x00-\\xff]{2}\\x03$") 
oicq and (udp[8:] matches "^\\x02[\\x00-\\xff]{2}\\x00\\x22[\\x00-\\xff]+\\x03$" or tcp[20:] matches "^\\x02[\\x00-\\xff]{2}\\x00\\x22[\\x00-\\xff]+\\x03$")

不单单是00:22才有QQ号码,其它的包也有,要满足下面条件(tcp也有,但没有做):

oicq and udp[8:] matches "^\\x02[\\x00-\\xff]+\\x03$" and !(udp[11:2]==00:00) and !(udp[11:2]==00:80) 
oicq and udp[8:] matches "^\\x02[\\x00-\\xff]+\\x03$" and !(udp[11:2]==00:00) and !(udp[15:4]==00:00:00:00) 
说明: 
udp[15:4]==00:00:00:00 表示QQ号码为空 
udp[11:2]==00:00 表示命令编号为00:00 
udp[11:2]==00:80 表示命令编号为00:80 
当命令编号为00:80时,QQ号码为00:00:00:00

【转载】wireshark抓包的更多相关文章

  1. Wireshark抓包工具使用教程以及常用抓包规则

    转载:http://fangxin.blog.51cto.com/1125131/735178 Wireshark是一个非常好用的抓包工具,当我们遇到一些和网络相关的问题时,可以通过这个工具进行分析, ...

  2. wireshark怎么抓包、wireshark抓包详细图文教程(转)

    wireshark怎么抓包.wireshark抓包详细图文教程 wireshark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示网络封包的详细信息.使用wireshark的人必 ...

  3. Wireshark抓包分析TCP协议

      版权声明:本文为作者原创文章,可以随意转载,但必须在明确位置表明出处!!! 之前有一篇文章介绍了http协议「初识http协议」, http协议协议是基于tcp协议的,所以作者觉得有必要针对tcp ...

  4. 使用wireshark抓包分析-抓包实用技巧

    目录 使用wireshark抓包分析-抓包实用技巧 前言 自定义捕获条件 输入配置 输出配置 命令行抓包 抓取多个接口 抓包分析 批量分析 合并包 结论 参考文献 使用wireshark抓包分析-抓包 ...

  5. Wireshark抓包分析/TCP/Http/Https及代理IP的识别

    前言 坦白讲,没想好怎样的开头.辗转三年过去了.一切已经变化了许多,一切似乎从没有改变. 前段时间调研了一次代理相关的知识,简单整理一下分享之.如有错误,欢迎指正. 涉及 Proxy IP应用 原理/ ...

  6. 使用wireshark抓包分析浏览器无法建立WebSocket连接的问题(server为Alchemy WebSockets组件)

    工作时使用了Websocket技术,在使用的过程中发现,浏览器(Chrome)升级后可能会导致Websocket不可用,更换浏览器后可以正常使用. 近日偶尔一次在本地调试,发现使用相同版本的Chrom ...

  7. 用wireshark抓包分析TCP三次握手、四次挥手以及TCP实现可靠传输的机制

    关于TCP三次握手和四次挥手大家都在<计算机网络>课程里学过,还记得当时高超老师耐心地讲解.大学里我遇到的最好的老师大概就是这位了,虽然他只给我讲过<java程序设计>和< ...

  8. 云计算之路-阿里云上:Wireshark抓包分析一个耗时20秒的请求

    这篇博文分享的是我们针对一个耗时20秒的请求,用Wireshark进行抓包分析的过程. 请求的流程是这样的:客户端浏览器 -> SLB(负载均衡) -> ECS(云服务器) -> S ...

  9. 用Wireshark抓包分析超过70秒的请求

    超过70秒的请求是通过分析IIS日志发现的: 10.159.63.104是SLB的内网IP. 通过Wireshark抓包分析请求是9:22:21收到的(tcp.stream eq 23080): 09 ...

  10. wireshark怎么抓包、wireshark抓包详细图文教程

    wireshark怎么抓包.wireshark抓包详细图文教程 作者:佚名  来源:本站整理  发布时间:2013-05-02 19:56:27 本日:53 本周:675 本月:926 总数:3749 ...

随机推荐

  1. 解决Windows和Ubuntu时间不一致的问题

    问题原因是使用的时间不一致导致的.win10直接从bios读出来的时间认为就是实际时间,ubuntu认为加上8个小时 后的才是.win10用的rtc ,ubuntu用的utc 在ubuntu16.04 ...

  2. sdut 2162:The Android University ACM Team Selection Contest(第二届山东省省赛原题,模拟题)

    The Android University ACM Team Selection Contest Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里 ...

  3. mac上安装gradle

    首先,先download最新版本的gradle,网址如下:http://www.gradle.org/get-started然后将下载下来的zip包放在你要安装的路径上,我安装在/usr/local/ ...

  4. C#.NET ObjectDumper

    demo: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sy ...

  5. HDU 5682/BestCoder Round #83 1003 zxa and leaf 二分+树

    zxa and leaf Problem Description zxa have an unrooted tree with n nodes, including (n−1) undirected ...

  6. 只用CSS美化选择框

    只用CSS美化选择框 2012-03-02 11:04 by iBlog, 26240 阅读, 14 评论, 收藏, 编辑 <本文译自Style a Select Box Using Only ...

  7. CodeForces 433C Ryouko's Memory Note-暴力

                                             Ryouko's Memory Note Time Limit:1000MS     Memory Limit:262 ...

  8. .Net AppDomain.CurrentDomain.AppendPrivatePath(@"Libs");

    今天就说说.Net中通过反射取得某个类型时,我们怎么知道这个类型在硬盘上的哪个角落?比如说,假如我们需要要求服务端动态载入某个数据源,那服务端怎么知道数据源在哪?网上大部分的教程都写着,可以使用Ass ...

  9. 数学 赛码 1010 GCD

    题目传送门 /* 数学:官方题解 首先,数组中每个元素至少是1 然后对于任意一个询问Li, Ri, Ansi, 说明Li ~ Ri中的元素必定是Ansi的倍数,那么只需将其与Ansi取最小公倍数即可 ...

  10. 贪心 Codeforces Round #300 A Cutting Banner

    题目传送门 /* 贪心水题:首先,最少的个数为n最大的一位数字mx,因为需要用1累加得到mx, 接下来mx次循环,若是0,输出0:若是1,输出1,s[j]--: 注意:之前的0的要忽略 */ #inc ...