Wireshark解析协议不匹配
1、问题
现有TLS/SSL over TCP的客户端、服务端相互通信,其中,服务端监听TCP端口6000。
使用tcpdump抓包6000端口,生成pcap文件6000.pcap:
使用Wireshark打开6000.pcap,显示如下:
期待Wireshark解析的是TLS协议,但实际并非如此,而是X11协议。
为什么呢?
2、原因
首先,tcpdump抓包,生成pcap是按照条件进行过滤,抓二进制数据流存储为pcap文件。
二进制数据流本身就是一串0或1,其是否有意义,取决于“你”/Wireshark怎么认为、怎么理解。
实际上,Wireshark对一个pcap包中的数据,会尝试进行解析、呈现。
例如,Wireshark对6000.pcap解析,得知TCP通信端口一侧是6000,则根据默认的预设规则,6000对应X11协议,因此Wireshark尝试使用X11协议解码规则来解析、呈现抓包内容。
面对一串不知名文字,你(Wireshark)只能尝试使用英语/或法语/或汉语来尝试解读它。
因此我们得到非预期的X11协议错误解析结果:
你用“法语”的语法规则去解析“汉语”文章语句,牛头不对马嘴,信息异常。
3、解决
左键选中解析异常的包,右键选择“Decode AS…”:
然后将规则中的“当前”进行修改:
将(none)修改为“TLS”:(你的真正的、实际的通信协议)
点击“OK”或者“Save”:
这个时候,Wireshark就会按照你设定的协议,对pcap进行解析:
例如,我设置59739的TCP端口按照TLS协议解析,可得到上图结果。
当然,更合理的是,对TCP端口是6000的包按照TLS协议解析。
另外,也可以通过菜单栏的“分析”、“解码为…”打开上述界面:
又或者按照快捷键Ctrl+Shift+U快速打开。
4、参考
http://www.kaiyuanba.cn/content/network/wireshark/c9.4.html
https://blog.csdn.net/wu_cai_/article/details/79555488