我需要一个python3 RDP库。我找到了https://github.com/citronneur/rdpy,但我不明白如何通过端口,登录名和密码连接到主机。此代码中没有登录名和密码:
from rdpy.protocol.rdp import rdp
from twisted.internet import reactor
class MyRDPFactory(rdp.ClientFactory):
def clientConnectionLost(self, connector, reason):
reactor.stop()
def clientConnectionFailed(self, connector, reason):
reactor.stop()
def buildObserver(self, controller, addr):
class MyObserver(rdp.RDPClientObserver):
def onReady(self):
"""
@summary: Call when stack is ready
"""
# send 'r' key
self._controller.sendKeyEventUnicode(ord(unicode("r".toUtf8(), encoding="UTF-8")), True)
# mouse move and click at pixel 200x200
self._controller.sendPointerEvent(200, 200, 1, true)
def onUpdate(self, destLeft, destTop, destRight, destBottom, width, height, bitsPerPixel, isCompress, data):
"""
@summary: Notify bitmap update
@param destLeft: xmin position
@param destTop: ymin position
@param destRight: xmax position because RDP can send bitmap with padding
@param destBottom: ymax position because RDP can send bitmap with padding
@param width: width of bitmap
@param height: height of bitmap
@param bitsPerPixel: number of bit per pixel
@param isCompress: use RLE compression
@param data: bitmap data
"""
def onSessionReady(self):
"""
@summary: Windows session is ready
"""
def onClose(self):
"""
@summary: Call when stack is close
"""
return MyObserver(controller)
reactor.connectTCP(ip, port, MyRDPFactory())
reactor.run()
也许,当我已经连接到主机时,我需要以登录形式输入登录名和密码?我该怎么办?
答案 0 :(得分:0)
目前RDPY
没有Python 3实现。这是带有用户名和密码的版本。您只需在构建功能中将这些信息设置到控制器即可。
from rdpy.protocol.rdp import rdp
from twisted.internet import reactor
class MyRDPFactory(rdp.ClientFactory):
def __init__(self, username, password,domain):
self._username = username
self._password = password
self._domain = domain
self._security = rdp.SecurityLevel.RDP_LEVEL_SSL
def clientConnectionLost(self, connector, reason):
print reason
reactor.stop()
def clientConnectionFailed(self, connector, reason):
print 'connection failed'
reactor.stop()
def buildObserver(self, controller, addr):
controller.setUsername(self._username)
controller.setPassword(self._password)
controller.setDomain(self._domain)
class MyObserver(rdp.RDPClientObserver):
def onReady(self):
"""
@summary: Call when stack is ready
"""
# send 'r' key
self._controller.sendKeyEventUnicode(ord(unicode("r", encoding="UTF-8")), True)
# mouse move and click at pixel 200x200
self._controller.sendPointerEvent(200, 200, 1, True)
def onUpdate(self, destLeft, destTop, destRight, destBottom, width, height, bitsPerPixel, isCompress, data):
"""
@summary: Notify bitmap update
@param destLeft: xmin position
@param destTop: ymin position
@param destRight: xmax position because RDP can send bitmap with padding
@param destBottom: ymax position because RDP can send bitmap with padding
@param width: width of bitmap
@param height: height of bitmap
@param bitsPerPixel: number of bit per pixel
@param isCompress: use RLE compression
@param data: bitmap data
"""
def onSessionReady(self):
"""
@summary: Windows session is ready
"""
def onClose(self):
"""
@summary: Call when stack is close
"""
return MyObserver(controller)
reactor.connectTCP("XXX.XXX.XXX.XXX", 3389, MyRDPFactory(username='Please',domain='Dont Hack',password='Me'))
reactor.run()