目前的抓包软件总体可以分为两类:
一种是设置代理抓取http包,比如Charles、mitmproxy这些软件。
另一种是直接抓取经过网卡的所有协议包,其中最出名就是大名鼎鼎的wireshark以及linux自带的抓包软件tcpdump。
下面重点介绍一下这四个抓包工具的特点以及使用。
wireshark想必大多数程序员都不会陌生。wireshark在各个平台都可以安装使用,它 可以抓取经过指定网卡的所有协议。 wireshark虽然很强大,但是对初学者其实不是很友好。
这也正是由于它太强大,它可以抓取所有包,所以初学者在使用时面对茫茫数据流不知所措。初学者需要认真的去学习怎么过滤得到自己感兴趣的包,但是如果不熟悉wireshark的过滤语法,要过滤数据包将举步维艰。
过滤语法简单介绍
wireshark的过滤语法总结起来其实也很简单,就是 以协议开头,后面可以跟着协议的属性,然后加上一些判断符号, 比如contains、==、>、<等等。比如只想展示http的协议内容,则直接在过滤器输入框中输入http即可。
如下图:
比如我 只想看http协议的请求头中uri包含’/api’的协议,就可以这么写:
如果想通过目标ip或者来源ip来过滤包,就不可以以http协议为前缀了,因为这些是ip协议的相关属性。 通过目标ip来过滤可以这么写:
上面表示目标机器的ip是61.135.217.100并且协议是http的包。
wireshark支持很多种协议,我们可以通过右上角的expression来打开搜索支持的协议,还可以找出协议支持的属性,然后填入期待的值,软件会自动为我们构建过滤语句。
优点:
功能强大,可以抓取所有协议的包
抓到的包容易分析
缺点:
由于线上服务器没有GUI,只有命令行,因此无法在线上服务器使用
无法分析https数据包,由于wireshark是在链路层获取的数据包信息,所以获取到的https包是加密后的数据,因此无法分析包内容。当然,我们可以对https数据包进行解密, 但是操作具有一定的复杂度,可能要消耗很多时间。
tcpdump是linux上自带的一个抓包软件(mac也有),功能强大,也可以抓取经过指定网卡的所有协议包。
由于是命令行工具,tcpdump抓取到的包不易于分析,一个常见的做法是将tcpdump抓到的包输出到某个文件,然后将文件拷贝下来用wireshark分析。
一些简单的过滤参数:
抓包内容输出到文件:
之后我们可以把test.cap直接用wireshark打开,就可以很直观的分析包了。
用tcpdump输出cap文件包:
tcpdump-r test.cap
Charles是一款http抓包工具,它是通过代理来实现的抓包。也就是我们在访问网页时需要配置代理,将代理指向Charles监听的端口,之后我们的http请求都会发向Charles的端口,之后Charles会帮我们转发并记录协议内容。
Charles的使用非常简单,配置好代理后,Charles就开始抓包了。
我们可以直接通过Charles的GUi查看包的内容:
上图中的unknown表示https加密后的数据,所以看到不协议的具体内容。我们可以通过安装Charles的证书,让Charles也可以查看https协议的具体内容。
优点 :
使用简单,只需配置一下代理地址就可以
要抓取https协议的配置也很简单,只要安装下charles的证书就可以了
mitmproxy是python写的一款http抓包工具,虽然只支持http抓包,但是它的特性非常强大,它不仅可以抓包,还可以对请求进行拦截、重现等操作。和Charles一样,它的原理也是基于代理,使用的时候需要设置代理指向它。
mitmproxy是命令行工具,但是也自带了mitmweb工具,可以让用户在网页上操作。另外,mitmproxy还支持用户自行编写插件,可以编写脚本对请求进行处理,然后把修改后的请求发出去。
1、安装
首先需要在机器安装python3以及pip3.之后通过pip3安装
pip3 install mitmproxy
如果安装mitmproxy过程中报错ModuleNotFoundError: No module named '_ssl',就需要安装一下OpenSSL,然后再重新编译安装一下python3。
安装好openSSL后再执行pip3 install mitmproxy
2、使用
安装后,直接在命令行输入mitmproxy就会进入它的交互界面:
这时候mitmproxy已经开始监听8080端口(默认),接着,我们可以去浏览器设置代理。浏览器设置代理的方式有很多,这里不多做介绍。
设置完代理后,访问浏览器的请求都会被发到mitmproxy上,mitmproxy根据规则对请求进行拦截(不配置拦截规则的话则都不拦截),所有经过的请求都会被输出:
在交互界面上可以通过快捷键操作请求。输入问号’?’,可以查看快捷键的文档。
3、下面介绍一些常用的快捷键和功能
① 请求过滤
在请求列表交互界面,按下f键后,可以输入一些过滤规则:
具体的过滤语法可以按下’?‘键后,再按下方向键右’—>’或者l键。
② 请求拦截
按下i键后,可以对指定的请求进行拦截。按mitmproxy收到指定条件的请求时,不会立马把它转发出去,而是等待我们执行resume操作后,才会把请求转发出去——在这期间我们甚至可以对请求进行手动修改。
红色字体表示该请求被拦截,之后我们可以按入a键来恢复该请求,可以输入A键恢复所有被拦截的请求。
③ 查看/编辑请求
把指示光标移动到某个请求上,按回车可以查看请求的内容。或者鼠标直接点击请求也可以。
之后通过左右方向键可以查看request、response、detail等信息。
如果要编辑请求,可以在这个界面输入e,然后会让我们选择编辑哪块内容:
之后就会进入vim编辑界面编辑相应的内容了(保存后会生效)。
④ 重发请求
mitmproxy的光标指向某个请求时,按下r键可以重发这个请求(重发前可以对该请求进行编辑)。
按下’:’键后,可以输入命令,这样我们就可以通过过滤规则批量的重发请求
replay.client是mitmproxy内置的一个命令,我们也可以自行编写命令。命令的编写可以参考官网文档,这里不做介绍。
⑤ 插件开发
我们可以编写插件,然后再启动的时候指定插件,mitmproxy处理请求的时候会执行一个插件的链,这样我们就可以对请求进行编辑然后再发送出去了。
借用官网的插件demo:
这个方法对每一个请求进行处理,然后打印序号。通过mitmproxy -s test.py来让插件生效。通过插件可以绑定各种连接事件。感兴趣的朋友可以自行去mitmproxy官网看文档,这里不多做介绍。
⑥ 保存抓到的请求数据
通过w快捷键我们可以把这次抓到的请求包保存到文件上。
通过mitmproxy -r file可以读取以前抓取的请求信息进行分析。
优点:
命令行操作,可以在无GUI界面的服务器上使用
对于这几个抓包神器,我总结了下使用场景:
只抓http协议的话:
推荐使用mitmproxy。mitmproxy丰富的功能不仅可以满足我们的抓包需求,还可以提升我们的工作效率。比如测试可以抓包后一键重发请求来重现bug,开发调试的时候可以修改请求内容等等。
如果是在线上的没有GUI的服务器:
推荐使用tcpdump,虽然mitmproxy也可以支持命令行抓包,但是生产环境的服务器最好不要乱安装第三方插件。另外,大多数服务器都有装tcpdump。我们可以通过把请求的内容输出到文件,然后拷贝会自己的电脑用wireshark分析。
想要抓取http以外的协议的话:
直接上wireshark。功能强大。对于Charles,感觉用了mitmproxy之后,就基本用不上Charles了。Charles好像也可以编辑后再发送,但是感觉不是很好用,可能我用的不是很熟吧。
问题一:抓包是什么意思? 10分 包指的是数据传输的数据包 抓包就是提取其中的数据包查看
问题二:抓包工具wireshark抓到的tcp数据中数字是什么意思 1、Wireshark的数据包详情窗口,如果是用中括号[]括起来的,表示注释,在数据包中不占字节
2、在二进制窗口中,如“DD 3D”,表示两个字节,一个字节8位
3、TCP数据包中,seq表示这个包的序号,注意,这个序号不是按1递增的,而是按tcp包内数据字节长度加上,如包内数据是21字节,而当前IP1发到IP2的包的seq是10的话,那下个IP1发到IP2的包的seq就是10+21=31
问题三:android 抓包是什么意思 就是通过工具把别人网络接口的数据包抓取过来查看请求方式和网址之类的东西
问题四:如何查看抓包数据 对于标准的Http返回,如果标明了Content-Encoding:Gzip的返回,在wireshark中能够直接查看原文。由于在移动网络开发中,一些移动网关会解压显式标明Gzip的数据,以防止手机浏览器得到不能够解压的Gzip内容,所以,很多移动开发者选择了不标准的Http头部。也就是说,Http返回头部并没有按标准标Content-Encoding:Gzip属性。这样就导致在wireshark中无法直接查看。
这时,将抓包得到的数据以raw形式存为文件,再使用UE以16进制查看,去掉文件中非Gzip压缩的数据,就可以将文件用Gzip解压工具解压后查看原文了。Gzip数据以1F8B开头,可以以此来划分文件中的Gzip和非Gzip数据。
问题五:监控流量和数据抓包有什么区别 监控流量只能看上网用了多大的带宽,看不到具体干什么。抓包可以分析出具体的网络行为,但是需要借助其它工具分析,还要有这方面的专业知识和经验。
问题六:抓包抓到的数据,怎么分析啊 5分 1, 取决于你抓包的层级。一般来说都是与网站之间交换的,未经格式化的较为数据。
2, 可以从网卡抓取本机收发的数据,也有人把从浏览器或其它工作在顶层的软件获得的数据,成为抓包。
3, 如果你所在的局域网比较原始,你还是可以尝试从网卡中获得广播的数据。
4, 分析有现成的软件,主要针对无法加密的部分展开,即发送、接受方地址、时间、路径、内容体积等进行。不涉及内容的情况下是典型的被动数据分析。
问题七:抓包工具是干嘛的 抓包工具是用于抓取一个程序的数据的,比如说网站数据等
问题八:抓包工具是什么意思?可以干什么用的? 就是截取网络数据包(抓包是指截取自己电脑到其他网络的数据包)的工具,主要用于做网游作弊器,安全检测……
问题九:什么是抓包工具? 你是网络管理员吗?你是不是有过这样的经历:在某一天的早上你突然发抚网络性能急剧下降,网络服务不能正常提供,服务器访问速度极慢甚至不能访问,网络交换机端口指示灯疯狂地闪烁、网络出口处的路由器已经处于满负荷的工作状态、路由器CPU已经到了百分之百的负荷……重启动后没有几分钟现象又重新出现了。
这是什么问题?设备坏了吗?不可能几台设备同时出问题。一定是有什么大流量的数据文件,耗尽了网络设备的资源,它们是什么?怎么看到它们?这时有经验的网管人员会想到用局域网抓包工具来分析一下。
你一定听说过红色代码、Nimda、冲击波以及震荡波这些臭名昭著的网络杀手。就是它们制造了上述种种恶行。它们来势汹汹,阻塞网络、感染主机,让网络管理员苦不堪言。当网络病毒出现时,如何才能及时发现染毒主机?下面我根据网络病毒都有扫描网络地址的特点,给大家介绍一个很实用的方法:用抓包工具寻找病毒源。
1.安装抓包工具。目的就是用它分析网络数据包的内容。找一个免费的或者试用版的抓包工具并不难。我使用了一种叫做SpyNet3.12 的抓包工具,非常小巧, 运行的速度也很快。安装完毕后我们就有了一台抓包主机。你可以通过SpyNet设置抓包的类型,比如是要捕获IP包还是ARP包,还可以根据目的地址的不同,设置更详细的过滤参数。
2.配置网络路由。你的路由器有缺省网关吗?如果有,指向了哪里?在病毒爆发的时候把缺省网关指向另外一台路由器是很危险的(除非你想搞瘫这台路由器)。在一些企业网里往往仅指出网内地址段的路由,而不加缺省路由,那么就把缺省路由指到抓包主机上吧(它不下地狱谁下地狱?当然这台主机的性能最好是高一点的,否则很容易被病毒冲击而亡)。这样可以让那些病毒主机发出的绝大部分扫描都自动送上门来。或者把网络的出口映像到抓包主机上,所有对外访问的网络包都会被分析到。
3.开始抓包。抓包主机已经设置好了,网络里的数据包也已经送过来了,那么我们看看网络里传输的到底是些什么。打开SpyNet 点击Capture 你会看到好多的数据显示出来,这些就是被捕获的数据包(如图)。
图中的主体窗口里显示了抓包的情况。列出了抓到数据包的序号、时间、源目的MAC地址、源目的IP地址、协议类型、源目的端口号等内容。很容易看出IP地址为10.32.20.71的主机在极短的时间内向大量的不同主机发出了访问请求,并且目的端口都是445。
4.找出染毒主机。从抓包的情况看,主机10.32.20.71值得怀疑。首先我们看一下目的IP地址,这些地址我们网络里存在吗?很可能网络里根本就没有这些网段。其次,正常情况下访问主机有可能在这么短的时间里发起这么多的访问请求吗?在毫秒级的时间内发出几十甚至几百个连接请求,正常吗?显然这台10.32.20.71的主机肯定有问题。再了解一下Microsoft-DS协议,该协议存在拒绝服务攻击的漏洞,连接端口是445,从而进一步证实了我们的判断。这样我们就很容易地找到了染毒主机的IP地址。剩下的工作就是给该主机操作系统打补丁杀病毒了。
既然抓到了病毒包,我们看一下这个数据包二进制的解码内容:
这些数据包的长度都是62个字节。数据包前12个字节包括了目的MAC和源MAC的地址信息,紧跟着的2字节指出了数据包的类型,0800代表的是IP包格式,0806代表ARP包格式。接着的20个字节是封装的IP包头,包括了源、目的IP地址、IP版本号等信息。剩下的28个字节封装的是TCP包头,包括了源、目的端口,TCP链接的状态信息等。这就构成了一个6......>>
当我们使用QQ与好友进行通话时,我们可以使用网络分析器抓包,分析传输数据并得到"对方IP"
首先,开启UDP过滤,以筛选UDP报文并设置条件选择字符串,输入020048查找
经过筛选后就以看到“对方主机的IP”
不论目标主机是电脑还是手机都可以进行抓取IP
获取指定网站的IP地址方法:
1.cmd命令做传统测试(ping)
2.使用nslookup查看服务器信息
3.跃点追踪(tracert)
4.使用站长之家或其他工具查询
Internet中所有计算机的IP地址都是可以全球统一分配的,因此可通过计算机的广域网IP地址来查看相对应的地理位置。Internet中有许多的网站收集了IP地址,以及相应的地理位置。我们可以使用这些定位系统来查看IP的模糊位置。
关于IP定位,上文中我们讲到的"对方IP"都是带有引号的。而所谓的“对方IP”,常常只是中转服务器的IP。近年来,网络传输因保护用户信息,社交软件公司都会使用到中转服务器。因此网络上常见的IP不准确,以及所谓的抓到”对方IP“不过是中转服务器的IP。那么需要获取对方IP,多数情况下仅通过分析传输数据是得不到的。而目前较为简便的方法为发送钓鱼网站并将对方访问的请求数据包返回。
关于IP的位置准确性,IP定位的范围大约为直径两千米。而定位误差大小视情况而定。因为我们所得到的是广域网IP,因此我们能够定位的只不过是对方广域网基站/路由的位置信息。(基站=路由+交换器)网络上,通过IP能够获取对方准确位置的说法都是错误的。(毕竟官方也不能单凭IP地址获取用户位置)。
那么以IP获取较为准确的位置的方法有下面几种:
1.IP定位
2.聚合定位(需要IP定位配合/官方常用手段)
3.三点定位(利用覆盖用户的三个基站计算)
4.运营定位(利用IP,SIM,IMEI等)
多数情况下,以上各种情况配合可以得到目标较为准确的位置。
QQ定位原理:
UDP是QQ传输使用的协议
020048为 QQ所使用UDP协议的报文头
QQ传输所使用的端口是4000~4100,默认端口:4000,若4000端口被占用即自动使用4001端口,并以此方式递增。
值得注意的是:::关于获取对方ip的位置这种行为是不符合规定。。。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)