Как подменить файл на сервере
Данный метод можно отнести к одним из самых старых методов. И я практически уверен в том, что в современных играх не сработает.
Разве что в браузерных играх на 32-битной версии браузера.Но для понимания самого принципа очень даже подходит.
В чём суть вопроса?
При запуске онлайн игр происходит обмен данными(пакетами) между геймером и сервером.
Send - пакет, который отправил игрок.
Смысл состоит в модификации первого типа пакетов.
Для всего этого очень популярной была (возможно и остаётся)программа
Для её работы необходимо обязательно отключить антивирус и задать полный контроль на процессами.
По сути программа как бы встаёт между клиентом игры и сервером.
Далее просто запускаем игру и данную программу.В самой программе выбираем нужную игру, открываем её и жмём на запись.
После чего выполняем какое-либо действие в игре.И в перехваченный пакет вносим необходимые нам изменения.Таких пакетов необходимо минимум два. Из таких двух модифицированных пакетов создаётся фильтр. И так далее шаг за шагом, действие за действием.
Но все эти действия предполагают наличие навыков и опыта у пользователя.Вдобавок к этому сам процесс долгий и нудный.А самое главное то, что передаваемые данные клиент-сервер наверняка будут зашифрованы, сведя этим на нет весь смысл перехвата и модификации пакетов.
Также и на стороне сервера данные проходят проверку(по крайней мере должны проходить).
Поэтому практически все нечестные геймеры предпочитают использовать готовые читерские программы.Это для них проще и быстрее.
Вот как обойти блокировку таких программ в клиенте игры, на мой взгляд более интересно.Но вернёмся к нашему вопросу.
В целом можно перехватывать и изменять пакеты не только от игры, но почти от любой программы. И не обязательно пользоваться именно WPE PRO. Тем более, что антивирус просто не даст её установить.Придётся его отключить.
Для анализа подойдёт любой редактор пакетов. Например
Hex Editor Neo
Очень хороший редактор, который позволит увидеть файл так сказать глазами компьютера. Действительно качественный и полезный продукт.
Но любые действия в таких редакторах подразумевают навык и опыт. Так как изменения вносятся на низком уровне, и необходимо точно знать, что менять в значениях. Иначе можно << натворить дел>>.
Какого то универсального метода, подходящего под большинство задач, не существует. Всё очень индивидуально. Подходить к такому рода задач надо будучи полностью уверенным в своих силах.
В первой задаче мы с тобой продолжим познавать различные атаки на электронную почту и обратим внимание на такой вектор, как подмена адреса отправителя в email’ах. Задача старая (еще бы, ведь электронная почта постарше www будет), но своей актуальности совсем не потеряла. Хотя когда-то и ходили разговорчики о том, что в скором времени мы откажемся от почты (да у нас в редакции каждый день ходят — по пять раз на дню отказываемся от этого архаизма :). — Прим. ред.), но, по мне, сейчас email — это один из основных методов «идентификации» пользователей. Хочешь где-то зарегиться — указывай email свой. О применении же подмены адреса я приведу ниже пару жизненных примеров.
WARNING
Вся информация предоставлена исключительно в ознакомительных целях. Лица, использующие данную информацию в противозаконных целях, могут быть привлечены к ответственности.
На самом деле решение этой задачи достаточно простое. Все, что нам понадобится, — это понимание протокола SMTP (TCP, 25-й порт), о котором мы начали говорить в прошлых номерах.
Напомню, что это протокол, который используется для пересылки email’ов. Когда ты отправляешь письмо, твой email-клиент подключается по SMTP к твоему почтовому серверу (MTA), а тот, в свою очередь, подключается к MTA-серверу получателя (из MX DNS записи имени домена).
Для того чтобы подменить адрес отправителя, мы можем обрезать эту схему и сами подключиться к серверу нашей жертвы (получателю). Можно, конечно, и по полной схеме, но тогда тебе нужен сервак и его настройка, а бонусов это никаких не дает.
Пример спуфинга отправителя для Yandex
Потом подключаемся к 25-му порту полученного сервера. Для этого можно использовать ncat. После приветствия от сервера мы пишем:
Во-первых, здесь можно использовать переносы строк. Фактически, для того чтобы закончить команду DATA, а с ней и все письмо, необходимо чаще всего написать точку (.) и перенос строки (\r\n). Как только ты закрываешь эту команду, сервер прилепляет письму специальный идентификатор, и его можно считать отправленным.
Основная фишка заключается в том, что данные из тела письма попадают в почтовый клиент нашей жертвы. Заголовок MAIL FROM на отображение не влияет. Ну и кроме того, сама архитектура почты не дает возможности проверить отправителя.
Ну и еще пара примеров о полезности спуфинга. Так, этой осенью кто-то проспуфил пресс-релиз от одной компании в Швеции, что их покупает Samsung. Новостные порталы оперативно распространили информацию, что и отразилось на бирже резким ростом компании. К сожалению для атакующих, ситуацию быстро задетектили и торги аннулировали. Еще один пример будет приведен в следующей задаче.
Проспуфленное письмо
Подделать отправителя в Facebook
Решение
Все очень просто, как видишь. Фейсбук исправлять это не собирается (да и не особо может). За подробностями отправляю тебя к статье моего друга Сергея Белова.
Подмена отправителя в Facebook
Определить антивирус через IE
Решение
В одном из последних выпусков «Хакера» я описывал в Easy Hack’е способ, как можно в Internet Explorer’е узнать о существовании какого-то файла в файловой системе с помощью JavaScript’а и встроенного XML-парсера, который поддерживает внешние entity (XXE). Вот, наткнулся на интересный скрипт, с помощью которого можно задетектить антивирус, установленный на компьютер-жертву. Скрипт работает для IE 10-й версии (и выше) и проверяет существование того или иного файла в системе. Но старый метод лучше, так как работает во всех версиях. Так что из этого скрипта можно вытянуть лишь пути по умолчанию для большинства актуальных версий Касперского.
Атаковать принтеры
Решение
Мы с тобой в Easy Hack’e обсуждали уже много различных методов атак на различные системы. Многие из них касались именно корпоративных сетей. Теперь дошел черед и до сетевых принтеров. Если компания становится хоть сколько-то крупной, без сетевых принтеров уже не обойтись. Но казалось бы, что можно сделать с этими глупыми железячками? На деле — достаточно многое.
Итак, для начала давай вспомним и изучим кое-какие особенности этих устройств. Во-первых, они не так глупы. Как и большинство современных девайсов, это устройство представляет собой миникомпьютер. То есть внутри может крутиться даже какая-то знакомая тебе ОС типа линукса, с полной поддержкой TCP/IP-стека. Далее, чаще всего данные девайсы имеют целый арсенал для удаленного их управления: SNMP, Telnet, SSH, веб-сервер для настройки через браузер. И конечно, по умолчанию они либо без пароля, либо с паролем стандартным. В-третьих, большинство из них можно еще и перепрошивать. Вроде ничего не забыл. Перейдем к тому, зачем же и как мы их можем атаковать.
Начнем с малого. С учетом первого пункта — поддержки TCP/IP-стека — мы можем использовать их для сканирования сети в Zombie mode Nmap’а. Напомню тебе, что эта техника представляет собой. У нас есть три хоста: атакующий, сканируемый хост (жертва), принтер. Атакующий отправляет от имени принтера запросы на подключение к портам жертвы. Жертва отвечает принтеру на запрос с теми или иными флагами в зависимости от открытости порта. В зависимости от выставленных флагов внутренние счетчики пакетов принтера меняются. Атакующий, подключаясь к принтеру, может узнать, изменились ли данные счетчики и насколько, и на основе этого сделать вывод: открыт порт или нет. Таким образом, атакующий может незаметно просканировать жертву, а все возможные подозрения будут падать на принтер. Задача еще больше затрудняется для жертвы, так как сканирование можно проводить со множества таких зомби-хостов (принтеров).
Далее. Теперь важно вспомнить, что представляет собой собственно печать на сетевом принтере. В самом обычном виде есть открытый порт у принтера: 9100 TCP. Все, что приходит на него, автоматически печатается на принтере. Таким образом, просто подключившись Ncat’ом к этому порту, мы можем напечатать любой текст. Но это так, для фана. Хотя на деле, когда печать идет с обычного компа, на этот порт посылаются данные в формате PJL или PostScript какой-нибудь, которые позволяют сделать правильную разметку страницы и вставить картинку. То есть тот же плейн-текст, но за счет команд PJL мы можем управлять поведением принтера при печати. Но для наших целей формат фактически не так важен, главное, что все идет плейн-текстом. Таким образом, все, что нам необходимо, — это произвести man-in-the-middle атаку, и мы сможем видеть все, что печатается на принтере. Казалось бы, что здесь такого? Но точно тебе скажу, что многие компании очень боятся утечек информации, а на принтерах печатается много всего конфиденциального. Так что принтер — прекрасное место для шпионажа.
Конечно, для проведения самой атаки мы можем, например, воспользоваться ARP-спуфингом, но есть метод лучше и проще. Так как чаще всего принтеры никто не настраивает и пароль по умолчанию к управляющим интерфейсам подходит, то мы можем подключиться к принтеру, сменить его IP на любой другой (все принтеры позволяют это сделать), а себе установить IP принтера. А с учетом того, что другие компы печатают данные просто подключаясь по определенному IP на 9100-й порт, подмены никто не заметит. Все, что нам надо, — принять эти данные и переслать их на итоговый принтер. И теперь можно сидеть и собирать материалы компании :). Просто, но мощно.
Крис Джон Райли (Chris John Riley) опубликовал небольшой Python-скрипт, который открывает 9100-й порт, сохраняет все задачи по печати (то есть документы) и перенаправляет их на любой другой принтер.
Ну и последнее — перепрошивка. Что это нам даст? Во-первых, можно организовать совсем незаметный шпионаж. Например, мы можем сделать так, что все распечатываемые документы на принтере также будут отправляться по электронной почте. Вообще, в каких-то принтерах вроде это можно сделать и просто настройками в веб-админке. Но самое интересное, что прецеденты такого вида шпионажа были. Раскусили его очень не скоро, при анализе логов почтового сервера. Во-вторых, мы можем получить полностью подконтрольный себе хост и производить все атаки с него.
Если тебя заинтересовала данная тема, то вот пара ссылочек: goo.gl/1wIqfB, goo.gl/8NH4vi.
Атаковать с использованием WebDAV
Решение
Веб — это большая-большая смесь различных технологий на самом деле. Их много-много, и неполоманного тоже много. А есть старое и почти забытое, но которое в определенных ситуациях дает отличный профит. Итак, WebDAV (Web Distributed Authoring and Versioning) — это относительно старая технология, позволяющая, если по-простому, работать с файлами на веб-сервере. Мы можем закачивать файлы, искать, перемещать их, используя возможность только веб-сервера. Получается некий аналог файловой системы. Хотя, с другой стороны, WebDAV — это не совсем доступ именно к файлам, так как это могут быть и «виртуальные» файлы и директории. Но для наших целей (атака) это не настолько важно.
Пример работы команд WebDAV
О’кей. Идейно разобрались. Что же до атаки? Ну, WebDAV нам сулит две вещи. Во-первых, это дисклоз информации. Так как мы можем производить поиск по файловой системе (не по всей, разумеется), то есть шанс найти что-то, что не должно быть нам доступно. Во-вторых, это возможность заливки файлов. И здесь все может быть очень аппетитно. Как минимум мы можем залить HTML’ку и поиметь хранимую XSS, как максимум (?) — мы можем залить туда шелл и получить полный доступ.
Как же нам это провернуть? Для этого надо понять ряд вещей: поддерживает ли сервер WebDAV и какой доступ у нас есть. Для того чтобы понять, есть ли поддержка, мы можем посмотреть заголовки веб-сервера. Тот же апач сообщает об этом. Кроме того, некоторые веб-серверы поддерживают его по умолчанию (IIS 5.x).
Детектим поддержку WebDAV
Далее, если мы ее обнаружили, то мы можем использовать команду PROPFIND или SEARCH для поиска имеющихся файлов на сервере. Но тут нас может ждать первая преграда — аутентификация. К сожалению, очень на многих веб-серверах при настройке WebDAV это одно из необходимых условий. Брутфорс и пароли по умолчанию, конечно, в помощь. Когда мы найдем необходимый файл, то спокойно можем его качать (используется обычный GET).
А как же с загрузкой файлов? Здесь тоже все отчасти просто. Используется метод PUT для закачки файлов. Но есть два существенных ограничения. Во-первых, чаще всего мы не можем писать в любую директорию. На это у директории должны быть соответствующие права. Но главное, насколько я знаю, невозможно понять, для какой директории есть права на запись, а для какой — нет. То есть тот же OPTIONS будет един для всех. С другой стороны, мы просто можем потыкаться везде PUT’ом. Во-вторых, часто имеется список расширений, которые можно загружать. Да-да, не только мы умные :).
Так вот, чтобы четко протестить веб-сервер на предмет WebDAV, необходимо просканить все директории с помощью OPTIONS-метода (тлз отдельных не видел, а модуль в метасплоите проверяет лишь корень веб-сервера, так что рукописный скрипт или Burp тебе в помощь). А после этого каждую из найденных — на возможность загрузки в нее различных страшных файлов. Вот под это есть одна тулзенка — DAVTest. Она вполне удобна для тестирования. Создает рандомные имена файлам и папкам, загружает с различными расширениями, подчищает за собой. Кроме того, может проверить олдскульный трик: закачать файл с одним расширением, а потом его переименовать. Аналогичные модули есть и в Metasploit’е.
Надеюсь, прочтенное наполнило тебя энтузиазмом и жаждой жизни! Кстати, если тебя интересуют какие-то виды атак или технологии, о которых бы ты хотел узнать, — пиши на почту.
Сегодня загрузка файлов является практически неотъемлемым атрибутом современного web приложения. В данной статье речь пойдёт о том, как же загрузить файл(ы) на сервер с помощью PHP.
Настройка php.ini
Конфигурационный файл php.ini необходимо настраивать согласно бизнес-логики проекта! Например, мы планируем загружать не более десяти файлов до 2 Мбайт, а это значит нам понадобиться
Загрузка одного файла на сервер из формы
После отправки файла PHP-скрипту upload.php его можно перехватить с помощью суперглобальной переменной $_FILES с таким же именем, которая в массиве содержит информацию о файле (в нашем случае image ):
Для того, чтобы "редиска" не загрузил вредоносный код, встроенный в изображение, нельзя доверять функции getimagesize() , которая также возвращает MIME-тип. Функция ожидает, что первый аргумент является ссылкой на корректный файл изображения. Определить настоящий MIME-тип картинки можно через расширение FileInfo . Код ниже проверит наличие ключевого слова image в типе нашего загружаемого файла и если его не окажется, выдаст ошибку:
Таким образом, при необходимости, делаем проверку и на другие MIME-типы. Например, для zip архивов проверка будет такая:
На данном этапе мы уже можем загружать абсолютно любые картинки на наш сервер, прошедшие проверку на MIME-тип, но для загрузки изображений по определённым характеристикам нам необходимо валидировать их с помощью функции getimagesize() , которой отдадим сам бинарный файл $_FILES['image']['tmp_name'] . В результате мы получим массив из элементов:
Для дальнейшей валидации изображения и работы над ним нам необходимо знать только 3 значения: ширину, высоту и размер файла (для вычисления размера применим функцию filesize() для бинарного файла из временной папки).
После всех проверок мы можем с уверенностью переместить наш загружаемый файл в какую-нибудь директорию с картинками. Делать лучше это через функцию move_uploaded_file(), которая работает в безопасном режиме. Перед перемещением файла нельзя забыть сгенерировать случайное имя и расширение из типа изображения для нашего файла. Вот так это выглядит:
Вместо простого способа генерации имени файла на основе MD5-хеша можно пойти более продвинутым путём, а именно написать отдельную функцию, которая будет проверять уникальность названия картинки для того, чтобы случайно не перезаписать уже загруженный файл. Если такого названия ещё нет, функция сгенерирует его. Такая проблема появляется в больших проектах и с большим количеством картинок. Но всё же)
Генерация имени для картинки теперь будет такой:
Мы реализовали простой, но в тоже время практичный (с точки зрения безопасности) механизм загрузки файла на сервер. Весь код целиком лежит здесь .
Загрузка нескольких файлов на сервер из формы
Разберём механизм загрузки нескольких изображений за один раз с локальной машины пользователя. Продолжим дальше работать с $_FILES . Наша новая HTML-форма будет немного отличаться от старой.
Как видно в конец имени поля выбора файла name="images[]" добавились фигурные скобки и атрибут multiple , который разрешает браузеру выбрать несколько файлов. Все файлы снова загрузятся во временную папку, если не будет никаких ошибок в php.ini . Перехватить их можно в $_FILES , но на этот раз суперглобальная переменная будет иметь неудобную структуру для обработки данных в массиве. Решается эта задача небольшими манипуляциями с массивом:
Мы реализовали механизм загрузки нескольких файлов на сервер. Весь код целиком лежит здесь .
Документацию можно почитать на официальном сайте , а в данной заметке я покажу основные кейсы его использования.
Установка и предварительная настройка
Установка и запуск
Скачайте и установите Charles .
При первом запуске Charles скорее всего попросит разрешения внести изменения в сетевые настройки вашего компьютера, согласитесь.
Настройка прокси
Далее перейдите в Proxy – Access Control Setting, нажмите кнопку Add и добавьте IP-адрес 0.0.0.0/0.
Установите сертификаты на компьютер: Help – SSL Proxying – Install Charles Root Certificate.
Укажите порт: Proxy – Proxy Settings – вкладка Proxies – Port: 8888.
Проксирование трафика веб-браузера
Если не хотите видеть запросы с ПК, перейдите на вкладку MacOS (Windows) и снимите чекбоксы. Но если целью является изучение трафика из браузера, наоборот, удостоверьтесь, что чекбоксы установлены.
Когда закончите с настройками прокси, перезапустите Charles.
Настройка прокси на устройстве
Если целью является изучение трафика с устройства, например со смартфона, нужно выполнить на нем дополнительные настройки.
Компьютер с Charles и устройство должны находиться в одной сети.
На устройстве, в настройках сети или Wi-Fi, укажите прокси-сервер: IP-адрес компьютера с запущенным Charles и порт 8888, или другой, который был указан при настройке прокси.
Быстро узнать IP-адрес компьютера с запущенным Charles можно через пункт меню Help – Local IP Address.
Для iPhone откройте Настройки (Settings), перейдите в настройки Wi-Fi, выберите активную Wi-Fi сеть, пролистайте экран вниз и выберите пункт Настройка прокси (Configure Proxy). Метод определения выберите Вручную (Manual) и укажите IP-адрес и порт.
Далее нужно установить сертификат прокси-сервера.
Установите скачанный сертификат Charles. Процесс установки зависит от используемого устройства и может различаться.
Например, чтобы установить сертификат на iPhone откройте Настройки (Settings), перейдите в Основные (General), пролистайте вниз и выберите пункт Профили и управление устройством (Profiles & Device Management). В открывшемся меню найдите загруженный профиль сертификата, откройте его, а затем установите.
Дополнительно может потребоваться установить доверие сертификату. Откройте Настройки (Settings) – Основные – Об этом устройстве (About), пролистайте вниз до конца, выберите пункт Доверие сертификатов (Certificate Trust Settings). В открывшемся окне отметьте переключателем сертификат, которому хотите дать доверие.
Для Android действия будут похожими, за исключением того, что дополнительно не потребуется указывать доверие сертификату, его достаточно будет лишь установить.
Подробнее про установку сертификатов можно прочитать в документации Charles.
Теперь можно проксировать и изучать трафик.
Как смотреть трафик
Запустите Charles. На устройстве или в браузере откройте интересующий сайт или приложение. При выполнении действий на клиенте, запросы с него и ответы от сервера будут логироваться в Charles.
В режиме Structure в левой части окна отображается список запросов, сгруппированный по хостам. Выделив элемент хоста, в правой части окна будет выведена подробная информация о запросе (сверху) и ответе (снизу), в том числе метод, заголовки, куки, запрос, ответ, параметры и прочая информация.
В режиме Sequence запросы отображаются без группировки, последовательно.
Чтобы исключить из отображения ненужные хосты, удобно пользоваться фильтром (поле под списком хостов).
Выделив хост, в контекстном меню можно включить режим Focus, при котором запросы к интересующим хостам будут группироваться вместе, а остальные скрыты в отдельную группу.
Не забывайте пользоваться Поиском (Edit – Find или Cmd+F). Он поможет быстро найти интересующий параметр или подстроку среди перехваченных запросов.
На что стоит обращать внимание:
- запрос уходит на верный URL;
- допустимое время между действием, отправкой запроса и получением ответа;
- метод, код ответа, тело, параметры cоответствуют ожидаемым, значения не пустые;
- формат данных;
- запрос не дублируется;
- данные отобразились на клиенте.
Как менять запросы и ответы
Задача: на лету изменить параметр в заголовке или в теле запроса и посмотреть, что вернёт сервер, либо наоборот, модифицировать ответ сервера, чтобы проверить как поведет себя клиент.
В этом случае можно использовать инструмент Rewrite (Tools – Rewrite – галочка Enable Rewrite.
Добавьте новое правило, введите хост (или оставьте пустым, тогда правило будет действовать для всех хостов), затем заполните Rewrite Rule, где укажите что на что необходимо заменить.
В примере ниже, значение поля bonus в теле ответа будет заменено со 100 на 5000.
Еще задача: допустим есть лента с контентом (видео, реклама, музыка) и при тестировании нужно быстро изменить его источник без вмешательства разработчика.
В разделе Match можно использовать регулярные выражения.
Аналогичным способом через Rewrite можно изменять, добавлять, удалять заголовки, менять коды ответа сервера, хосты и url.
Как вручную отредактировать запрос
Задача: перехватить запрос (ответ) и перед отправкой (приемом) его отредактировать. Отличие от предыдущей задачи заключается в том, что в ней данные менялись на лету по заранее заданному шаблону, здесь же редактирование осуществляется вручную.
Запросы можно редактировать используя инструмент Compose. Прежде нужно, чтобы запрос выполнился хотя бы один раз. Найдите его среди остальных запросов. В контекстном меню выберите Compose.
В открывшемся окне можно изменить тело запроса, метод, протокол, url, параметры, заголовки и куки. Затем нужно нажать кнопку Execute и запрос будет отправлен с новыми данными.
Инструмент Repeat в контекстном меню запроса отправит его на сервер еще раз.
Repeat Advanced – похож на Repeat, однако позволяет указать количество отправляемых запросов и задержку между ними. Данный функционал может быть полезен при проверке сервера на флуд.
С помощью инструмента Breakpoints (точки остановка) можно перехватывать и изменять не только запросы, но так же и ответы от сервера, прежде чем они попадут на клиент.
Для начала нужно включить возможность использования Breakpoints (Proxy – Breakpoint Settings – Enable Breakpoints).
Далее нужно указать URL запроса, который в случае выполнения должен быть перехвачен. Это можно сделать в том же окне Breakpoint Settings, либо повесить Breakpoint через контекстное меню, выбрав ранее выполненный запрос.
Перед выполнением запроса он будет остановлен и вы сможете отредактировать его тело, метод, протокол, url, параметры, заголовки и куки.
Когда запрос будет отправлен, ответ так же будет перехвачен, его аналогичным способом можно отредактировать.
Как подменить хост в API
Задача: подменить продовый хост с API на тестовый. Это можно сделать двумя способами.
Первый, через инструмент Rewrite, подобно тому, как описано в предыдущем разделе.
Второй способ подменить API, заключается в использовании инструмента Map Remote (Tools – Map Remote).
В зависимости от задачи можно подменить хост целиком, его часть или только параметры.
Как подменить код ответа сервера
Задача: проверить как поведет себя клиент при неожиданном коде ответа от сервера.
Как и в предыдущих двух примерах, тут подойдет инструмент Rewrite (Tools – Rewrite).
Как эмулировать недоступность сервера
Задача: проверить как поведет себя клиент при недоступности хоста.
Используя инструмент Block List (Tools – Block List), можно заблокировать доступ клиента к указанному хосту. На выбор разрыв соединения либо 403 код ответа.
Инструмент Allow List (Tools – Allow List) наоборот блокирует все хосты кроме разрешенных.
Как замокать ручку или подменить файл
Задача: подменить ответ от сервера на заранее подготовленный, сохраненный локально, например, чтобы замокать ответ ручки или заменить скрипт.
Для этих целей можно использовать инструмент Map Local (Tools – Map Local).
В настройках укажите ручку или файл на сервере, а также локальный файл, который будет использован вместо них. Поддерживаются форматы HTML, CSS, JSON, XML и медиафайлы.
Как эмулировать проблемы в сети
Задача: посмотреть, как работает сервис в различных сетевых условиях.
Для этого предназначен инструмент Throttle (Proxy – Throttle Settings).
Здесь можно включить сетевые ограничения для определенных или всех хостов, а так же задать различные сетевые параметры.
- Bandwidth – пропускная способность;
- Utilisation – эффективность использования пропускной способности;
- Latency – задержка в миллисекундах между клиентом и сервером;
- MTU – максимальный объём данных за одну итерацию;
- Reliability – вероятность, что соединение не удастся;
- Stability – вероятность, что соединение будет нестабильным.
Так же можно использовать готовые предустановки из списка.
Как раздать VPN
Задача: дать доступ другому устройству в корпоративную сеть.
Если компьютер с установленным Charles имеет доступ к сети VPN, то и устройства, трафик которых проксируется, будут иметь доступ к той же сети.
Другие полезные функции
Инструмент Block Cookies – предотвращает получение клиентом запросов на установку cookie с сервера.
Инструмент No Caching предотвращает кэширование через заголовки.
MacOS Proxy или Windows Proxy разрешает или запрещает проксирование трафика из браузера, установленного на том же компьютере, что и Charles.
Инструмент Port Forwarding (проброс портов) позволяет пересылать запросы с одного порта на другой.
DNS Spoofing – перенаправляет запрос с доменного имени на указанный IP-адрес.
Mirror – автоматически сохраняет в указанную папку все ответы, возвращаемые в Charles. Затем их можно использовать как моки.
Устранение проблем
Большая часть функций Charles не будет работать если не установлены или не корректно установлены сертификаты. Это самая распространенная проблема. Вторая проблема может быть в том, что для связи клиента и сервера используется SSL соединение, но оно выключено в Charles, соответсвенно он не может его расшифровать, тем более изменить запрос или ответ.
Убедитесь, что ответ в Charles отображается в незашифрованном виде, как на скриншоте ниже. Это значит базовые настройки выполнены верно, сертификаты установлены, SSL Proxying включен.
Если же в ответе нечитаемый текст, как на скриншоте ниже, часть инструментов Charles работать не будет.
В этом случае проверьте, что выполнили все рекомендации по настройке описанные в начале данной статьи.
В частности удостоверьтесь, что проксирование включено для SSL соединений. Галочка в Enable SSL Proxying в Proxy – SSL Proxying Settings должна быть установлена, указана локация.
Сертификаты Charles должны быть установлены в системе (Help – SSL Proxying – Install Charles Root Certificate).
Сертификаты Charles должны быть установлены на клиенте, если в качестве него выступает другое устройство.
Если клиентом является iPhone, убедитесь, что кроме того, что сертификат установлен, ему так же выдано доверие (это один из пунктов, который часто пропускают).
Дополнительную информацию про установку сертификатов можно получить в документации Charles.
Если клиентом является браузер, установленный на том же компьютере, где и Charles убедитесь, что разрешено проксирование с локального устройства (Proxy – MacOS Proxy или Windows Proxy).
Делитесь интересными кейсами использования Charles и я добавлю их в статью.
Полезные ссылки
На этом всё. Но вы можете поддержать проект. Даже небольшая сумма поможет нам писать больше полезных статей.
Если статья помогла или понравилась, пожалуйста поделитесь ей в соцсетях.
Читайте также: