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

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

一、概述

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

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

本篇要介绍的工具包含:

windows:

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

Linux:

  • tcpdump够用了。

重大说明:

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

  • 如果想抓windows上的tcp包,还是用Wireshark吧

  • 如果想抓手机上上的http包,还是用Fiddler吧

首发地址:

  品茗IT-同步发布

品茗IT提供在线支持:

  一键快速构建Spring项目工具

  一键快速构建SpringBoot项目工具

  一键快速构建SpringCloud项目工具

  一站式Springboot项目生成

  Mysql一键生成Mybatis注解Mapper

  Mysql一键生成SpringDataRest项目

如果大家正在寻找一个java的学习环境,或者在开发中遇到困难,可以加入我们的java学习圈,点击即可加入,共同学习,节约学习时间,减少很多在学习中遇到的难题。

二、windows的抓包工具

2.1 Wireshark

2.1.1 下载安装

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

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

2.1.2 启动

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

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

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

2.1.3 抓包

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

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

[外链图片转存失败(img-6pdlwVEC-1565659239748)(https://www.pomit.cn/upload/picture/20190812/208256713638144.png)]

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

[外链图片转存失败(img-AlQQ6mKv-1565659239750)(https://www.pomit.cn/upload/picture/20190812/208257470374144.png)]

或语法: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。我默认走下去,然后它就一直抓包了。

界面如下:

[外链图片转存失败(img-sK9q8QiS-1565659239751)(https://www.pomit.cn/upload/picture/20190812/208260891345152.png)]

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

用Wireshark打开dumpfile.pcap文件:
Web基础配置篇(九): 抓包工具的介绍、安装及基本使用_第2张图片

然后使用方式就同上了。

2.2 Fiddler

2.2.1 下载安装

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

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

2.2.2 手机端http抓包

1. 允许远程连接

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

2. 设置手机流量经过

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

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

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

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

然后就可以用了:

[外链图片转存失败(img-MiqgeWzR-1565659239755)(https://www.pomit.cn/upload/picture/20190812/208276279804160.png)]

2.3 SRSniffer

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

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

链接:https://pan.baidu.com/s/1dKyoEB-qotQKsPEVLWCQ-w
提取码:h75r

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

[外链图片转存失败(img-6v9ghP3p-1565659239756)(https://www.pomit.cn/upload/picture/20190812/208278742049024.png)]

2.4 浏览器自带的抓包

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

[外链图片转存失败(img-o5H3Ik50-1565659239757)(https://www.pomit.cn/upload/picture/20190812/208296532848896.png)]

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

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

[外链图片转存失败(img-28whEHBQ-1565659239758)(https://www.pomit.cn/upload/picture/20190812/208297223938304.png)]

三、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

[外链图片转存失败(img-olAnzJ7W-1565659239760)(https://www.pomit.cn/upload/picture/20190812/208304540086528.png)]

将上面的命令结果保存到文件:

tcpdump -i eth0 host 192.168.0.49 -w test.cap

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

[外链图片转存失败(img-QqQNxVpX-1565659239761)(https://www.pomit.cn/upload/picture/20190812/208304890962176.png)]

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.49

3、过滤端口

抓取所有经过eth0,目的或源端口是25的网络数据:tcpdump -i eth0 port 25

指定源端口:tcpdump -i eth0 src port 25

指定目的端口:tcpdump -i eth0 dst port 25

4、网络过滤

抓取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.168

5、协议过滤

arp协议:tcpdump -i eth0 arp

ip协议:tcpdump -i eth0 ip

tcp协议:tcpdump -i eth0 tcp

udp协议:tcpdump -i eth0 udp

icmp协议:tcpdump -i eth0 icmp

6、常用表达式

非 : ! 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

快速构建项目

Spring组件化构建

SpringBoot组件化构建

SpringCloud服务化构建

喜欢这篇文章么,喜欢就加入我们一起讨论Java Web吧!
品茗IT交流群

你可能感兴趣的:(Web基础,web基础,抓包工具,wireshark,tcpdump)