MitmProxy介绍以及使用

这篇具有很好参考价值的文章主要介绍了MitmProxy介绍以及使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、MitmProxy介绍

2、MitmProxy安装使用排雷

3、MitmProxy用处

1、MitmProxy介绍

mitmproxy 就是用于 MITM 的 代理(proxy), 而MITM,也就是(Man-in-the-middle attack)中间人攻击,指的就是通过各种技术手段将入侵者的一台计算机(或服务器)虚拟放置在网络连接的两台计算机之间。(SMB会话劫持、DNS欺骗等)计算机相互通信的请求响应过程均可以被拦截获取,在中间人攻击中,攻击者将自己伪装成每一个参与会话的终端,且不被其他终端识破,攻击者可以拦截通讯双方的通话并插入新的内容

1.2 攻击图例

MitmProxy介绍以及使用### 1.3 代理服务器
中间人攻击可以通过代理服务器实现,由HTTP、SMTP、POP3和FTP等发展到SSL、SOCK4/5代理以及其他未知的代理类型,相当于包裹交换一个中转站。而mitmproxy就是通过代理的方式实现信息拦截的

2、MitmProxy安装使用排雷

mitmproxy相比于Charles和Fiddler,它可以以命令行或者脚本方式hook,也可以定制化抓取数据,实现像Charles一样的改装请求。

  • mitmproxy 官网:https://www.mitmproxy.org/
  • mitmproxy 官方文档:https://docs.mitmproxy.org/stable/
  • mitmproxy 官方脚本 demo:https://docs.mitmproxy.org/stable/addons-examples/

2.1 mitmproxy安装

2.1.1 windows安装

pip install pipx
pip install mitmproxy
# 或者直接用pip install mitmproxy 命令安装

windows安装完后,需要手动配置mitmproxy到环境变量中(注:我这里使用的是anconda环境,直接将bin目录下的所有可执行文件放入环境变量即可)
MitmProxy介绍以及使用
windows安装好后,可在IDE或者cmd中输入mitmweb查看是否安装成功
MitmProxy介绍以及使用
在windows环境下,mitmproxy接口并不支持
MitmProxy介绍以及使用
mitmweb 是mitmproxy的web化界面工具,在上面我们可以看到完整的请求响应流以及对应的头和身体

2.1.2 安装证书

此时,还没有安装成功,我们发现还不能拦截到数据,这是因为我们没有安装证书和打开对应的监听窗口, 这里主要的雷区就是,windows平台的证书其实在我们装mitmproxy的时候系统已经自动给你下载了
MitmProxy介绍以及使用
安装路径在我们的usr\13386(用户名).mitmproxy 下,p12结尾的证书就是windows平台下的。
MitmProxy介绍以及使用
双击mitmproxy-ca.p12,进入证书导入向导。
MitmProxy介绍以及使用
傻瓜式安装,下一步就行
MitmProxy介绍以及使用
注意这里的密码填空就行了。
下一步将证书放入下列存储选项中,选择受信任的根证书颁发机构
MitmProxy介绍以及使用
点击完成,证书就导入到当前用户\计算机的根证书存储里面了
MitmProxy介绍以及使用

2.1.3 开代理

接下来就是打开代理,win10平台可以直接在设置中搜索代理就可以定位到手动代理设置这一栏。也可以在chrome/Firefox下的高级设置中找到代理设置,打开代理,并且端口号为Proxy监听的端口号8080(手机端的安装配置与其类似),这时候重启mitmweb,可以看到下图所示,抓到本机发出的请求flow(流)了。其使用方法与Charles类似,这里不再赘述。
MitmProxy介绍以及使用

2.1.2 mac安装

brew  install  mitmproxy

如果是Mac,命令安装完后,会自动添加好环境变量。由于博主主要使用的是win的平台,对mac不太熟悉,要想参考麻烦移步其它文章 (奥力给~)

3、MitmProxy用处

mitmdump

mitmdump是mitmprox的核心,它是mitmproxy 的命令行版本。将 tcpdump 用于 HTTP
近似于 charles 的命令行版本文章来源地址https://www.toymoban.com/news/detail-442276.html

3.1 监听特定网站收发数据,捕获数据

import mitmproxy.http
from mitmproxy import ctx
import traceback, os

filter_host = "webvpn.bit.edu.cn"
url_path = "webvpn.bit.edu.cn/https/77726476706e69737468656265737421e7e056d2223e6f59700d8cbe915b24239d8e8349f501643293dc/search/results"


class catch_cookies(object):
    '''
    利用mitmproxy模拟一个完整的HTTP通信周期获取\修改数据
    '''

    def __init__(self):
        self.cookie = ""
        self.num = 0

    # 与服务器建立代理连接,仅仅是client与proxy连接,不会触发request,response以及其他http事件
    def http_conn(self, flow: mitmproxy.http.HTTPFlow):
        pass

    # 来自client的 HTTP 请求的头部被成功读取, body还是空的
    def request_headers(self, flow: mitmproxy.http.HTTPFlow):
        pass

    # 来自client的 HTTP 请求被成功完整读取(包括请求头cookie以及body)
    def request(self, flow: mitmproxy.http.HTTPFlow):
        global filter_host, url_path
        if (flow.request.host != filter_host) and (url_path not in str(flow.request.url)):
            return
        self.num += 1
        if self.num > 1:
            pass
        else:
            ctx.log.info(u"处理第 %d 个请求" % self.num)
            print("处理第 %d 个请求" % self.num)
            try:
                for key, value in flow.request.cookies.items():
                    # if "wengine_vpn_ticket" not in key:
                    #     pass
                    # else:
                    coo = "{}={}; ".format(key, value)
                    self.cookie += coo
                    # self.cookie += flow.request.cookies[i]
                print("cookie", self.cookie)
                # 将cookie写进文本里,再写一个程序读取,直接在此模块导入redis会报没有redis模块(未解决)
                with open(r'./cookies_ei_bit.txt', 'w', encoding="utf-8") as file:
                    file.write(self.cookie)
                    print("cookie写入成功\033[0m")
            except:
                print(traceback.print_exc())

    # 来自server的 HTTP的响应头部被成功读取, body还是空的
    def response_headers(self, flow: mitmproxy.http.HTTPFlow):
        pass

    # 来自server的 HTTP 响应被成功完整读取
    def response(self, flow: mitmproxy.http.HTTPFlow):
        pass

    # 处理响应异常, HTTP错误
    def error(self, flow: mitmproxy.http.HTTPFlow):
        pass


addons = [
    catch_cookies()
]

if __name__ == '__main__':
    from mitmproxy.tools.main import mitmweb

    mitmweb()

到了这里,关于MitmProxy介绍以及使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Android安全】安装mitmproxy Https抓包证书 | 安卓SSL抓包

    macbook上 mitmproxy 抓取安卓手机https流量 重点是安装mitmproxy Https抓包证书 手机需要root,macbook上需要安装好mitmproxy 需要完成下文1-3: https://github.com/doug-leith/cydia (接入有线网并开启无线热点) 启用 IP 转发: sudo sysctl -w net.inet.ip.forwarding=1 保存文件: https://github.com/doug-leith/cy

    2024年01月22日
    浏览(42)
  • 【Python beautifulsoup】详细介绍beautifulsoup库的使用方法,包括安装方式、基本用法、常用方法和技巧,以及结合lxml和parsel的具体使用场景和区别。

    Python beautifulsoup库是一个强大的Web抓取和解析库,它提供了丰富的功能和简单易用的API,可以帮助我们处理HTML和XML文档,从中提取数据,进行数据清洗和处理。beautifulsoup库基于Python标准库中的html.parser模块,同时还可以与第三方解析库lxml和parsel配合使用,提供更高效和灵活的

    2024年02月04日
    浏览(60)
  • RabbitMQ之介绍以及安装

    ​ MQ,从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ是一种非常常见的上下游“逻辑解耦 + 物理解耦” 的消息通信服务,使用了MQ之后,消息发送上游只需要依赖

    2024年02月01日
    浏览(41)
  • clickhouse介绍以及安装

    ClickHouse是一个快速、高可用、分布式的列式数据库管理系统(DBMS),专门用于在线分析处理(OLAP)工作负载。它由Yandex团队开发,最初用于自己的内部数据分析任务,后来在2016年开源。 ClickHouse使用列式存储引擎,它将数据按列存储在磁盘上,而不是按行存储。这种存储方

    2024年02月05日
    浏览(32)
  • MySQL笔记——MySQL数据库介绍以及在Linux里面安装MySQL数据库,对MySQL数据库的简单操作,MySQL的外接应用程序使用说明

    MySQL笔记——MySQL数据库介绍以及在Linux里面安装MySQL数据库,对MySQL数据库的简单操作,MySQL的外接应用程序使用说明 MySQL笔记——表的分组查询、表的分页查询、表的约束、数据库设计 MySQL案例——多表查询以及嵌套查询 MySQL笔记——数据库当中的事务以及Java实现对数据库进

    2024年01月16日
    浏览(70)
  • Jenkins基础介绍以及docker安装Jenkins

    Jenkins是一个可扩展的持续集成引擎 持续集成就是通常说的CI(Continues Integration) 每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。 白话:

    2024年02月13日
    浏览(55)
  • 初识JDBC——JDBC介绍、安装以及简单运用

    Java 数据库连接技术 (Java DataBase Connectivity) ,能实现 Java 程序对各种数据库的访问 由一组使用 Java 语言编写的类和接口 (JDBC API) 组成,它们位于 java.sql 以及 javax.sql 中         不必为不同的数据库专门编写不同的程序,而只需要加载不同的数据库驱动即可。 Class.forName (

    2024年02月06日
    浏览(37)
  • Docker的相关知识介绍以及mac环境的安装

    大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题: 依赖关系复杂,容易出现兼容性问题 开发、测试、生产环境有差异 Docker就是来解决这些问题的。Docker是一个快速交付应用、运行应用的技术:可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移

    2024年02月05日
    浏览(37)
  • K8S必备知识--docker的介绍以及安装

    本身是容器: 容器可以保护内容物 docker最初是dotCloud公司内部的一个业余项目,基于谷歌公司推出的Go语言实现的 以前为了实现同一台机上的各个应用隔离,采用虚拟化技术,但消耗资源过大 各应用的隔离是通过namespace的隔离来实现的 玩容器保证linux内核版本在3.8以上 use

    2024年02月03日
    浏览(44)
  • Stable Diffusion MacBookAir 手把手安装教程,以及checkpoint安装、Lora安装、civitai介绍。

    本地部署Stable Diffusion 安装git  Git - Downloads https://git-scm.com/downloads 安装python 3.10.6   Python Releases for macOS | Python.org The official home of the Python Programming Language https://www.python.org/downloads/macos/ 下载stable-diffusion-webui  GitHub - AUTOMATIC1111/stable-diffusion-webui: Stable Diffusion web UI Stable Diffusio

    2024年02月10日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包