抓包就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。
抓包工具有很多,到网上一搜一大堆,但是本篇不准备介绍那些偏门的工具。本篇主要介绍下windows和linux上的主流几个抓包工具如何一步步使用的,以及在web开发中的应用。
本篇要介绍的工具包含:
windows:
Linux:
重大说明:
**如果大家正在寻找一个java的学习环境,或者在开发中遇到困难,可以<a
href="https://jq.qq.com/?_wv=1027&k=52sgH1J"
target="_blank">
加入我们的java学习圈,点击即可加入
</a>
,共同学习,节约学习时间,减少很多在学习中遇到的难题。**
首先,到官网:https://www.wireshark.org/#download下载wireshark。
然后,根据提示一路下一步就可以了。
注意,一定要:右键--管理员启动,不然打开之后看不到接口,当然你要是有就更好了,反正我这儿不用管理员启动是用不了的。
在这里插入图片描述
打开之后是这样的,接口虽然多,但是可以一下子找到自己要找的接口,有波浪线的接口就是可以抓包的接口。
选择网络接口之后,就会看到数据包刷刷地滚动。最新的记录,都是在最底下的。
我们想肉眼找到某一条记录就太难了。可以使用左上角的过滤器做简单的筛选。
在这里插入图片描述
当然,我们开发过程中,往往是查找指定的目的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
这种语法。左上角的筛选器可以帮助你写筛选语句的。
有时候我们需要对本机的接口进行抓包测试,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文件:
在这里插入图片描述
然后使用方式就同上了。
官网下载:https://www.telerik.com/fiddler,随便填个信息,然后下载就行了。
然后一路走下去。不多说了。另外windows的http抓包也不说了,实用性不大。
1. 允许远程连接
在这里插入图片描述
2. 设置手机流量经过
设置代理,打开你的手机,找到你所连接的WIFI,长按选择修改网络,输入密码后往下拖动,然后勾选显示高级选项,然后在代理一栏选择手动,再将你电脑的IP地址和端口号输入进去,然后保存。
在这里插入图片描述
手机端浏览器打开fiddler的8888端口:http://ip地址:8888
,提示下载证书。下载证书安装就可以了。
证书的作用是对https进行解析,等于是手机和fiddler之间建立了ssl通道,fiddler和目的网址之间也做了个ssl通道。
然后就可以用了:
在这里插入图片描述
官方网址真难找,不过百度一下就很多下载地址。
我再在百度网盘放了一份:
链接:https://pan.baidu.com/s/1dKyoEB-qotQKsPEVLWCQ-w
提取码:h75r
打开之后,是真的卡。进程刷新,你可能会看花眼。而且名称看起来并不是你想要的。比如你想找java进程,它显示javaw.exe,不过也情有可原,毕竟eclipse的java进程就是javaw启动的。。
在这里插入图片描述
按f12打开控制台,如果f12被禁掉了,可以在右键--> 检查(IE或者micresoft edge是审查元素)打开。如果右键也被禁掉了,随便找个没有禁掉的网页,先打开控制台,然后复制个连接到地址栏打开即可。
在这里插入图片描述
一般网站喜欢在控制台放个彩蛋,屁用没有。
点击network,就能看到网络请求的过程,以及请求响应这些。
在这里插入图片描述
这里还是只说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 ]
-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<数据包文件> 把数据包数据写入指定的文件。
抓取所有经过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直接打开:
在这里插入图片描述
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