Wireshark是世界上最流行的网络分析工具。这个强大的工具可以捕捉网络中的数据,并为用户提供关于网络和上层协议的各种信息。
与很多其他网络工具一样,Wireshark也使用pcap network library来进行封包捕捉。 Wireshark的优势: - 安装方便。 - 简单易用的界面。 - 提供丰富的功能。 Wireshark的原名是Ethereal,新名字是2006年起用的。当时Ethereal的主要开发者决定离开他原来供职的公司,并继续开发这个软件。但由于Ethereal这个名称的使用权已经被原来那个公司注册,Wireshark这个新名字也就应运而生了。 系统要求: libpcap库对于Ethereal和Wireshark都非常重要,它们需要使用这个库的功能进行封包捕捉工作。 如果您的系统中没有安装libpcap或者其它必要的组件,当您使用"apt-get"安装Ethereal或Wireshark时,它们都会被自动添加。请参考 Wireshark tutorial。 使用如下命令,可以得到Ethereal或Wireshark的详细依赖关系列表。
# apt-cache depends ethereal ethereal Dépend: libadns1 Dépend: libatk1.0-0 Dépend: libc6 Dépend: libcairo2 Dépend: libcap1 Dépend: libfontconfig1 Dépend: libglib2.0-0 Dépend: libgnutls12 Dépend: libgtk2.0-0 Dépend: libpango1.0-0 Dépend: libpcap0.8 Dépend: libpcre3 Dépend: libx11-6 Dépend: libxcursor1 Dépend: libxext6 Dépend: libxfixes3 Dépend: libxi6 Dépend: libxinerama1 Dépend: libxrandr2 Dépend: libxrender1 Dépend: zlib1g Dépend: ethereal-common Recommande: gksu 安装:
使用安装包安装:
需要强调的是,Wireshark并没有提供针对Ubuntu edgy(6.10)之前版本的安装包,也没有直接提供能在Debian上稳定运行的版本。 在这些情况下,您需要下载Ethereal的包,或者直接下载Wireshark的源代码然后自行编译。 Ubuntu Ubuntu Edgy (6.10) 之前的版本:
截止到2007年3月,还没有一个版本的Wireshark能在Debian上稳定运行。因此您可以选择下载Ethereal Ethereal
若要在Debian或者Ubuntu下运行Wireshark或者Ethereal:
手动安装:
安装编译工具:
checking for GTK+ - version >= 2.0.0... no *** Could not run GTK+ test program, checking why... *** The test program failed to compile or link. See the file config.log for the *** exact error that occured. This usually means GTK+ is incorrectly installed. checking for pkg-config... (cached) /usr/bin/pkg-config checking for GLIB - version >= 2.0.0... no *** Could not run GLIB test program, checking why... *** The test program failed to compile or link. See the file config.log for the *** exact error that occured. This usually means GLIB is incorrectly installed. configure: error: GLib2 distribution not found. 编译和安装:
安装TSHARK: 您可以方便的通过如下方法安装Tshark(命令行模式工具): #apt-get install tshark 运行:
在这篇教程中,我们将要介绍如何使用默认设置运行Wireshark。
您可以从 Wireshark User's Guide中获得更多帮助。 运行Wireshark或者Ethereal: ( Ethereal与Wireshak的区别是什么?)
选择需要捕捉的设备。
Wireshark的运行结果。 为了更加高效的使用Wireshark,详细 了解其各项功能以及学习 如何管理和使用过滤器找到自己想要的结果也是十分必要的。 界面说明:
在成功 运行Wireshark之后,我们就可以进入下一步,更进一步了解这个强大的工具。
下面是一张地址为192.168.1.2的计算机正在访问“openmaniak.com”网站时的截图。
1. MENUS(菜单)
2. SHORTCUTS(快捷方式) 您可以将鼠标指针移动到某个图标上以获得其功能说明。 返回页面顶部 3. DISPLAY FILTER(显示过滤器) 请不要将捕捉过滤器和显示过滤器的概念相混淆。请参考 Wireshark过滤器中的详细内容。 返回页面顶部 4. PACKET LIST PANE(封包列表) 如果捕获的是一个OSI layer 2的封包,您在Source(来源)和Destination(目的地)列中看到的将是MAC地址,当然,此时Port(端口)列将会为空。 如果捕获的是一个OSI layer 3或者更高层的封包,您在Source(来源)和Destination(目的地)列中看到的将是IP地址。Port(端口)列仅会在这个封包属于第4或者更高层时才会显示。 您可以在这里添加/删除列或者改变各列的颜色: Edit menu -> Preferences 返回页面顶部 5. PACKET DETAILS PANE(封包详细信息) 信息按照不同的OSI layer进行了分组,您可以展开每个项目查看。下面截图中展开的是HTTP信息。 6. DISSECTOR PANE(16进制数据) 在上面的例子里,我们在“封包详细信息”中选择查看TCP端口(80),其对应的16进制数据将自动显示在下面的面板中(0050)。 返回页面顶部 7. MISCELLANOUS(杂项) - - 正在进行捕捉的网络设备。 - 捕捉是否已经开始或已经停止。 - 捕捉结果的保存位置。 - 已捕捉的数据量。 - 已捕捉封包的数量。(P) - 显示的封包数量。(D) (经过显示过滤器过滤后仍然显示的封包) - 被标记的封包数量。(M) 过滤器:
正如您在Wireshark教程第一部分看到的一样,安装、运行Wireshark并开始分析网络是非常简单的。
使用Wireshark时最常见的问题,是当您使用默认设置时,会得到大量冗余信息,以至于很难找到自己需要的部分。 过犹不及。 这就是为什么过滤器会如此重要。它们可以帮助我们在庞杂的结果中迅速找到我们需要的信息。
两种过滤器的目的是不同的。 捕捉过滤器是数据经过的第一层过滤器,它用于控制捕捉数据的数量,以避免产生过大的日志文件。 显示过滤器是一种更为强大(复杂)的过滤器。它允许您在日志文件中迅速准确地找到所需要的记录。 两种过滤器使用的语法是完全不同的。我们将在接下来的几页中对它们进行介绍: 1. 捕捉过滤器 2. 显示过滤器 1. 捕捉过滤器 捕捉过滤器的语法与其它使用Lipcap(Linux)或者Winpcap(Windows)库开发的软件一样,比如著名的 TCPdump。捕捉过滤器必须在开始捕捉前设置完毕,这一点跟显示过滤器是不同的。 设置捕捉过滤器的步骤是: - 选择 capture -> options。 - 填写"capture filter"栏或者点击"capture filter"按钮为您的过滤器起一个名字并保存,以便在今后的捕捉中继续使用这个过滤器。 - 点击开始(Start)进行捕捉。
可能的值: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp. 如果没有特别指明是什么协议,则默认使用所有支持的协议。 Direction(方向): 可能的值: src, dst, src and dst, src or dst 如果没有特别指明来源或目的地,则默认使用 "src or dst" 作为关键字。 例如,"host 10.2.2.2"与"src or dst host 10.2.2.2"是一样的。 Host(s): 可能的值: net, port, host, portrange. 如果没有指定此值,则默认使用"host"关键字。 例如,"src 10.1.1.1"与"src host 10.1.1.1"相同。 Logical Operations(逻辑运算): 可能的值:not, and, or. 否("not")具有最高的优先级。或("or")和与("and")具有相同的优先级,运算时从左至右进行。 例如, "not tcp port 3128 and tcp port 23"与"(not tcp port 3128) and tcp port 23"相同。 "not tcp port 3128 and tcp port 23"与"not (tcp port 3128 and tcp port 23)"不同。 例子:
注意事项: 当使用关键字作为值时,需使用反斜杠“\”。 "ether proto \ip" (与关键字"ip"相同). 这样写将会以IP协议作为目标。 "ip proto \icmp" (与关键字"icmp"相同). 这样写将会以ping工具常用的icmp作为目标。 可以在"ip"或"ether"后面使用"multicast"及"broadcast"关键字。 当您想排除广播请求时,"no broadcast"就会非常有用。 查看 TCPdump的主页以获得更详细的捕捉过滤器语法说明。 在 Wiki Wireshark website上可以找到更多捕捉过滤器的例子。 返回页面顶部 2. 显示过滤器: 通常经过捕捉过滤器过滤后的数据还是很复杂。此时您可以使用显示过滤器进行更加细致的查找。 它的功能比捕捉过滤器更为强大,而且在您想修改过滤器条件时,并不需要重新捕捉一次。
您可以使用大量位于OSI模型第2至7层的协议。点击"Expression..."按钮后,您可以看到它们。 比如:IP,TCP,DNS,SSH 您同样可以在如下所示位置找到所支持的协议: Wireshark的网站提供了对各种 协议以及它们子类的说明。 String1, String2 (可选项): 协议的子类。 点击相关父类旁的"+"号,然后选择其子类。 Comparison operators (比较运算符): 可以使用6种比较运算符:
让我们举个例子: "tcp.dstport 80 xor tcp.dstport 1025" 只有当目的TCP端口为80或者来源于端口1025(但又不能同时满足这两点)时,这样的封包才会被显示。 例子:
换句话说,显示的封包将会为: 来源IP:除了10.1.2.3以外任意;目的IP:任意 以及 来源IP:任意;目的IP:除了10.4.5.6以外任意
换句话说,显示的封包将会为: 来源IP:除了10.1.2.3以外任意;同时须满足,目的IP:除了10.4.5.6以外任意
|