其他分享
首页 > 其他分享> > 捕获移动APP HTTP/HTTPS网络数据包

捕获移动APP HTTP/HTTPS网络数据包

作者:互联网

大部分APP使用的数据通信基于HTTP/HTTPS,使用工具对其数据包进行获取

Mitmproxy抓取数据包

该抓包程序基于命令行,运行后会默认在当前电脑的8080端口开启一个代理服务,这个服务实际上是一个HTTP/HTTPS代理。将手机和mitmproxy所在的电脑处于同一局域网下,配置好CA证书,将手机网络代理设置为mitmproxy的代理服务地址。手机访问互联网的数据包将会流经mitmproxy,再由mitmproxy把这些数据包转发给真正的服务器,mitmproxy相当于中间人。

安装后在终端输入mitmproxy即可启动一个代理服务,如下是捕获到的手机HTTP/HTTPS数据包

image-20220629145513240

点击可以查看数据包详细信息

image-20220629150727142

调试于是利用该程序可以观察手机发送的请求,对请求进行修改并重新发送

Mitmdump实时抓包处理

使用Mitmdump对接Python脚本,基于此可在Python脚本中获得请求和响应的内容时,可以顺便添加一些解析、存储数据的逻辑,实现数据的抓取和实时处理

实例引入

编写如下python代码,文件名为test.py:

def request(flow):
    flow.request.headers['User-Agent'] = 'Mitmproxy'
    print(flow.request.headers)

在目录下打开终端,执行mitmdump -s test.py,如下是部分处理结果

image-20220629152516166

在上述代码中,定义了一个request方法,参数是flow,这是一个HTTPFlow对象,调用request属性即可获取当前的全球对象。这里将当前请求对象的请求头User-Agent修改成了MitmProxy,然后答打印出了所有请求头。

日志输出

mitmdump提供了专门的日志输出功能,可以设定以不同的颜色输出不同级别的结果,代码如下:

from mitmproxy import ctx

def request(flow):
    flow.request.headers['User-Agent'] = "MitmProxy"
    ctx.log.info(str(flow.request.headers))
    ctx.log.warn(str(flow.request.headers))
    ctx.log.error(str(flow.request.headers))

此处调用了ctx模块,有一个log的功能,设定不同的颜色输出不同级别的结果,以便调试

image-20220629153458053

调用info方法输出的结果为白色,调用warn方法输出的结果为黄色,调用error方法输出的结果为红色

请求与响应

编写如下代码:

from mitmproxy import ctx

def request(flow):
    request = flow.request
    info = ctx.log.info
    info(request.url)
    info(str(request.headers))
    info(str(request.cookies))
    info(request.host)
    info(request.method)
    info(str(request.port))
    info(request.scheme)

上述代码用于打印请求的一些基本属性

image-20220629155149495

不仅可以显示,还可以修改,比如将目标URL修改,如下所示:

from mitmproxy import ctx

def request(flow):
    url = "https://www.baidu.com"
    flow.request.url = url

同样的,mitmdump针对响应也提供了对应的处理接口,即response方法

from mitmproxy import ctx

def response(flow):
    response = flow.response
    info = ctx.log.info
    info(str(response.status_code))
    info(str(response.headers))
    info(str(response.cookies))
    info(str(response.text))

运行脚本,可以看到接收到的信息

image-20220629160352001

标签:info,HTTP,str,request,flow,mitmproxy,ctx,HTTPS,数据包
来源: https://www.cnblogs.com/N3ptune/p/16424295.html