两种过滤器

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

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. div img居中的方式

    想让div中的img水平和垂直都居中,可以将img放在div中,img的样式:height:100%;width:100%; 外部定义div的宽度和高度,然后定义line-height行高,div外部 ...

  2. Oracle11完全卸载方法 deinstall.bat如何用以及如何删除oracle注册表

    转自:http://blog.sina.com.cn/s/blog_68fe7e15010100an.html 之前因为不知道偶电脑是因为安装了oracle后,才导致的长达两周的开机速度要足足10分钟 ...

  3. C++的那些事:表达式与语句

    表达式 1,应该把函数调用当作是一种运算符,这种运算符对参与运算的对象没有数量限制. 2,关于“左值(lvalue)”和“右值(rvalue)”可以做一个简单的归纳:当一个对象被用作右值的时候,用的是 ...

  4. Codeforces Round #Pi (Div. 2) D. One-Dimensional Battle Ships set乱搞

    D. One-Dimensional Battle ShipsTime Limit: 2 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/con ...

  5. ural 1018(树形dp)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=17662 思路:典型的树形dp,处理的时候类似于分组背包,dp[i] ...

  6. 小甲鱼PE详解之区块表(节表)和区块(节)续(PE详解05)

    这一讲我们结合实例来谈谈区块表的定义以及各个属性的含义. 首先,我们先用之前学过的一点知识在二进制文件中手动翻找区块表,这样做的好处是可以使你很快的对PE结构牢记于心.学来的东西就是能用的东西,不能用 ...

  7. ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component解决

    第一:先确定一下开发流程是否正确 1.写好servlet组件类 2.写好web.xml文件--向服务器介绍组件 3.发布--就是拷贝 注意:要拷贝包结构,不要只拷贝组件类文件 另外,拷贝的是.clas ...

  8. JavaScript案例三:动态显示时间

    用JavaScript实现在页面上动态的显示时间 <!DOCTYPE html> <html> <head> <title>JavaScript动态显示 ...

  9. python 添加类属性

    类属性必须赋值. 创建类属性 类是模板,而实例则是根据类创建的对象. 绑定在一个实例上的属性不会影响其他实例,但是,类本身也是一个对象,如果在类上绑定一个属性,则所有实例都可以访问类的属性,并且,所有 ...

  10. JAVA定时执行任务的三种方法

    1.利用 java.util.Timer 这个方法应该是最常用的,不过这个方法需要手工启动你的任务 Timer timer=new Timer(); timer.schedule(new ListBy ...