Skip to content

Commit e44fcc1

Browse files
committed
nla redirection: use certificate of original server
1 parent ad70494 commit e44fcc1

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

pyrdp/mitm/RDPMITM.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77
import asyncio
88
import datetime
99
import typing
10+
import ssl
1011

12+
from OpenSSL import crypto
1113
from twisted.internet import reactor
1214
from twisted.internet.protocol import Protocol
1315

@@ -218,7 +220,20 @@ async def connectToServer(self):
218220
self.log.error("Failed to connect to recording host: timeout expired")
219221

220222
def doClientTls(self):
221-
cert = self.server.tcp.transport.getPeerCertificate()
223+
if self.state.isRedirected():
224+
self.log.info(
225+
"Fetching certificate of the original host %(host)s:%(port)d because of NLA redirection",
226+
{
227+
"host": self.state.config.targetHost,
228+
"port": self.state.config.targetPort,
229+
},
230+
)
231+
pem = ssl.get_server_certificate(
232+
(self.state.config.targetHost, self.state.config.targetPort)
233+
)
234+
cert = crypto.load_certificate(crypto.FILETYPE_PEM, pem)
235+
else:
236+
cert = self.server.tcp.transport.getPeerCertificate()
222237
if not cert:
223238
# Wait for server certificate
224239
reactor.callLater(1, self.doClientTls)

0 commit comments

Comments
 (0)