WireShark是很是流行的网络封包分析软件,功能十分强大。能够截取各类网络封包,显示网络封包的详细信息。html
WireShark界面简介java
启动WireShark的界面以下:express
wireshark是捕获机器上的某一块网卡的网络包,当你的机器上有多块网卡的时候,你须要选择一个网卡。windows
点击Caputre->Interfaces.. 出现下面对话框,选择正确的网卡。而后点击"Start"按钮, 开始抓包。网络
窗口的主要组成部分app
抓取包对应的OSI七层模型tcp
抓取的TCP包的具体内容函数
封包详细信息工具
封包列表的面板中显示,编号,时间戳,源地址,目标地址,协议,长度,以及封包信息。 你能够看到不一样的协议用了不一样的颜色显示。
你也能够修改这些显示颜色的规则, View ->Coloring Rules. post
wireshark过滤语法总结
wireshark进行过滤时,按照过滤的语法可分为协议过滤和内容过滤:
tcp.port==53 http.request.method=="GET"
tcp[20:3] == 47:45:54
wireshark有两种过滤器:
捕捉过滤器在抓抱前进行设置,决定抓取怎样的数据;显示过滤器用于过滤抓包数据,方便stream的追踪和排查。捕捉过滤器仅支持协议过滤,显示过滤器既支持协议过滤也支持内容过滤。两种过滤器它们支持的过滤语法并不同。
下面来详细学习两种过滤器
Protocol Direction Host(s) Value Logical Operations Other expression
(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
Protocol.String1.String2 Comparison operator Value LogicalOperations Otherexpression
//按协议进行过滤 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标志的封包。
//显示payload中包含"http"字符串的tcp封包。 tcp contains "http" //显示请求的uri包含"online"的http封包。 http.request.uri contains "online"
//16进制形式,tcp头部通常是20字节,因此这个是对payload的前三个字节进行过滤 tcp[20:3] == 47:45:54 http.host[0:4] == "trac"
示例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过滤支持比较运算符、逻辑运算符,内容过滤时还能使用位运算。 若是过滤器的语法是正确的,表达式的背景呈绿色。若是呈红色,说明表达式有误。
PS:
今天总结完这篇使用手册后,写了一个捕获过滤器:
tcp src host 10.9.146.113
使用"Compile selected BPFs",但WireShark总是不经过,提示错误
'tcp' modifier applied to host
一直疑惑不解,我是按照语法来写的,怎么编译不经过呢?!
最后各类查呀,才知道“对于tcp/udp协议只能监听端口号,而ip协议只能监听主机地址,tcp/udp位于传输层”!!
这是逼我这看TCP/IP协议呀!在查的过程当中又顺带知道了有同类tcpdump工具不能用于windows),而tcpdump工具是基于libpcap。
libpcap是一个网络数据包捕获函数库,不少抓包工具都是基于它来开发的,WireShark也不例外,而在windows上WireShark是基于wincap的。
在“man tcpdump”的时候看到Expression是语法是pcap-filter,这个语法应该就是libcap的语法。
经过上面的总结,因而我决定须要看:《TCP/IP协议》、tcpdump工具、libcap。