首页 > 其他分享 >mitmproxy抓包工具

mitmproxy抓包工具

时间:2022-12-08 14:35:23浏览次数:88  
标签:regex request flow mitmproxy mitmdump 工具 com 抓包

中文官网 https://ptorch.com/docs/10/mitmproxy-concepts-options

之前写过一篇博客介绍fiddler的 https://www.cnblogs.com/zichliang/p/16067941.html
今天来说说mitmproxy 也是一款不错的抓包软件,因为之前写了 这篇文章对其再进行一些补充
mitmproxy 不仅可以抓包 还可以对包进行2次过滤 并且伪装请求 与python 进行交互,相比fiddler 和charles 更为灵活。

mitmproxy抓包工具

1. mitmproxy 介绍与安装

需要安装python环境

1. mitmproxy 是什么

mitmproxy是一组工具,可为HTTP/1,HTTP/2和WebSockets提供交互式的,具有SSL/TLS功能的拦截代理。

  • 拦截HTTP和HTTPS请求和响应并即时修改它们;
  • 保存完整的HTTP对话以供以后重播和分析;
  • 重播HTTP对话的客户端;
  • 重播先前记录的服务器的HTTP响应;
  • 反向代理模式将流量转发到指定的服务器;
  • macOS和Linux上的透明代理模式;
  • 使用Python对HTTP流量进行脚本化更改;
  • 即时生成用于拦截的SSL/TLS证书

2. 安装

直接开始安装
mitmproxy 命令不支持在 windows 系统中运行,所以可以选择linux虚拟机来完成
在 linux 中:

sudo pip3 install mitmproxy

在 windows 中,以管理员身份运行 cmd 或 power shell:

pip3 install mitmproxy

安装结束。
完成后,可以执行 mitmproxy 、 mitmdump 、 mitmweb 三个命令,我们可以拿 mitmdump 测试一下安装是否成功,执行:

PS D:\kyls_working> mitmdump --version
Mitmproxy: 8.0.0
Python: 3.9.6
OpenSSL: OpenSSL 1.1.1m 14 Dec 2021
Platform: Windows-10-10.0.22000-SP0

运行
要启动 mitmproxy 用
mitmproxy 、
mitmdump 、
mitmweb
这三个命令中的任意一个即可,这三个命令功能一致,且都可以加载自定义脚本,唯一的区别是交互界面的不同。
!!!!在运行过程需要安装mitmproxy 的安全证书
http://mitm.it/ 点击这个链接去选择安装安全证书

然后选择响应的系统去下载安装即可
安装过程如下

然后下一步确定即可
记得一定要重启浏览器
1. mitmproxy

使用SwitchyOmega
关注下 人家的github https://github.com/FelisCatus/SwitchyOmega

来设置代理服务器
然后在浏览器上设置好 就可以使用mitmproxy

在mitmproxy 命令行中 通过

  • 上下键 来选择包
  • 回车是进入
  • tab 是切换 request response 和detail
  • ESC+q 是退出

2. mitmdump

mitmdump -w test.txt
将抓到的数据 存入test.txt
然后就会发现 自己的文件一堆乱码
没关系 我们之后用python去读取 就行了
3.mitmweb(不推荐 很不好用)
直接在终端输入 mitmweb 会发现会直接进入浏览器

然后刷新你的网站 就会发现在web端抓到你的数据包了
和fidder一样是一个展示窗口

2. mitmproxy 手机端抓包

mitmproxy
mitmdump
mitmweb
设置mitmproxy
在linux上启动mitmproxy
会启动8080端口
如果要改变端口号 使用如下命令
mitmproxy -p 8888
监听的端口号就变成了8888
设置手机模拟器
在 夜神模拟器的手机中
长按wifi 修改 手机的代理服务器的ip地址

修改为你的mitmproxy 的服务器地址和设置的端口号

| 然后返回浏览器
输入 mitm.it 安装 安卓的证书

即可完成设置

查看证书
设置——> 安全——>受信任的凭据——>用户

清除数据包
按键盘上的 z

1. 功能键

访问浏览器
然后在我们的手机浏览器中输入http://www.baidu.com
即可完成抓包
查看某个数据包
上下键 选择数据包 回车进入详细数据包
退出某个数据包
q
清除数据包
z
退出
按下 q 然后再使用y完成退出

2. 数据包的过滤

启动mitmproxy 并且启动手机
打开网址 www.baidu.com
就会发现我们抓到了很多数据包
然后我们 输入字母 f

过滤表达式

光这个表格我就抄了好久... 不容易啊
mitmproxy工具中的许多命令都使用过滤器表达式。过滤器表达式由以下运算符组成

命令 描述
~a 匹配响应资源: CSS,Javascript,Flash,images.
~b regex Body
~bg regex 请求的Body
~bs regex 响应的Body
~c int HTTP响应码
~d regex 域名
~dst regex 匹配目标地址
~e 匹配错误
~h regex Header
~hq regex 请求Header
~hs regex 响应Header
~http 匹配HTTP流
~m regex 方法
~marked 匹配marked流
~q 匹配无响应请求
~s 匹配response响应
~src regex 匹配来源地址
~t regex Content-type header
~tcp 匹配TCP流
~tg regex 请求Content-Type Header
~ts regex 响应Content-Type Header
~u regex 网址URL
~websocket 匹配WebSocket流(和HTTP-WebSocket握手流)
! 一元非
&
|
(...) 分组

查看流选择器

在交互式上下文中,mitmproxy具有一组在当前视图上运行的便捷流选择器:

@all 所有流量
@focus 当前关注的流程
@shown 当前显示的所有流
@hidden 当前隐藏所有流
@marked 所有标记的流
@unmarked 所有未标记的流
这些经常在命令和键绑定中使用

例子

  1. 筛选出非200的请求

set viewer_filter '!~c 200'

  1. 筛选出百度这个域名的所有请求

set viewer_filter '~d baidu.com'

  1. 筛选post请求且是百度的请求

set viewer_filter '~m post & ~d baidu.com'
set viewer_filter '~m post & ~u baidu.com'

3. mitm 设置断点拦截

输入字母 i 以此来 写断点条件
请求篡改
例:

  1. 断点 百度域名且是 get的

set intercept '~d baidu.com & ~m get'
![断点 百度域名且是 get的.png](../../_resources/断点 百度域名且是 get的.png)
然后选择红色的数据包 点击回车进入
断点输入E修改详细数值

然后修改 我们的url 修改为
https:xw.qq.com 并且删除掉我们headers里的hosts
然后按q退出到列表页
按下 a 进行重新载入 即可完成请求篡改
响应篡改
进入 调试界面 进入

我们进入 response.body 即可 完成响应篡改

3. mitmdump 的使用
!!!注意更换设备就要再安装一台证书
mitmdump 非常重要 他可以和python脚本进行交互
在windows下直接输入

mitmdump
更换端口号
mitmdump -p 8888
载入自定义python脚本
mitmdump -p 8888 -s test.py
脚本有固定格式

# -*- coding: utf-8 -*-
# @Time    : 2022/11/29 17:20
# @Author  : lzc
# @Email   : [email protected]
# @File    : request.py
# @Software: PyCharm
# @blog    : https://www.cnblogs.com/zichliang

# 必须这么写
def request(flow):
  print(flow.request.headers)

我们设置好代理 安装好安全证书后 访问 http://httpbin.org/get
就会发现我们的服务端显示 headers的全部内容

第一个是我们需要的信息
然后我们会可以使用 mitmproxy 的ctx中的log日志模块 来记录我们的内容

# -*- coding: utf-8 -*-
# @Time    : 2022/11/29 18:20
# @Author  : lzc
# @Email   : [email protected]
# @File    : mitmproxy.py
# @Software: PyCharm
# @blog    : https://www.cnblogs.com/zichliang
from mitmproxy import ctx
# 必须这么写
def request(flow):
  # print(flow.request.headers)
  # # 请求头
  # ctx.log.info(str(flow.request.headers))
  # ctx.log.warn(str(flow.request.headers))
  # ctx.log.error(str(flow.request.headers))

  # # 请求的链接地址
  # ctx.log.error(str(flow.request.url))
  # # 请求的主机头
  # ctx.log.error(str(flow.request.host))
  # # 请求的方法
  ctx.log.error(str(flow.request.method))
  # # 请求的路径
  # ctx.log.error(str(flow.request.path))


重新启动我们的mitmproxy 并且重新访问一下url就会得到……

这样就能对颜色进行区分
也可以对响应内容进行访问

# -*- coding: utf-8 -*-
# @Time    : 2022/11/29 18:31
# @Author  : lzc
# @Email   : [email protected]
# @File    : response.py
# @Software: PyCharm
# @blog    : https://www.cnblogs.com/zichliang

def response(flow):
  # 响应的状态码
  ctx.log.error(str(flow.response.status_code))
  # 响应的内容
  ctx.log.error(str(flow.response.text))

使用mitmdump 代理

mitmdump -s test.py -p 8889 --mode upstream:https://xxx.xxx --stream-auth 通行证书+密码 -p 8889

标签:regex,request,flow,mitmproxy,mitmdump,工具,com,抓包
From: https://www.cnblogs.com/zichliang/p/16965902.html

相关文章

  • 黑科技工具,一键自动蜻蜓fm音频下载到本地
    今天分享给大家一款黑科技工具,可以一键自动下载蜻蜓fmmp3音频文件到本地。 可以对专辑音频进行批量自动下载到电脑本地,完全没有任何技术含量,小白也能进行下载使用。 这款......
  • zookeeper中两个不错的图形监控工具小结
    一个是在eclipse中的zooekeeper插件:与eclipse集成的管理zookeeper工具: zookeeperBrowser ​​​http://www.massedynamic.org/eclipse/updates/​​ 另外一个是​​htt......
  • (转)Guava 是个风火轮之基础工具(1)
    前言Guava是Java开发者的好朋友。虽然我在开发中使用Guava很长时间了,GuavaAPI的身影遍及我写的生产代码的每个角落,但是我用到的功能只是Guav......
  • Apache Commons工具包系列不错的介绍文
    开源工具系列文章:ApacheCommonsLang(1):http://ray-yui.iteye.com/blog/1953020ApacheCommonsLang(2):http://ray-yui.iteye.com/blog/195......
  • php一个简单的测试工具simpletest
    phpunit是很好的单元测试工具,而本文介绍一款更轻量级的单元测试工具,开源的,simpletest,1下载:​​​  http://sourceforge.net/projects/simp......
  • Golang依赖管理工具:glide从入门到精通使用
    这是一个创建于 2017-07-2205:33:09 的文章,其中的信息可能已经有所发展或是发生改变。介绍不论是开发Java还是你正在学习的Golang,都会遇到依赖管理问题。Java有牛逼轰轰......
  • 移动端MOBFS安全检测工具简介和资料
    MobSF是MobileSecurityFramework的缩写,是一个移动端应用安全问题检出的框架和工具,它适用于Android/iOS/Windows,能够执行动态和静态的恶意软件的分析和检测。支持Android和......
  • 排查github上有无代码泄露的两大不错的工具
    排查github上有无代码泄露的两大不错的工具,分别是:1)Gitrob(介绍文章:​​http://www.91ri.org/11928.html​​) 2)​​https://github.com/MiSecurity/x-patrol​​  ......
  • neo4j中图形展示化工具小结
    首先https://neo4j.com/developer/guide-data-visualization/中,列出了NEO4J中商业和开源的一些做可视化视图的工具其次再收集一下1https://geph......
  • 四大网络抓包神器,总有一款适合你~
        四大网络抓包神器,总有一款适合你~发布于2019-09-1616:03:32阅读 61.6K0 一、概述无论是开发还是测试,在工作中经常会遇到需要抓包的时候。本篇......