Web基础配置篇(九): 抓包工具的介绍、安装及基本使用

Web基础配置篇(九): 抓包工具的介绍、安装及基本使用

一、概述

抓包就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。

抓包工具有很多,到网上一搜一大堆,但是本篇不准备介绍那些偏门的工具。本篇主要介绍下windows和linux上的主流几个抓包工具如何一步步使用的,以及在web开发中的应用。

本篇要介绍的工具包含:

windows:

  • Wireshark: 功能强大丰富,毋庸置疑。抓包工具首选。可以打开其他工具的抓包数据,配合RawCap,可以抓回路包。
  • Fiddler: http请求抓包工具,可以设置代理抓手机上的http请求。
  • SRSniffer: 指定进程的抓包工具,有点弱且卡,点到为止。
  • 浏览器自带的http抓包。

Linux:

  • tcpdump够用了。

重大说明:

  • 工具虽然很多,但是还是想多说一嘴,抓包工具虽然强大,但是都有自己的适用场景。如果你想抓windows上的http请求,那用浏览器自带的http抓包工具最好。
  • 如果想抓windows上的tcp包,还是用Wireshark吧
  • 如果想抓手机上上的http包,还是用Fiddler吧

**如果大家正在寻找一个java的学习环境,或者在开发中遇到困难,可以<a

href="https://jq.qq.com/?_wv=1027&k=52sgH1J"

target="_blank">

加入我们的java学习圈,点击即可加入

</a>

,共同学习,节约学习时间,减少很多在学习中遇到的难题。**

二、windows的抓包工具

2.1 Wireshark

2.1.1 下载安装

首先,到官网:https://www.wireshark.org/#download下载wireshark。

然后,根据提示一路下一步就可以了。

2.1.2 启动

注意,一定要:右键--管理员启动,不然打开之后看不到接口,当然你要是有就更好了,反正我这儿不用管理员启动是用不了的。

在这里插入图片描述

打开之后是这样的,接口虽然多,但是可以一下子找到自己要找的接口,有波浪线的接口就是可以抓包的接口。

2.1.3 抓包

选择网络接口之后,就会看到数据包刷刷地滚动。最新的记录,都是在最底下的。

我们想肉眼找到某一条记录就太难了。可以使用左上角的过滤器做简单的筛选。

在这里插入图片描述

当然,我们开发过程中,往往是查找指定的目的IP的数据包。可以使用ip.src == 10.247.62.91 && ip.dst == 192.168.0.49这种语法来查找发起ip是10.247.62.91,目的ip是192.168.0.49这种数据包:

在这里插入图片描述

或语法:ip.src == 10.247.62.91 || ip.src == 127.0.0.1,查找发起ip是10.247.62.91或127.0.0.1的数据包。

我觉得够用了,最多再加上端口号:tcp.port == 20806这种语法。左上角的筛选器可以帮助你写筛选语句的。

2.1.4 本地回路数据抓包

有时候我们需要对本机的接口进行抓包测试,Wireshark暂时做不到,网上有说卸掉Wireshark的WinPcap,我觉得还是不要这样做,因为有更好的方案:RawCap。

下载RawCap:https://www.netresec.com/?page=RawCap

打开页面后,页面上显示有使用方法,可以不必看。

下载后,文件只有23k,这么小巧实用。我立即存到网盘,防止它丢失。

双击打开,根据提示选择127.0.0.1 Loopback Pseudo-Interface 1 Loopback

然后提示Output path or filename [default 'dumpfile.pcap']:输入文件路径或者文件名,默认是当前目录下的dumpfile.pcap。我默认走下去,然后它就一直抓包了。

界面如下:

在这里插入图片描述

然后目录下多了个dumpfile.pcap文件。你不关掉上面的界面,它就一直抓包下去。

用Wireshark打开dumpfile.pcap文件:

在这里插入图片描述

然后使用方式就同上了。

2.2 Fiddler

2.2.1 下载安装

官网下载:https://www.telerik.com/fiddler,随便填个信息,然后下载就行了。

然后一路走下去。不多说了。另外windows的http抓包也不说了,实用性不大。

2.2.2 手机端http抓包

1. 允许远程连接

在这里插入图片描述

2. 设置手机流量经过

设置代理,打开你的手机,找到你所连接的WIFI,长按选择修改网络,输入密码后往下拖动,然后勾选显示高级选项,然后在代理一栏选择手动,再将你电脑的IP地址和端口号输入进去,然后保存。

在这里插入图片描述

手机端浏览器打开fiddler的8888端口:http://ip地址:8888,提示下载证书。下载证书安装就可以了。

证书的作用是对https进行解析,等于是手机和fiddler之间建立了ssl通道,fiddler和目的网址之间也做了个ssl通道。

然后就可以用了:

在这里插入图片描述

2.3 SRSniffer

官方网址真难找,不过百度一下就很多下载地址。

我再在百度网盘放了一份:

链接:https://pan.baidu.com/s/1dKyoEB-qotQKsPEVLWCQ-w

提取码:h75r

打开之后,是真的卡。进程刷新,你可能会看花眼。而且名称看起来并不是你想要的。比如你想找java进程,它显示javaw.exe,不过也情有可原,毕竟eclipse的java进程就是javaw启动的。。

在这里插入图片描述

2.4 浏览器自带的抓包

按f12打开控制台,如果f12被禁掉了,可以在右键--> 检查(IE或者micresoft edge是审查元素)打开。如果右键也被禁掉了,随便找个没有禁掉的网页,先打开控制台,然后复制个连接到地址栏打开即可。

在这里插入图片描述

一般网站喜欢在控制台放个彩蛋,屁用没有。

点击network,就能看到网络请求的过程,以及请求响应这些。

在这里插入图片描述

三、Linux的抓包工具tcpdump

3.1 下载安装

这里还是只说centos的安装:yum -y install tcpdump.

命令行输入:tcpdump -help,显示:

tcpdump version 4.9.2
libpcap version 1.5.3
OpenSSL 1.0.2k-fips  26 Jan 2017
Usage: tcpdump [-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ]
                [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
                [ -i interface ] [ -j tstamptype ] [ -M secret ] [ --number ]
                [ -Q|-P in|out|inout ]
                [ -r file ] [ -s snaplen ] [ --time-stamp-precision precision ]
                [ --immediate-mode ] [ -T type ] [ --version ] [ -V file ]
                [ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z postrotate-command ]
                [ -Z user ] [ expression ]

3.2 常用选项

-a 尝试将网络和广播地址转换成名称。
-c<数据包数目> 收到指定的数据包数目后,就停止进行倾倒操作。
-d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出。
-dd 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出。
-ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出。
-e 在每列倾倒资料上显示连接层级的文件头。
-f 用数字显示网际网络地址。
-F<表达文件> 指定内含表达方式的文件。
-i<网络界面> 使用指定的网络截面送出数据包。
-l 使用标准输出列的缓冲区。
-n 不把主机的网络地址转换成名字。
-N 不列出域名。
-O 不将数据包编码最佳化。
-p 不让网络界面进入混杂模式。
-q 快速输出,仅列出少数的传输协议信息。
-r<数据包文件> 从指定的文件读取数据包数据。
-s<数据包大小> 设置每个数据包的大小。
-S 用绝对而非相对数值列出TCP关联数。
-t 在每列倾倒资料上不显示时间戳记。
-tt 在每列倾倒资料上显示未经格式化的时间戳记。
-T<数据包类型> 强制将表达方式所指定的数据包转译成设置的数据包类型。
-v 详细显示指令执行过程。
-vv 更详细显示指令执行过程。
-x 用十六进制字码列出数据包资料。
-w<数据包文件> 把数据包数据写入指定的文件。

3.3 抓包并生成文件,由wireshark打开

抓取所有经过eth0,目的或源地址是192.168.0.49的网络数据:

tcpdump -i eth0 host 192.168.0.49

在这里插入图片描述

将上面的命令结果保存到文件:tcpdump -i eth0 host 192.168.0.49 -w test.cap

生成的test.cap文件拿到windows上,可以由wireshark直接打开:

在这里插入图片描述

3.4 其他示例

1、默认启动

tcpdump -vv普通情况下,直接启动tcpdump将监视第一个网络接口上所有流过的数据包。2、过滤主机抓取所有经过eth0,目的或源地址是192.168.0.49的网络数据:tcpdump -i eth0 host 192.168.0.49指定源地址,192.168.0.49:tcpdump -i eth0 src host 192.168.0.49指定目的地址,192.168.0.49:tcpdump -i eth0 dst host 192.168.0.493、过滤端口抓取所有经过eth0,目的或源端口是25的网络数据:tcpdump -i eth0 port 25指定源端口:tcpdump -i eth0 src port 25指定目的端口:tcpdump -i eth0 dst port 254、网络过滤抓取ip段为192.168:tcpdump -i eth0 net 192.168抓取源ip段为192.168:tcpdump -i eth0 src net 192.168抓取目的ip段为192.168:tcpdump -i eth0 dst net 192.1685、协议过滤arp协议:tcpdump -i eth0 arpip协议:tcpdump -i eth0 iptcp协议:tcpdump -i eth0 tcpudp协议:tcpdump -i eth0 udpicmp协议:tcpdump -i eth0 icmp6、常用表达式非 : ! or "not" (去掉双引号) 且 : && or "and" 或 : || or "or"抓取所有经过eth0,目的地址是192.168.1.254或192.168.1.200端口是80的TCP数: tcpdump -i eth0 '((tcp) and (port 80) and ((dst host 192.168.1.254) or (dst host 192.168.1.200)))'

抓取所有经过eth0,目标MAC地址是00:01:02:03:04:05的ICMP数据:

tcpdump -i eth0 '((icmp) and ((ether dst host 00:01:02:03:04:05)))'抓取所有经过eth0,目的网络是192.168,但目的主机不是192.168.1.200的TCP数据: tcpdump -i eth0 '((tcp) and ((dst net 192.168) and (not dst host 192.168.1.200)))'

以上我觉得对于开发人员来说足够了,这篇文章有更详细的用法:https://www.cnblogs.com/chenpingzhao/p/9108570.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券