예제 #1
0
    def parseBitmapEvent(self, fastPathBitmapEvent: FastPathOutputEvent) -> FastPathBitmapEvent:
        rawBitmapUpdateData = fastPathBitmapEvent.payload
        stream = BytesIO(rawBitmapUpdateData)
        updateType = Uint16LE.unpack(stream.read(2))
        bitmapData = self.bitmapParser.parseBitmapUpdateData(stream.read())

        return FastPathBitmapEvent(fastPathBitmapEvent.header, fastPathBitmapEvent.compressionFlags, bitmapData, rawBitmapUpdateData)
예제 #2
0
    def handleBitmap(self, pdu: PlayerBitmapPDU):
        bpp = 32
        flags = 0

        # RDP expects bitmap data in bottom-up, left-to-right
        # See: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/84a3d4d2-5523-4e49-9a48-33952c559485
        for y in range(pdu.height):
            pixels = pdu.pixels[y * pdu.width * 4 : (y + 1) * pdu.width * 4]
            bitmap = BitmapUpdateData(0, y, pdu.width, y + 1, pdu.width, 1, bpp, flags, pixels)
            bitmapData = BitmapParser().writeBitmapUpdateData([bitmap])
            event = FastPathBitmapEvent(FastPathOutputType.FASTPATH_UPDATETYPE_BITMAP, None, [], bitmapData)
            self.sendOutputEvents([event])
예제 #3
0
 def parseBitmapEventRaw(self, stream: BytesIO, header: int,
                         compressionFlags: int,
                         size: int) -> FastPathBitmapEvent:
     return FastPathBitmapEvent(header, compressionFlags, [],
                                stream.read(size))
예제 #4
0
파일: fastpath.py 프로젝트: xianlimei/pyrdp
 def parseBitmapEventRaw(self, stream, header, compressionFlags, size):
     return FastPathBitmapEvent(header, compressionFlags, [], stream.read(size))