我发现了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()
]