在上一篇博文中,主要讲解了wireshark的界面,以及如何抓包和过滤所须要的包。这篇博文主要讲解一下如何分析捕获的数据包。
php
回顾上一篇的内容:html
抓取封包linux
启动wireshark,在接口列表中选择网卡接口名,而后点击开始,则在此接口上抓包。菜单:Capture -> Options 能够配置高级属性,可是如今咱们先无论。
浏览器
选择一个接口,而后点击工具栏的"Start",就能够看到捕获的封包。Wireshark默认会捕获该接口全部发送和接收的封包。服务器
若是要中止捕获,点击工具栏的"Stop"(红色的小方块),便可。若是不中止,一直会不断的抓取数据包,可能致使咱们的内存吃紧。
网络
过滤封包tcp
默认状况下,Wireshark会捕获大量的封包,以致于咱们没法找到所须要的封包。这时就要用到wireshark过滤器。wireshark提供两种类型的过滤器,一种是捕获过滤器,一种是显示过滤器。
ide
最基本的方式就是使用窗口顶端的显示过滤器,输入过滤表达式(或者点击Expression按钮,而后选择一个过滤表达式)并点击输入框后的"Apply"或者按下回车。
工具
一样,咱们也能够点击菜单中的Analyze -> Display Filters来自定义咱们的过滤条件。post
另外一个颇有趣的事情是,在封包列表窗口,选择一个封包而后右键,会出现follow TCP stream或follow UDP stream(SSL我是没见过)可选,而后follow进去。
解释一下:Follow Stream是什么意思呢?也就是会话记录,服务器和客户端之间的所有会话记录。
新手上路一般都会疑问,这么多请求我应该follow哪一个封包?实际看哪一个都是同样。follow进入就是一个历史页面,进入了再慢慢找你须要的数据。你会发现显示过滤表达式被自动生成,wireshark仅显示构成此会话的全部封包。
这里还有一个更好玩的,如何构造显示过滤表达式。
假设我要捕获全部以首部Flags标志为ACK的封包,怎么办呢?
TCP/IP协议栈(DOD模型)
wireshark-以太网帧示例
wireshark是严格遵循OSI模型规范的。咱们知道以太网是实如今数据链路层和物理层的。
IP数据报
wireshark-IP数据报示例
TCP报文段
wireshark-TCP报文段示例
咱们能够很清晰的看到,wireshark中的首部数据与OSI模型中各协议的首部格式是相对应的。因此,利用wireshark来学习网络,那是很是直观有效的。
wireshark 实战演练
实验一:网络中明码传输的危险性
经过明码传输的protocol和工具至关多,典型的就是telnet,ftp,http。咱们拿telnet作此次实验。假设我以telnet方式登陆到个人linux服务器,而后经过wireshark抓包,以抓取帐号和密码信息。
一、首先启动wireshark,并处于Capture状态。而后经过telnet远程登陆咱们的linux服务器。
进入登陆界面后,输入帐号和密码登入系统。
二、接下来中止wireshark的截取封包的操做,执行快捷方式的"Stop"便可。
不过,捕获的信息很是多,这个时候能够利用Display Filter功能,过滤显示的内容,以下图所示,点击Expression,而后选择过滤表达式。这里,咱们选择TELNET便可。
表达式肯定以后,选择"Apply",就能够过滤出只包含TELNET的封包
来,咱们查看一下整个telnet会话的全部记录, wireshark能够记录会话记录(就像咱们聊QQ时,"QQ聊天记录"同样),任意找到一个telnet封包,右键找到"Follow TCP Stream",wireshark就会返回整个会话记录。
OK, 咱们看到如下这些数据信息,红色的部分是咱们发送出去的DATA,蓝色的部分是咱们接收到的DATA。 , 告诉我, 你看到了什么
为了更准确的看清楚,咱们再次仅筛选出咱们发送出去的DATA。或者仅接收到的DATA。
从这里,咱们能够确切的抓到帐号和密码信息。login:wireshark Password:123456,除了这些,咱们还能够更进一步知作别人在看什么网站,或是私人文件,隐私将毫无保障。
注:为了不这些状况,防止有心人监测到重要信息,可使用SSH,SSL,TSL,HTTPS等加密协议对重要数据进行加密,而后再到网络上传输,若是被人截取下来,看到的内容也是被加密的。
实验二:HTTP Protocol
目的:经过观察HTTP协议,练习如何过滤出本身须要的数据,并可以清楚的知道TCP/IP实际的运做方式。
这里,咱们采用"(Capture Filter)捕获过滤",菜单栏 Capture -> Options
跟咱们相关设定的有以下部分,Use promiscuous mode on all interfaces, Capture Filter, 其实咱们须要设定的仅仅是Captrue Filter
Capture Filter使用libpcap filter语言,详细的语法能够参考tcpdump的man页面( http://www.tcpdump.org/tcpdump_man.html )
咱们这里不须要使用这么复杂的过滤表达式,直接用wireshark已经创建好的经常使用功能HTTP TCP port(80)便可。首先点击"Capture Filter"按钮,而后选择HTTP TCP port(80), OK以后选择"Start"开始捕获封包。
这里以浏览器访问www.baidu.com首页为例, 来看看访问一个网页会发生什么?
回到wireshark,看到已经抓取了不少封包。OK,前面咱们已经交代了TCP/IP协议栈,这里就再也不累述。
看下面这幅图中,红色的框框,这就是TCP在作三次握手,创建链接。
接下来这一行,就是Client向server做出request。
咱们能够在封包详细信息列表框中,针对于每一层查看,更清楚的了解每一层的运做模式,同理也可使用Follow TCP Stream
https://community.emc.com/message/818739#818739
http://openmaniak.com/cn/wireshark_use.php
http://blog.shaolin.tw/2008/03/wireshark.html
http://man.lupaworld.com/content/network/wireshark/Introduction.html#whatis