tcp - 使用 mitmproxy 伪造和重放单个 TCP 数据包
问题描述
我发现了mitmproxy并想用它来模拟重放攻击。
该应用程序在 TCP 之上使用MTProto,我想重播整个 MTProto 消息。
我的想法:
- 通过代理将流量从客户端路由到服务器
- 嗅探所有 TCP 数据包
- 重放单个 TCP 数据包
最后一部分是困难的部分。伪造的 TCP 数据包必须
- 增加序列号,
- 重新计算校验和
为了被接受。
我尝试为此使用 mitmproxy,但我只发现了如何复制整个流,而不是单个数据包。
是否可以使用 mitmproxy 实现我的目标?如果是这样,如何伪造单个数据包?否则:是否有更好的工具来应对这种攻击?
解决方案
以下附加组件为我解决了这个问题(在精神上与Susanka类似):
class Replayer:
def __init__(self):
self.num = 0
self.saved = None
def tcp_message(self, flow):
message = flow.messages[-1]
if len(str(message)) > 700:
if self.saved is None:
self.saved = message.content
else:
message.content = self.saved
self.saved = None
addons = [
Replayer()
]
推荐阅读
- shell - adb:找不到命令 - Window 10 shell
- android - 用于 Android 的 Qt 缺少编译器
- ruby-on-rails - 在没有开发选项的 Plesk 管理的机器上使用带有本机扩展的预编译 gem 时出错
- git - 参考 `remotes/origin/HEAD` 的用途是什么?
- uipangesturerecognizer - 如何在 panGesture 之后修复新的 textField 位置?
- sqlite - 如何在有序表中选择行并检索其上方和下方的行数?
- php - 在php中计算一个文件夹中所有文件和所有目录的总和
- scala - 在具有协变类型的 Scala 参数化类中实现方法
- python - 获取相关模型的数量
- c++ - 关于包含新课程的基本 cmake 问题