def __init__(self, viewer, text): super().__init__() self.viewer = viewer self.text = text self.writeInCaps = False self.inputParser = BasicFastPathParser(ParserMode.SERVER) self.outputParser = BasicFastPathParser(ParserMode.CLIENT) self.clientInfoParser = ClientInfoParser() self.dataParser = SlowPathParser() self.clipboardParser = ClipboardParser() self.outputEventParser = FastPathOutputParser() self.clientConnectionParser = ClientConnectionParser() self.buffer = b""
def __init__(self, transports: List[LayerChainItem]): self.parsers: Dict[PlayerPDUType, Parser] = { PlayerPDUType.FAST_PATH_INPUT: BasicFastPathParser(ParserMode.CLIENT), PlayerPDUType.FAST_PATH_OUTPUT: BasicFastPathParser(ParserMode.SERVER), PlayerPDUType.CLIENT_INFO: ClientInfoParser(), PlayerPDUType.SLOW_PATH_PDU: SlowPathParser(), PlayerPDUType.CLIPBOARD_DATA: ClipboardParser(), PlayerPDUType.CLIENT_DATA: ClientConnectionParser(), } self.topLayers = [] self.recordFilename = None for transport in transports: self.addTransport(transport)
def onFastPathFragment(self, pdu: PlayerPDU): parser = BasicFastPathParser(ParserMode.CLIENT) pdu = parser.parse(pdu.payload) for event in pdu.events: reassembledEvent = self.reassembleEvent(event) if reassembledEvent is not None: self.onFastPathOutput(reassembledEvent)
def onFastPathOutput(self, pdu: PlayerPDU): parser = BasicFastPathParser(ParserMode.CLIENT) pdu = parser.parse(pdu.payload) for event in pdu.events: reassembledEvent = self.reassembleEvent(event) if reassembledEvent is not None: if isinstance(reassembledEvent, FastPathBitmapEvent): self.onFastPathBitmap(reassembledEvent)
def __init__(self, transportLayers: List[Layer]): self.parsers: Dict[PlayerMessageType, Parser] = { PlayerMessageType.FAST_PATH_INPUT: BasicFastPathParser(ParserMode.CLIENT), PlayerMessageType.FAST_PATH_OUTPUT: BasicFastPathParser(ParserMode.SERVER), PlayerMessageType.CLIENT_INFO: ClientInfoParser(), PlayerMessageType.SLOW_PATH_PDU: SlowPathParser(), PlayerMessageType.CLIPBOARD_DATA: ClipboardParser(), PlayerMessageType.CLIENT_DATA: ClientConnectionParser(), } self.topLayers = [] for transportLayer in transportLayers: self.addTransportLayer(transportLayer)
def onFastPathInput(self, pdu: PlayerPDU): parser = BasicFastPathParser(ParserMode.SERVER) pdu = parser.parse(pdu.payload) for event in pdu.events: if isinstance(event, FastPathUnicodeEvent): if not event.released: self.onUnicode(event) elif isinstance(event, FastPathMouseEvent): self.onMouse(event) elif isinstance(event, FastPathScanCodeEvent): self.onScanCode(event.scanCode, event.isReleased, event.rawHeaderByte & keyboard.KBDFLAGS_EXTENDED != 0)