Mallet:一款针对任意协议的安全拦截代理工具

news2025/1/14 18:45:03

关于Mallet

Mallet是一款功能强大的协议安全分析工具,该工具支持针对任意协议创建用于安全审计的拦截代理,该工具本质上与我们所熟悉的拦截Web代理类似,只是通用性更强。

工具运行机制

Mallet建立在Netty框架之上,并且依赖于Netty管道概念,即允许以图形方式组装处理程序图。在Netty世界中,处理程序实例提供帧分隔(即消息从哪里开始和结束)、协议解码和编码(将字节流转换为Java对象,然后再转换回来,或者将字节流转换为不同的字节流),以及更高级别的逻辑。通过仔细区分编解码器与实际操作消息的处理程序,Mallet可以从现有的大量编解码器库中受益,并避免重新实现许多协议。

Mallet 不一定只用于安全审查。由于Mallet是建立在Netty框架之上的,因此一旦使用 Mallet制作了管道原型,我们就可以毫不费力地将代码迁移到普通的Netty应用程序中。

下面给出的是一个简单的SOCKS 代理的示例,可作为我们理解Mallet处理网络流量的一个概览:

一旦我们了解了流量的实际情况,就可以开始在管道中添加适当的ChannelHandler类了。

工具要求

1、最新版本的Java运行时环境;

2、Maven;

工具安装

由于该工具基于Java开发,因此我们首先需要在本地设备上安装并配置好最新版本的Java运行时环境。

接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:

git clone https://github.com/sensepost/mallet.git

然后切换到项目目录中,使用Maven对项目源码进行编译:

cd mallet

mvn package

工具使用

cd target/

java -jar mallet-1.0-SNAPSHOT-spring-boot.jar

项目的examples/目录中提供了一些示例图,其中JSON图要求 JSON客户端通过localhost:9998/tcp连接到 Mallet,而真实服务器则位于localhost:9999/tcp。只有最后一个JSON图(json5.mxe)对传递的 JSON消息的结构做出了任何假设,因此它们应该适用于发送JSON消息的任何应用程序。

demo.mxe显示了一张复杂的图,其中包含两个管道,即TCP和UDP。TCP管道分别支持端口80和443上的HTTP和HTTPS以及WebSockets,同时将任何其他流量直接中继到其目的地。UDP管道用于处理localhost:1053/udp上的DNS请求,将对google.com的查询替换为对www.sensepost.com的查询,并将请求转发到Google DNS服务器。

项目地址

Mallet:【GitHub传送门】

参考资料

GitHub - netty/netty: Netty project - an event-driven asynchronous network application framework

https://netty.io/

https://netty.io/4.1/api/io/netty/channel/ChannelHandler.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1968408.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

文案人的梦工场,网易入职指南!

网易云对于咱们一些有点文艺的文案策划来说,简直就是梦中情司。 在这里工作锻炼机会很多,也很开拓眼界,能获得相当于在别处3倍能力的成长速度,福利待遇也是很好的。 要进入网易云音乐做文案策划,你可以按照以下步骤进…

数据结构的基本概念与算法2

线性表 : 线性表 是具有相同数据类型的 n (n > 0) 个数据元素的有限序列,其中 n 为表长,当 n 0 时线性表是一个空表;若用 L 命名线性表,则其一般表示为:L (a1 , a2 , ... ai , ai1 , ... an) 上述中&a…

月木学途开发 2.项目架构

1.项目介绍 月木学途是一款it在线学习网站,项目采用前后端分离架构。前端开发主要使用vue.js,后端使用Spring Cloud Alibaba技术栈。项目包含学习网站的大部分功能,分为管理员端和用户端。管理员端有权限管理、课程管理、网站管理、求职模块管…

Shell函数和Shell 输入/输出重定向

LInux:Shell函数和Shell 输入/输出重定向 Shell函数 参数说明: 可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运…

[Vue warn]: data functions should return an object:

仔细检查你的代码肯定有一个data()内忘记方return{}了

C语言程序设计23

《C程序设计教程(第四版)——谭浩强》 例题2.11 从键盘输入B、O、Y三个字符,然后把他们输出到屏幕上 代码: //《C程序设计教程(第四版)——谭浩强》 //例题2.11 从键盘输入B、O、Y三个字符,然…

RabbitMQ:MQ的可靠性

MQ的可靠性 在默认情况下,RabbitMQ会将接收到的信息保存在内存中以降低消息收发的延迟。这样会导致两个问题: 一旦MQ宕机,内存中的消息会丢失 内存空间有限,当消费者故障或处理过慢时,会导致消息积压,引发MQ阻塞。 …

高效、安全、共享|济南市升级教育城域网,重塑教育网络生态

文/济南市电化教育馆 电教教研室主任 张承强 导语: 近年来,济南市教育局以前瞻性的视野,将教育数字化转型视为推动教育高质量发展的基石,全力加速教育现代化进程。在这一蓝图下,教育城域网的升级改造项目被赋予了基础性、先导性和战略性的重要意义,成为探索教育数字化转型新路…

一键搞定PDF翻译,这四款是职场达人常备翻译工具!!!

作为外贸搬砖人的一份子,虽说外语功底还说地过去,但是每天过目大量pdf文件的翻译,难免还有些吃力,这个时候如果有可以辅助翻译的工具那就再好不过了,今天给大家带来四款非常适合pdf文件翻译的工具,总有一款…

C#中的通信

上位机应用开发-串口通信1、基于C#的串口通信对象:SerialPort 2、字段属性 PortName:获取或设置通信端口 BaudRate:获取或设置串行波特率-DataBits:获取或设置每个字节的标准数据位长度 Parity:获取或设置奇偶校验检查协仪I-StopBits;获取或设置每个字节的标准停止位数 3、…

你需要的Node版本管理神器NVM

在做项目的时候,很多人本地的node都是装一个固定版本,一旦有些项目要下的依赖需要更高版本的node支持的时候,此时需要升级node就得把已经安装的低版本node卸载了,然后再重新下载、安装高版本的node,既费时间又抓狂,特别…

大模型算法面试题(十九)

本系列收纳各种大模型面试题及答案。 1、SFT(有监督微调)、RM(奖励模型)、PPO(强化学习)的数据集格式? SFT(有监督微调)、RM(奖励模型)、PPO&…

网工内推 | 云运维工程师,最高19K,五险一金加补充医疗险

01 云计算运维工程师 🔷岗位职责 1、负责客户云计算解决方案的运维,负责云计算解决方案中云、虚拟化工作; 2、负责客户现场H3C产品的日常问题处理、变更维护、巡检、版本升级等工作,保障客户网络的稳定运行; 3、协调…

yolo数据集格式按照每一个类别的比例划分数据集

写在前面: 写脚本不易,写博客不易,请多点赞关注,谢谢。10多年来,我一直免费给大家毫无保留的分享技术等,不但从来没被打赏过,而且在分享有些模型转化处理的高级脚本中,有些同胞由于自…

pmp证书实用性怎么样,考这个性价比高不高,难度?

要是 PMP 证书没有价值,还会有那么多人愿意去考吗? 我觉得一个原因是因为行业/岗位需求高,还有就是拿证后能不能用得上,看人看公司,很大一部分考证的人都是因为应聘跟投标书要求。 据我了解,PMP 证书目前…

八戒会修特斯拉 特斯拉如何磨合制动器

--------------------------------------------------------------------------------------------------------------------------------- -------------------------------------- 作者: 八戒会修特斯拉 -------------------------…

动态注意力机制新突破!11个最新idea,看了就能发顶会!

在处理复杂数据时,可以通过引入动态注意力机制,让模型根据输入数据的特点动态调整关注点,聚焦最关键的信息,来提高模型的处理能力和效率。 这种比传统方法更高效、灵活的技术足以应对各种复杂任务和挑战,具有强大的适…

C语言程序设计22

《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 例题2.10 先后输出B、O、Y三个字符 代码&#xff1a; //《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 //例题2.10 先后输出B、O、Y三个字符#include <stdio.h> int main() {char a B;char …

E22.【C语言】练习:“详解函数递归”文中青蛙跳台阶的答案

点击查看原文 代码实现 jump(n)jump(n-1)jump(n-2) #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int jump(int n) {if (1 n){return 1;}else if (2 n){return 2;}else{return jump(n - 1) jump(n - 2);} }int main() {int n 0;printf("请输入台阶总数…

MIGO 常用移动类型

MIGO的移动类型&#xff1a; 101&#xff1a;可以指采购订单收货和生产订单收货&#xff0c;在MB51中可以通过移动标识来进行区分。B指采购订单。F指生产订单。 122&#xff1a;采购订单退货。通过A02 物料凭证进行退货后&#xff0c;系统自动带出122的移动类型。 161&#xf…