数据包是什么意思(数据包有哪些格式)

访客4年前黑客资讯1124

Fiddler简介

Fiddler是一个http协议调试 *** 工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件)。 Fiddler 要比其他的 *** 调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式.

Fiddler使用c#语言开发,是一个开源软件。它包含一个简单却功能强大的基于 *** cript .NET 事件脚本子系统,它的灵活性非常棒,可以支持众多的http调试任务,并且能够使用c#语言进行扩展。他还提供一系列接口以支持插件开发。

Fiddler是基于 *** 模式工作的,简单来说,当你打开Fiddler软件,他会开始监听本机8888端口。然后将系统默认 *** 设置为127.0.0.1:8888。这样本机所有使用系统 *** 的软件包括浏览器会先把数据发送到Fiddler,然后Fiddler再将数据发送到服务器。服务器返回的数据先发送给Fiddler,再由Fiddler发送到指定的程序。在这个过程中Fiddler起到了转发数据( *** )的作用。由于数据无论是请求还是响应都通过Fiddler进行转发,所以Fiddler有权限对数据进行获取、存储、修改等操作。

Fiddler安装

打开http://www.telerik.com/fiddler,点击Free download进行下载。

安装过程很简单绿色,选择好安装路径,点击Install就可以了。这里特别注意下,你要记住你的安装路径,因为Fiddler默认不会创建桌面快捷方式,需要你去安装目录打开程序或者手动创建快捷方式。

如何抓取http(s)数据包?Fiddler抓包软件详解

Fiddler安装

界面简介

如何抓取http(s)数据包?Fiddler抓包软件详解

Fiddler界面

使用及设置

Fiddler功能繁杂,不好以图文的形式把每一项讲清楚。下面我讲一些日常使用的、关键的按钮、功能和设置。

安装完成后我们一般先进行几项很重要的设置,首先点击Tools->options->Connections

如何抓取http(s)数据包?Fiddler抓包软件详解

Fiddler

在这里我们可以修改Fiddler监听的端口,勾选红圈标示出来的这项,允许远程计算机连接。以便在以后我们抓取手机等移动设备的数据包。勾选之后在手机Wifi设置里设置 *** 为 “内网IP:8888"(如 192.168.1.2:8888)就可以抓取手机的HTTP数据包。

然后再将标签页切换到HTTPS,以设置Fiddler可以抓取https数据包

如何抓取http(s)数据包?Fiddler抓包软件详解

Fiddler设置

勾选以上几项,期间会弹出证书安装,一路确认下去。完成之后,你的Fiddler就可以抓取本机的https数据包

如何抓取http(s)数据包?Fiddler抓包软件详解

Fiddler工具栏

工具栏中我们主要介绍红圈选中的几个功能。X是用来清空当前数据记录的。

Decode选中之后会自动尝试解压响应的内容,包括但不限于以下格式(gzip、deflate、bzip2、brotli)。

"Keep 1000 sessions"表示显示多少条数据记录,默认显示全部,这里建议设置为500或者1000,默认全部的话,时间久了会把你电脑内存耗光.

Any Process 这个按钮可以拖动选择抓指定应用程序的包,比如拖动到firefox就只显示firefox的数据包。默认显示全部应用程序。

如何抓取http(s)数据包?Fiddler抓包软件详解

Save按钮可以把当前的数据记录保存到硬盘,以便在方便的时候重新打开分析

Clear Cache是清除浏览器缓存,基本不用

TextWizard是个功能非常强大的编码解码工具,支持多种格式。会经常用到

如何抓取http(s)数据包?Fiddler抓包软件详解

TextWizard

鼠标放到Online按钮上,会显示你当前的网卡信息、内网IP。方便给手机设置 *** 的时候查看。

当在左侧选择一条数据记录时,右侧会显示该请求的具体信息

如何抓取http(s)数据包?Fiddler抓包软件详解

请求数据

Headers会显示请求头的一些信息,例如是GET还是POST、浏览器UA、cookie等

Textview和SyntaxView功能基本一样,用来显示post数据的原始明文格式(UTF-8),如果是二进制数据则显示乱码

WebForms会更清晰的展示你的post内容(仅限于&连接格式的post内容,如果是json格式,这里不显示)

HexView,以16进制显示你的整个请求包

Auth,显示授权信息

Cookie,用来显示请求携带的cookie信息

raw,以明文(utf-8)显示整个请求头信息包含post内容

json,以json格式显示post内容

xml,以xml格式显示post内容

以下是服务器响应的响应信息截图

如何抓取http(s)数据包?Fiddler抓包软件详解

Headers显示响应头信息

TextView和SyntaxView作用相似,用来显示服务器返回的具体内容。当返回内容非常大的时候TextView会卡死很久才显示。SyntaxView比TextView响应快很多

ImageView,如果服务器返回的是图片流的话,会在这个标签显示图片

HexView,以16进制显示返回内容

WebView,如果返回的是html代码,这个标签会解析html并显示网页

Auth,显示返回的授权信息

Caching,显示缓冲

Cookie,显示服务器返回的cookie

Raw,以明文(utf-8)显示完整的响应数据包

Json,以json格式显示返回内容

XML,以xml格式显示返回内容

Composer工具介绍

Composer工具在Fiddler中使用率非常高,常常用来模拟一些数据的提交

如何抓取http(s)数据包?Fiddler抓包软件详解

上图我们使用Composer工具,模拟提交了百度翻译的数据包。我们提交一个请求,询问服务器China的意思是什么?

如何抓取http(s)数据包?Fiddler抓包软件详解

服务器给我们返回以上词义。返回格式为json格式。

Fiddler命令行

在命令行中我们基本只需要掌握bpu命令就可以了,这是一个数据劫持命令

我们在命令行中输入bpu http://fanyi.baidu.com/sug 然后回车,Fiddler会监听并劫持发往和返回http://fanyi.baidu.com/sug的所有数据,并支持中途编辑修改。

如何抓取http(s)数据包?Fiddler抓包软件详解

我们把我们提交的china关键词改成japan,发现服务器给我们返回了japan的翻译

如何抓取http(s)数据包?Fiddler抓包软件详解

通过这个命令,我们既可以修改请求,也可以修改响应。常常用来劫持数据,例如你玩的某个游戏里,你有100个金币,通过劫持数据,你可以吧自己的金币数量修改成1万甚至更多。

抓包实战

我们通过一个示例,来强化上面的学习。我们来使用Fiddler抓取百度翻译输入china的数据包,然后使用我们熟悉的编程语言来写一个翻译软件。

首先我们打开百度翻译(http://fanyi.baidu.com/#en/zh/),输入china,观察Fiddler中抓到的数据。

如何抓取http(s)数据包?Fiddler抓包软件详解

通过逐条查看,或者搜索china字样,我们找到了一个异步请求数据包,这个包是用来做词义联想的,虽然不是最终的翻译数据包,但是该包相对简单也可以实现翻译功能,我们就来模拟这个包实现翻译功能。

我们按住这条记录,拖动到Composer工具里,简单调试去除一下无用的头部信息,看浏览器是否能正常返回。我们精简后的请求为下图示例

如何抓取http(s)数据包?Fiddler抓包软件详解

下面我们使用python编程模拟这个请求

如何抓取http(s)数据包?Fiddler抓包软件详解如何抓取http(s)数据包?Fiddler抓包软件详解

import http

import json

from urllib import parse

keyword=input('请输入要翻译的单词:')

#构造请求头信息

headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36

(KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.3964.2 Safari/537.36'

,'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'}

conn = http.client.HTTPConnection("fanyi.baidu.com") #创建HTTP连接

body = {'kw': keyword} #构造post信息

body = parse.urlencode(body) #对post内容进行url编码

conn.request("POST","/sug",body=body,headers=headers) #开始请求

response = conn.getresponse() #获取响应

if(response.status==200): #判断服务器响应代码为200的话即返回正常

result = response.read().decode('utf-8'); #获取响应数据

result = json.loads(result) #解析json

print('翻译内容为:',result['data'][0]['v']) #输出翻译内容

else:

print('出现错误') #如果服务器响应代码不是200,是500或者404或者其他错误代码,都显示为错误

 

相关文章

黑客教你3分钟搞定  识破欺骗教你一招快速搞定黑客老巢

网络安全是一个综合的、复杂的工程,任何网络安全措施都不能保证万无一失。因此,对于一些重要的部门,一旦网络遭到攻击,如何追踪网络攻击,追查到攻击者并将其绳之以法,是十分必要的。   追踪网络攻击就...