WireShark常用表达式
ip.addr == 源ip/目标ip #会返回两个包,一个是请求包一个是相应包,如果要看相应包要用这个 ip.dst == 192.168.1.1 #显示目标地址是192.168.1.1的数据包 ip.src == 192.168.1.1 #显示源地址是192.168.1.1的数据包 ip.addr == 222.222.221.138 and tcp.port==80 && http #ip(s)并且端口(s)并且协议为http ip.src==222.222.221.138/150 #网络过滤,过滤一个网段 ### 只需要http的包,过滤掉jpg,过滤掉png,过滤掉zip http.request and !((http.request.full_uri matches "http://.*\.jpg.*") or(http.request.full_uri matches "http://.*\.png.*") or(http.request.full_uri matches "http://.*\.zip.*"))
定位有用的数据包
根据表达式得到指定ip端口的数据包,但是同一个目的ip的通信也有很庞大的数据包
输入表达式后按ctrl+N打开查找对话框,
- Display filter 通过表达式进行筛选,其功能强大,如ip.addr==192.168.1.23
- Hex value 通过十六进制对数据包进行筛选,如00:ff
- String 通过字符串进行查找,如login
标记数据包
在Packet List中选中一个数据包,右键选择Mark Packet(快捷键Ctrl+M)就可以将该数据包标记,标记后该数据包会高亮显示。
在多个被标记的数据包之间切换可用Ctrl+Shift+N、Ctrl+Shift+B。
重组TCP/HTTP数据流
burpsuite的功能相似,Wireshark也有TCP流量重组功能。右键单击一个数据包选择Follw TCP/UDP Stream即可重组出数据流交互过程。其中红色表示从源地址发往目标地址,蓝色反之。
查看端点与会话
Endpoints窗口里(Statistics -> Endpoints)已经统计出了每一个端点的地址、传输发送数据包的数量u以及字节数。这里一个很有用的地方是:单击一个数据包右键,在相关选项里有该数据包的过滤语法规则,可以直接过滤出指定ip抓的包
Package Detail详解
Frame:物理层的数据帧概况。(哪块网卡) Ethernet II:数据链路层以太网帧头部信息。(MAC地址) Internet Protocol Version 4:互联网层IP包头部信息。(b/s端ip地址) Transmission Control Protocol:传输层的数据段头部信息,此处是TCP协议。(port端口) Hypertext Transfer Protocol:应用层的信息,此处是HTTP协议。(url,数据)
物理层的数据帧
2563号帧,线路622字节,实际捕获622字节
Interface id: 0 #接口id Encapsulation type: Ethernet (1) #封装类型 Arrival Time: Jun 11, 2015 05:12:18.469086000 #捕获日期和时间 [Protocols in frame: eth:ip:tcp:http] #帧内封装的协议层次结构
数据链路层以太网帧头部信息
以太网MAC地址,源mac地址为0c:9d:92:12:56:87,目标mac地址为8c:21:0a:1c:40:e8
Ethernet II, Src: 0c:9d:92:12:56:87 (0c:9d:92:12:56:87), Dst: Tp-LinkT_1c:40:e8 (8c:21:0a:1c:40:e8) Destination: Tp-LinkT_1c:40:e8 (8c:21:0a:1c:40:e8) #目标MAC地址 Address: Tp-LinkT_1c:40:e8 (8c:21:0a:1c:40:e8) Source: 0c:9d:92:12:56:87 (0c:9d:92:12:56:87) #源MAC地址 Address: 0c:9d:92:12:56:87 (0c:9d:92:12:56:87) Type: IPv4 (0x0800)
互联网层IP包头部信息
ip地址,源ip地址为222.222.221.138,目的ip为58.220.56.45
Internet Protocol Version 4, Src: 222.222.221.138, Dst: 58.220.56.45 Version: 4 #互联网协议IPv4 Header Length: 20 bytes (5) #IP包头部长度 Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT) #差分服务字段 Total Length: 608 #IP包的总长度 Time to live: 128 #生存期TTL Protocol: TCP (6) #此包内封装的上层协议为TCP Header checksum: 0xe3fe [validation disabled] #头部数据的校验和 Source: 222.222.221.138 #源IP地址 Destination: 58.220.56.45 #目标IP地址
传输层TCP数据段头部信息
tcp端口源端口为50094,目标端口为80
Transmission Control Protocol, Src Port: 50094, Dst Port: 80, Seq: 3035, Ack: 32379, Len: 685 Source Port: 50094 #源端口号 Destination Port: 8088 #目标端口号 Sequence number: 3035 #序列号(相对序列号) [Next sequence number: 3720 #下一个序列号 Acknowledgment number: 32379 #确认序列号 Header Length: 20 bytes (5) #头部长度 Flags: 0x018 (PSH, ACK) #TCP标记字段 Window size value: 514 #流量控制的窗口大小 Checksum: 0xb69e #TCP数据段的校验和
TCP三次握手
TCP(Transmission Control Protocol)传输控制协议
TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:
位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)Sequence number(顺序号码) Acknowledge number(确认号码)
第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;
第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包;
第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。
完成三次握手,主机A与主机B开始传送数据。
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。完成三次握手,客户端与服务器开始传送数据.
OICQ
过滤器中输入oicq即可过滤应用层协议为oicp的包
oicq数据包格式
包解析
标识:固定为0x02
版本号:协议版本
命令:使用oicq.command == 23可过滤命令为23的包
参考:https://blog.csdn.net/qq_35615083/article/details/80276777