Mallet — фреймворк для создания прокси

Mallet — это инструмент для создания прокси для произвольных протоколов, аналогичный тому, который используется для перехватывающих веб-прокси, но более общий.

Он построен на основе Netty и в значительной степени опирается на концепцию конвейера Netty, которая позволяет графически собирать графики обработчиков.

В мире Netty экземпляры обработчика предоставляют разграничение кадров (то есть, где начинается и заканчивается сообщение), декодирование и кодирование протокола (преобразование потока байтов в объекты Java и обратно или преобразование потока байтов в другой поток байты — считать сжатие и декомпрессию) и логику более высокого уровня (фактически что-то делает с этими объектами).

Следуя тщательному разделению кодеков с обработчиками, которые фактически манипулируют сообщениями, Mallet может извлечь выгоду из большой библиотеки существующих кодеков и избежать повторной реализации многих протоколов.

Последний фрагмент головоломки предоставляется обработчиком, который копирует сообщения, полученные по одному конвейеру, в другой конвейер, проксируя эти сообщения до их конечного адресата.

Конечно, хотя сообщения и находятся в Mallet, их можно легко подделать либо с помощью пользовательских обработчиков, написанных на Java, либо с помощью языка скриптов, совместимого с JSR-223, либо вручную, используя один из предоставленных редакторов.

Сборка Mallet

Mallet использует Maven, поэтому компиляция кода является следующим

mvn package 

Чтобы запустить его:

cd target/
java -jar mallet-1.0-SNAPSHOT-spring-boot.jar

В каталоге examples / приведены несколько примеров графиков. Графики JSON ожидают, что клиент JSON подключится к Mallet на localhost: 9998 / tcp, с реальным сервером на localhost: 9999 / tcp.

Только последний график JSON (json5.mxe) делает любые предположения о структуре передаваемых сообщений JSON, поэтому они должны быть применимы к любому приложению, которое отправляет сообщения JSON.

На demo.mxe показан сложный граф с двумя конвейерами, как TCP, так и UDP.

Конвейер TCP построен для поддержки HTTP и HTTPS на портах 80 и 443 соответственно, а также в WebSockets при передаче любого другого трафика непосредственно в пункт назначения.

Конвейер UDP построен для обработки DNS-запросов на localhost: 1053 / udp, заменяет запросы для google.com с запросами на www.sensepost.com и перенаправляет запросы на DNS-серверы Google.

Скачать Mallet

cryptoparty

Cryptography is typically bypassed, not penetrated.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

5e7fa976b0640d40