Официальный сайт: Событие Hooks & API (mitmproxy.org)
«Метод 1»
https://mitmproxy.org/downloads/
«Метод 2»
Установить митмппрокси
pip install mitmproxy
mitmproxy
Предусмотрены три команды с разными режимами запуска:
mitmproxy
提供一个命令行界面(Эта команда не поддерживаетwindows)。mitmdump
Предоставляет простой терминалвыход。mitmweb
Предоставляет интерфейс браузера.
mitmproxy -p указанный номер порта
mitmdump -p указанный номер порта
mitmweb -p указанный номер порта
Общие параметры
-h Справочная информация
-p Изменить порт прослушивания
-s нагрузка python Скрипт
«Примечание: перед установкой необходимо включить прокси-соединение».
Вам необходимо настроить прокси для установки или перейти непосредственно в каталог установки mitmproxy, чтобы получить сертификат для установки.
После подключения к mitmproxy на мобильном телефоне или устройстве необходимо настроить прокси, введите http://mitm.it/ Установить сертификат
http://mitm.it/
обозначение8899порт Запустить службу
mitmdump -p 8899
Убедитесь, что ваш компьютер и устройство iOS подключены к одной локальной сети.
1. Получить IP компьютера
ipconfig (Windows)
ifconfig (Mac/Linux)
2、агент конфигурации устройства iOS,существовать iOS Откройте приложение «Настройки» на своем устройстве.
3. Нажмите Wi-Fi и найдите сеть Wi-Fi, к которой вы подключены. Нажмите значок «i» рядом с именем сети, чтобы просмотреть сведения о сети.
image-20230808104200801
image-20230808104232186
4. На странице сведений о сети прокрутите вниз и найдите параметр «HTTP-прокси». Выберите Вручную.
5. Введите IP-адрес компьютера, на котором работает mitmproxy, в поле «Сервер» и введите порт прослушивания mitmproxy в поле «Порт». Значение по умолчанию — 8080.
6. Сохраните настройки и закройте приложение «Настройки».
7、Ввод через браузерhttp://mitm.it/
для сертификата Установить。
8. Зайдите в настройки Настройки доверия сертификата: настраивать -> Универсальный-> VPN и управление устройствами -> mitmproxy, нажмите, чтобы установить
9. Установка прошла успешно
10. Трастовый сертификат, универсальный. -> Об этой машине -> Прокрутите вниз до Сертификат доверия на настройку -> Найдите mitmproxy и нажмите, чтобы переключить доверие.
Теперь ваше устройство iOS будет проходить через mitmproxy, и все сетевые запросы и ответы можно будет перехватывать и изменять на mitmproxy. Вы можете просматривать и манипулировать этими запросами и ответами в интерфейсе mitmproxy.
Общая безопасность Android – Шифрование и учетные данные – Пользователи, а иногда и другие настройки WLAN внутри Установить сертификат
Сообщить об ошибке
Client TLS handshake failed. Client and mitmproxy cannot agree on a TLS version to use. You may need to adjust mitmproxy's tls_version_client_min option.
Просто используйте следующую команду, просто игнорируйте ее. Никакого воздействия пока.
mitmdump -p 8899 --set tls_version_client_min=SSL3
mitmweb -p 8899
Пример кода mitmproxt_demo01.py
# -*- coding: utf-8 -*-
'''
@Time : 2023/8/7 18:16
@Email : Lvan826199@163.com
@публичный аккаунт : Путь Мэн Уцзи к тестированию разработки
@File : mitmproxy list.py
'''
__author__ = "мальчик Мэнвуджи"
import mitmproxy
from mitmproxy import ctx,http
class Counter:
def __init__(self):
pass
# Все исходящие пакеты запросов будут обрабатываться этим методом.
def request(self, flow: mitmproxy.http.HTTPFlow):
# Получить объект запроса
request = flow.request
# Создайте экземпляр выходного класса
info = ctx.log.info
# Распечатать запрошенный URL
info(request.url)
# Метод запроса печати
info(request.method)
# Распечатать заголовок хоста
info(request.host)
# Порт запроса печати
info(str(request.port))
# Распечатать все заголовки запросов
info(str(request.headers))
# Распечатать заголовок файла cookie
info(str(request.cookies))
print("Запрошенные данные параметра----------------------")
info(str(request.data))
print("Запрошенные данные параметра----------------------")
# Все пакеты ответов сервера будут обрабатываться этим методом.
def response(self, flow: mitmproxy.http.HTTPFlow):
# Получить объект ответа
response = flow.response
# Создайте экземпляр выходного класса
info = ctx.log.info
# Распечатать код ответа
info(str(response.status_code))
# Распечатать все заголовки
info(str(response.headers))
# Распечатать заголовок файла отдел печенья
info(str(response.cookies))
# Распечатать содержимое ответного сообщения
info(str(response.text))
addons = [
Counter()
]
Запуск через скрипт
mitmweb -p 8899 -s .\mitmproxy_demo01.py
python существовать 「Windows」ВнизиспользоватьAESвремя от времени Установитьдаpycryptodome модуль
pip install pycryptodome
python существовать 「Linux」ВнизиспользоватьAESвремя от времени Установитьдаpycryptoмодуль
pip install pycrypto
aaa = '151691566822749_NEW_RDA_LOADOKaRgN'
Это будетSOH
对应даACCICкод1
# Таким образом, вы можете заменить его вот так
repl_aaa = aaa.replace(chr(1), " ")
string = "Hello World"
binary = " ".join(format(ord(char), '08b') for char in string)
print(binary)
Запустите этот код, и он выведет 01001000 01100101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100
,Это "Hello World" двоичное представление.
существуют В этом примере,format(ord(char), '08b')
Преобразуйте каждый символ в 8 битовая двоичная строка, затем используйте join()
Функция разделяет двоичное представление каждого символа пробелами, в результате чего получается строка, содержащая двоичное представление всей строки.
существовать Python , вы можете использовать строку encode()
Метод преобразует строку в данные типа байты. Вы можете указать кодировку символов, чтобы определить, как символы кодируются в байтовом представлении.
Вот пример кода, демонстрирующий, как преобразовать строку в байты:
string = "Hello World"
bytes_data = string.encode('utf-8')
print(bytes_data)
Запустите этот код, и он выведет b'Hello World'
,Этонить "Hello World" байтовое представление.
существуют В этом примере,encode()
Метод преобразования строки с использованием UTF-8 Метод кодирования преобразуется в данные байтового типа. По умолчанию Питон использовать UTF-8 как метод кодирования символов. Вы можете выбрать другие методы кодирования символов в соответствии с конкретными потребностями, например "utf-16"、"latin-1" ждать.
Следует отметить, что данные типа байта выражаются как b
Строка в начале указывает, что это байтовые данные, а не обычная строка.
aaa = '151691566822749_NEW_RDA_LOADOKaRgNxBJEpvYo1FdZQu9d85ExmqB97SpGUPvMmSYZXIauvSu9IgrpJSK5PAs4DMMNONB2daybYwrdCjCWKUOPUb1KTPyiHYfo9EVg5jMXkDMT7xebOYk0x0loFWsSEKguYmVe5U2jAc5EDPn8nIBLTxGXSeL/S6ZbXJhEszrI1FJ/CYxjZfQKVQhMENxsN8O/yhK2AgXQe4CDQT3+sxlLCFw5XcG4IGoD8kyyHbpulwjOQW98orOf2DBZkHjxFqjFo6G/7SVZ3wr0ER05uAopJpc8XBJSTfhNAzKT2JwatMG7beFxUzrBeuNJp7MHKJUUYjfUNeqhGF1dKaya1HdOxfUoWuCMUV0XMroNItipbLj0ZX5ZfftN/eskoZjDvYDvU0Oyt6xC7RZVIOLbyOlmWQ8Pl7NHzqFeVUqViVyGIaA8HsivAw+lStBo+W6qDCbkgAAg6Z+8fsiSjgDSgpLJSwBqO75HzRUDRHhHc9/Wqqdeq2pE6PnlrJ6XWrXooBwg0bbecb50d88e230df396fb6a53532280;'
binary = aaa.encode('utf-8')
print(binary)
выход
b'1\x015\x011691566822749\x01_NEW_RDA_LOADOK\x01aRgNxBJEpvYo1FdZQu9d85ExmqB97SpGUPvMmSYZXIauvSu9IgrpJSK5PAs4DMMNONB2daybYwrdCjCWKUOPUb1KTPyiHYfo9EVg5jMXkDMT7xebOYk0x0loFWsSEKguYmVe5U2jAc5EDPn8nIBLTxGXSeL/S6ZbXJhEszrI1FJ/CYxjZfQKVQhMENxsN8O/yhK2AgXQe4CDQT3+sxlLCFw5XcG4IGoD8kyyHbpulwjOQW98orOf2DBZkHjxFqjFo6G/7SVZ3wr0ER05uAopJpc8XBJSTfhNAzKT2JwatMG7beFxUzrBeuNJp7MHKJUUYjfUNeqhGF1dKaya1HdOxfUoWuCMUV0XMroNItipbLj0ZX5ZfftN/eskoZjDvYDvU0Oyt6xC7RZVIOLbyOlmWQ8Pl7NHzqFeVUqViVyGIaA8HsivAw+lStBo+W6qDCbkgAAg6Z+8fsiSjgDSgpLJSwBqO75HzRUDRHhHc9/Wqqdeq2pE6PnlrJ6XWrXooBwg\x01\x010bbecb50d88e230df396fb6a53532280\x01;'
Здесь не так уж и много выглядит, но настоящее Шифирование и дешифрование должно использовать этот метод для выполнения ряда операций. Можно сказать, что этот шаг является основной операцией.
Он включает связанные секреты и не может быть отображен. Если этот интерфейс зашифрован, будет соответствующий секретный ключ.
Если вы создаете интерфейс и вам необходимо его расшифровать, вы можете найти соответствующего разработчика, который предоставит вам секретный ключ.
Этот секретный ключ похож на поле SECRET_KEY в нашем файле django settings.py.