我使用rdpy-rdpmitm
的{{1}}演示来实现rdp代理,但是我想在连接到目标之前检查密码,让客户端重新输入用户名和密码。我的代码是这样的;如何实施rdpy
方法?
OnReady
答案 0 :(得分:1)
尝试使用递归:
class ProxyServer(rdp.RDPServerObserver):
def __init__(self, controller, target, clientSecurityLevel, rssRecorder):
"""
@param controller: {RDPServerController}
@param target: {tuple(ip, port)}
@param rssRecorder: {rss.FileRecorder} use to record session
"""
rdp.RDPServerObserver.__init__(self, controller)
self._target = target
self._client = None
self._rss = rssRecorder
self._clientSecurityLevel = clientSecurityLevel
def onReady(self):
"""
@summary: Event use to inform state of server stack
First time this event is called is when human client is connected
Second time is after color depth nego, because color depth nego
restart a connection sequence
@see: rdp.RDPServerObserver.onReady
"""
if self._client is None:
# try a connection
domain, username, password = self._controller.getCredentials()
self._rss.credentials(username, password, domain, self._controller.getHostname())
width, height = self._controller.getScreen()
self._rss.screen(width, height, self._controller.getColorDepth())
if checkPassword(username, password): #password ok
reactor.connectTCP('127.0.0.1', 3389, ProxyClientFactory(self, width, height, domain, username, password,self._clientSecurityLevel))
else:
onReady(self)
这样重复,直到密码正确
答案 1 :(得分:0)
我真的不知道您正在使用的库,但是如果连接失败,您不能只测试错误,然后通过以前的代码重试连接,即:
Python 2.x
password = raw_input("Please re-enter your password:")
Python 3.x
password = input("Please re-enter your password")