wireshark入门:抓包过滤器语法;显示过滤器语法;设置
wireshark抓包过滤器
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
wireshark抓包过滤器语法及示例 ===================================================================== BPF语法(Berkeley Packet Filter),基于libpcap/wincap库 语句间语法:<Expressions><Logical operations><Expressions> <Expressions>语句内部语法:<Protocol name><Direction><Host(s)><Value> 1.protocol可选值:ether,fddi,ip,arp,rarp,decnet,lat,tcp,dns等等协议 2.direction可选值:src,dst,src and dst,src or dst,默认为src or dst 3.host(s)可选值:net,port,host,portrange。默认为host,如 src 192.168.0.100 等价于src host 192.168.0.100 4.logical可选值:and,or,not(其中not鱼油最高优先级,and和or优先级相同),运算顺序:从左至右 ---------------------------------------------------------------- 以下为抓包过滤器实例: 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内的所有封包。
wireshark显示过滤器
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
wireshark显示过滤器语法及表达式示例 ================================================================================================= 显示过滤器的规则和抓包过滤器的规则略有不同! 语句间语法:<Expressions><Logical operations><Expressions> <Expressions>语句内部语法:<Protocol>.<string1>.<string2><comparison operator><value> 比较操作符:== != > < >= <= 逻辑操作符:and/or/xor(有且仅有一个条件被满足)/not IP地址:ip.addr/ip.src/ip.dst 端口过滤:tcp.port/tcp.srcport/tcp.dstport/tcp.flag.syn/tcp.flag.ack 协议:arp/ip/icmp/udp/tcp/bootp/dns ------------------------------------------------------------------------------------------------------- 如果过滤器的语法是正确的,表达式的背景呈绿色。如果呈红色,说明表达式有误。 提示: 1.在展示过滤器手动输入过滤规则时,会自动弹出一些过滤条件 2.右键菜单-设置过滤规则时,可以右击的对象包括源IP,目的IP,协议,也可以在数据包解析区右击数据。 3.在展示过滤器判断的Expression按键,可以使用像选择题一样,配置出过滤规则 1.针对IP地址的过滤: ip.src == 192.168.0.1 #源地址 ip.dst == 192.168.0.1 #目的地址 ip.addr == 192.168.0.1 #源或者目的地址 !(ip.src == 192.168.0.1) #排除 ip.src != 10.1.2.3 #排除 2.针对协议的过滤 http #根据协议名进行过滤 http or telnet #过滤多种协议 tcp || udp #过滤多种协议 not arp #排除某种协议 !tcp #排除某种协议 3.针对端口的过滤 tcp.port == 80 #某一端口 tcp.dstport == 25 #某一目的端口 udp.port >= 2048 #多端口(捕获高端口) tcp.dstport>=33758 or tcp.dstport<=33755 #多端口 tcp.dstport>=33758 and tcp.srcport==20 #多端口 4.针对长度和内容的过滤 tcp.len eq 1 udp.length < 30 #数据段的长度 http.content_length <=20 #数据段的长度 http.request.uri matches “vipscu” #数据包内容(匹配http请求中含有vipscu字段的请求信息) tcp.payload eq 01 5.深度字符串匹配 tcp contains "http" #显示payload中包含”http”字符串的tcp封包。 tcp contains "22222" http.request.uri contains "online" #显示请求的uri包含”online”的http封包。 tcp contains "id=abcdafeafeagfeagfaraera1242dfea" frame contains "id=abcdafeafeagfeagfaraera1242dfea" ip contains "id=abcdafeafeagfeagfaraera1242dfea" http contains "id=abcdafeafeagfeagfaraera1242dfea" 6.特定偏移处值的过滤 tcp[20:3] == 47:45:54 #16进制形式,tcp头部一般是20字节,所以这个是对payload的前三个字节进行过滤 http.host[0:4] == “trac” # 7.使用函数(upper、lower) 函数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过滤支持比较运算符、逻辑运算符,内容过滤时还能使用位运算。 8.补充示例: tcp.flags.reset eq 1 #根据tcp RST标志位进行过滤 tcp.flags.fin eq 1 tcp.flags.reset eq 1 tcp.seq eq 1 #根据TCP报文序列号进行过滤 tcp.ack_raw == 754313633 frame.time >="dec 01, 2015 15:49:48" and frame.time <="dec 01, 2015 15:49:49" #二层报头的时间进行过滤 tcp.options.timestamp.tsval == 2947948748 #如果有 TCP timestamp 扩展,就用 TCP timestamp tcp.options.timestamp.tsecr == 3209788920
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
wireshark显示界面设置: 数据包列表展示区 字体大小调节---------------3个放大镜按钮 列设置----------------进入有2个方法,1.edit-prefernces-columns。2.右击列-columns-prefernces 所有的可以设置为过滤规则的,也可以设置为列名 增加列----------------2个方法:1.在数据包解析区找到你要增加的列的信息,右击-apply as columns。 2.edit-prefernces-columns,在列编辑页面编辑 修改列:右击列名-edit columns detail,即进入修改。或者可以进入列编辑页面进行修改 隐藏列:右击列名-hide columns。或者可以进入列编辑页面进行修改 删除列:右击列名-remove columns。或者可以进入列编辑页面进行修改 时间设置: view - time display format :修改时间显示格式 右击数据包 - set time reference(toggle) :设置相对的参考时间 名字解析: edit - preferences - name resolution。或者在抓包设置中也可以设置 在数据分析时,wireshark支持右击,对数据包进行注释 protocol是自动识别的,但是也可以强制指定。比如NDS协议数据包,默认当然是用DNS来解析的了,强制使用其他协议时,那么所有的DNS协议包全部使用其他协议进行解析。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
专家信息 =========================================================== wireshark---分析---专家信息 Warning 条目的底色是黄色,意味着可能有问题,应重点关注。 Note 条目的底色是浅蓝色,是在允许范围内的小问题,也要关注。什么叫“允许范围内的小问题”呢?举个例子,TCP 本身就是容许一定程度的重传的,那么这些重传报文,就属于“允许范围内”。 Chat 条目的底色是正常蓝色,属于 TCP/UDP 的正常行为,可以作为参考。比如你可以了解到,这次通信里 TCP 握手和挥手分别有多少次,等等。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
丢包率和乱序参考 ========================================================================= 一般来说,乱序是应该被重点关注的。 这个乱序也容易引发应用层异常。 这种程度的乱序发生在内网是不应该的,因为内网比公网要稳定很多。 以我个人的经验,内网环境常见的丢包率在万分之一上下,乱序的几率我没有严格考证过,因为跟各个环境的具体拓扑和配置的关系太大了。 但从经验上看,乱序几率大概在百分之一以下到千分之一左右都属正常。 《网络排查案例课》05 | 定位防火墙(一):传输层的对比分析
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
wireshark分析小技巧 ============================================================= 左侧的两个水平方向的箭头(一个向右,一个向左),分别表示这两个数据包是 HTTP 请求和 HTTP 响应。 在协议分层统计时,arp包一般占比在百分之零点几,若占比到10+,则有可能有人在搞arp攻击 长度40-79的数据包一般是arp包、tcp建立连接时的包,dns包等等。可以对数据包展示区对length进行排序查看 长度1280-2559的数据包一般是tcp数据包 TLSv1.2即https https=http+ssl(ssl,后来改名为tls)