最小跨平台网络逆向工程框架

fritm的Python项目详细描述


弗里达在中间

fritm是一个极简的跨平台(在MacOS和Windows上测试) 用python编写的网络逆向工程框架。

fritm-hook允许您轻松钩住 `connect()<;http://man7.org/linux/man-pages/man2/connect.2.html>;。`_ 使用`frida<;https://www.frida.re/>;``重定向所有 来自目标应用程序的流量。

然后可以使用用python编写的内置服务器来启动 Man-in-the-middle attack

即使您不想使用python,也可以使用fritm-hook 命令将通信量重定向到应用程序并实现 简单的HTTP CONNECT头讲座。

安装

pip install fritm

用法

钩住进程:

fritm-hook PROCESS_NAME_OR_PID -p PORT # (default 8080)

或者创建一个新的:

fritm-spawn PATH_TO_COMMAND -p PORT # (default 8080)

在python中启动代理服务器:

importselectfromfritmimportstart_proxy_serverdefdumb_callback(soClient,soServer):"""Forwards all the traffic between the two sockets
    """conns=[soClient,soServer]other={soClient:soServer,soServer:soClient}active=Truetry:whileactive:rlist,wlist,xlist=select.select(conns,[],conns)ifxlistornotrlist:breakforrinrlist:data=r.recv(8192)ifnotdata:active=Falsebreakother[r].sendall(data)finally:forcinconns:c.close()httpd=start_proxy_server(dumb_callback)

现在,所有的流量都会通过你的申请。您可以修改 任何飞行中的东西。

它是如何工作的?

fritm.hook(process, port)

挂钩
  1. 附加到目标进程
  2. 拦截呼叫 `connect()<;http://man7.org/linux/man-pages/man2/connect.2.html>;`\uu
  3. 将目标IP地址替换为127.0.0.1,并将端口替换为 选择一个
  4. 使用本地IP执行connect()函数
  5. 在返回之前,发送HTTP CONNECT method 使用原始IP和端口

fritm.spawn_and_hook(process, port)启动进程并确保 它从一开始就被钩住了。

fritm.start_proxy_server(callback, port)

的MITM
  1. 启动本地服务器,侦听给定端口上的连接
  2. 从挂接的客户机接收到新连接后,读取IP 以及来自http connect头的服务器端口
  3. 打开服务器的新套接字
  4. 呼叫callback(socket_to_client, socket_to_server)

mitmproxy

的区别
  • mitmproxy不使用函数挂钩,它会拦截所有的流量 从浏览器或计算机
  • mitmproxy只适用于http流量,而fritm则适用于任何 TCP通信。

proxychains/proxychains-ng

的区别
  • fritm-spawn是简化的跨平台版本 关于proxychains。
  • fritm-hook可以附加到已在运行的进程。
  • ProxyChains不是跨平台的,很难安装,而Fritm 跨平台,安装简单。
  • proxychains使用一个配置文件,而fritm-spawn只需要两个 参数
  • fritm包括一个http代理服务器(它也可以通信 带有代理链)
  • 代理链可以处理许多不同的代理类型(socks4, socks5,https)有很多选项(例如用于身份验证)
  • Ly>脯氨酸链可以链接多个代理< /LI>
  • proxychains处理任何代理地址,而fritm-spawn 默认为localhost。但是,如果有人需要遥控器 解决问题,发布问题,我将实现它。

当前限制

  • 有些windows用户遇到了我无法重现的问题
  • fritm在ipv6地址上会失败,但应该不难修复 (我只是没有使用ipv6的应用程序 测试地址)。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在panelgrid中填充包含行和列的列表   Java中swing JList作为选项卡   java Zookeeper与spotify kafka图像的cprestproxy连接失败   java maven 3.0+跳过“mvn部署”上的插件执行   多线程在Java中,如何在同一网络上的服务器和客户端之间创建同步连接?   java Hibernate JPA“未找到关联类”,使用另一个实体作为键,可嵌入作为值   java在javamail api中用于会话的库   java活动生命周期回调混乱?   产生乱码输出的java if语句   java我无法从RESTAPI URL获取JSON对象   java如何在dropwizard中禁用cron作业   java公共静态工厂方法   java com。脸谱网。反应桥JavaJSExecutor$ProxyExecutor异常   Java中的安卓事件处理   java如何将p6spy与proxydatasource一起使用   使用JPQL时@Version的java行为   java不支持JDK7NIO。2在Linux上使用Epoll等?   使用Java Redis客户端(莴苣)连接到Amazon ElastiCache   在Java中将SQL Server的所有列中的一种数据类型更改为另一种数据类型   java在程序中删除抽象类的对象