首页 > 其他分享 >mitm命令和脚本

mitm命令和脚本

时间:2023-04-18 18:48:13浏览次数:30  
标签:脚本 log -- self flow 命令 mitm str response

1、介绍

在命令窗口中,输入命令可以获得帮助。

常用的一些命令整理:

-h, --help 查看帮助信息
--version 查看版本新
-q, --quiet 退出
-v, --verbose 增加日志详情
--scripts script, -s script 这里的script是.py文件

mitmweb:
  --no-web-open-browser
  --web-open-browser    Start a browser.
  --web-port PORT       Web UI port.
  --web-host HOST       Web UI host.

  Proxy Options:
  --listen-host HOST  
  --listen-port PORT, -p PORT
                       

2、脚本

import os
import time

import mitmproxy.http

"""
本模块用于监听浏览器,并存储报文到日志中
"""


class Counter:
    def __init__(self):
        self.id = 1
        if not os.path.exists(os.path.abspath("") + "\\log"):
            os.mkdir(os.path.abspath("") + "\\log")
        t = time.strftime("%Y%m%d-%H%M%S")
        self.message_log = os.path.abspath("") + "\\log\\" + t + ".log"
        self.err_log = os.path.abspath("") + "\\log\\" + t + "_err.log"
        f = open(self.message_log, mode="w+", encoding="utf-8")
        f.close()

    def response(self, flow):
        flow: mitmproxy.http.HTTPFlow
        sep = "======================================================\n"
        # 信息行
        s = sep + time.strftime("%Y%m%d-%H:%M:%S") + "  " + flow.request.scheme + "  " + "-1" + "  " + \
            str(self.id) + "\n"
        # 请求报文
        s = s + sep + flow.request.method + " " + flow.request.path + " " + flow.request.http_version
        for name, value in flow.request.headers.items():
            s = s + "\n" + str(name) + ": " + str(value)
        s = s + "\n\n"
        try:
            if flow.request.content:
                text = flow.request.content.decode("utf-8")
                s = s + text
        except Exception as e:
            s = s + "体部是非文本,或者非utf-8编码"
            print(e)
            f = open(self.err_log, mode="a+", encoding="utf-8")
            f.write(str(time.strftime("%H:%M:%S")) + "  " + str(self.id) + "  " + "request" + "\n" + str(e) + "\n")
            f.close()
        s = s + "\n"
        # 响应报文
        flow.response: mitmproxy.http.Response
        s = s + sep + flow.response.http_version + " " + str(flow.response.status_code) + " " + flow.response.reason
        for name, value in flow.response.headers.items():
            s = s + "\n" + str(name) + ": " + str(value)
        s = s + "\n\n"
        try:
            if flow.response.content:
                text = flow.response.content.decode("utf-8")
                s = s + text
        except Exception as e:
            s = s + "体部是非文本,或者非utf-8编码"
            print(e)
            f = open(self.err_log, mode="a+", encoding="utf-8")
            f.write(str(time.strftime("%H:%M:%S")) + "  " + str(self.id) + "  " + "response" + "\n" + str(e) + "\n")
            f.close()
        s = s + "\n"
        # 结尾
        s = s + sep + "\n\n\n"

        f = open(self.message_log,  mode="a+", encoding="utf-8")
        f.write(s)
        f.close()
        self.id = self.id + 1


addons = [
    Counter()
]

 

标签:脚本,log,--,self,flow,命令,mitm,str,response
From: https://www.cnblogs.com/wd404/p/17330700.html

相关文章

  • maven : 无法将“maven”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查
    解决思路:1、打开CMD,测试Java、mvn等命令是否能够运行,如果不能运行那就是Java环境的问题,参考:Java初学教程进行配置;2、如果上一步没问题,右键IDEA,以管理员身份运行即可。......
  • Linux 防火墙命令
    一、Linux查看、关闭、打开防火墙命令以下截图中的操作均在Centos7上进行。1.查看防火墙状态的命令 systemctlstatusfirewalld  或者 firewall-cmd--state 2.关闭防火墙命令2.1暂时关闭防火墙(使用reboot命令重启后会恢复到原来的状态)systemctlstopfirewall......
  • GPU-CPU命令行缓冲区
    目录书上25页命令行缓冲区是一个循环队列,且有大小限制(书上说是几千)CPU调用GPU干活,就会往队列屁股后添加指令GPU看到队列头有指令,就开始干活受CPU限制,受GPU限制受CPU限制:cpu繁忙,向命令行缓冲区写命令很慢,没有命令那gpu就闲下来了受GPU限制:gpu繁忙,命令行缓冲区已经写满......
  • NBU备份系统中oracle数据库自动恢复脚本
    #!/bin/bash#oracle数据库恢复源客户端主机名exportclient=dmzdb71cd/usr/openv/netbackup/bin/CONTROL=`./bplist-C${client}-t4-R/|awk-F:'NR==1{print$(NF)}'`;exportCONTROL;#恢复库Oracle环境变量exportORACLE_SID=moniexportORACLE_HOME=/u01/......
  • Shell脚本--case in
    当分支较多,并且判断条件比较简单时,使用casein语句就比较方便了。其基本格式为:caseexpressioninpattern1)statement1;;pattern2)statement2;;pattern3)statement3;;……*)statem......
  • Shell脚本--(())
    双小括号(())是BashShell中专门用来进行整数运算的命令,它的效率很高,写法灵活。但是,(())只能进行整数运算,不能对小数(浮点数)或者字符串进行运算。 1.(()) 使用(()) 的语法格式为:((表达式))通俗地讲,就是将数学运算表达式放在((和))之间。表达式可以只有一个......
  • iptables命令常用规则汇总
    iptables非常强大,但是参数选项多,学习成本较高。本文将常用的iptables的命令进行汇总,在关键时刻方便拿来即用。iptables的四表五链iptables的四表五链是指iptables中的四个表和五个链。四个表分别是:filter表:用于过滤数据包,控制网络流量。nat表:用于对数据包进行地址转换,实现......
  • Shell脚本--test/[]和[[]]
    0. 序言test([])和[[]] 在Shell 中都是用来检测某个条件是否成立。通过附带选项,可以进行数值、字符串和文件三个方面的检测。0.1. 与数值比较相关的选项num1-eqnum2判断num1是否和num2相等num1-nenum2判断num1是否和num2不相等num1-gtnum2......
  • 如何将 shell 脚本编译成二进制执行文件
    一、说明很多人写了一些shell脚本,想给其他人用但是又不想公开源代码,所以就要对shell脚本进行加密处理,那么我们可以Shell脚本编译器工具(SHC),使用shc将bash/shell脚本编译为二进制文件,隐藏源代码并防止被被人修改的功能。由于在大多数操作系统上默认是不安装的,因此需要手......
  • mitmproxy
    mitmproxy介绍、特征、工具以及示例–pytorch中文网(ptorch.com)1、介绍mitmproxy是一个python的项目,可以实现为HTTP/1,HTTP/2和WebSockets提供交互式的,具有SSL/TLS功能的拦截代理。基于pip进行安装,然后可以提供三种形式的服务:mitmproxy是具有SSL/TLS功能的交互式拦截侦听......