예제 #1
0
    def recvClientRandom(self, s):
        """
        @summary: receive client random and generate session keys
        @param s: {Stream}
        """
        #packet preambule
        securityFlag = UInt16Le()
        securityFlagHi = UInt16Le()
        s.readType((securityFlag, securityFlagHi))

        if not (securityFlag.value & SecurityFlag.SEC_EXCHANGE_PKT):
            raise InvalidExpectedDataException("waiting client random")

        message = ClientSecurityExchangePDU()
        s.readType(message)
        clientRandom = rsa.decrypt(message.encryptedClientRandom.value[::-1], self._rsaPrivateKey)[::-1]

        self._macKey, self._initialEncryptKey, self._initialDecrytKey = generateKeys(   clientRandom,
                                                                                        self.getGCCServerSettings().SC_SECURITY.serverRandom.value,
                                                                                        self.getGCCServerSettings().SC_SECURITY.encryptionMethod.value)
        #initialize keys
        self._currentDecrytKey = self._initialDecrytKey
        self._currentEncryptKey = self._initialEncryptKey
        self._decryptRc4 = rc4.RC4Key(self._currentDecrytKey)
        self._encryptRc4 = rc4.RC4Key(self._currentEncryptKey)

        self.setNextState(self.recvInfoPkt)
예제 #2
0
파일: sec.py 프로젝트: MUDASSARHASHMI/rdpy
 def recvClientRandom(self, s):
     """
     @summary: receive client random and generate session keys
     @param s: {Stream}
     """
     #packet preambule
     securityFlag = UInt16Le()
     securityFlagHi = UInt16Le()
     s.readType((securityFlag, securityFlagHi))
     
     if not (securityFlag.value & SecurityFlag.SEC_EXCHANGE_PKT):
         raise InvalidExpectedDataException("waiting client random")
     
     message = ClientSecurityExchangePDU()
     s.readType(message)
     clientRandom = rsa.decrypt(message.encryptedClientRandom.value[::-1], self._rsaPrivateKey)[::-1]
     
     self._macKey, self._initialEncryptKey, self._initialDecrytKey = generateKeys(   clientRandom, 
                                                                                     self.getGCCServerSettings().SC_SECURITY.serverRandom.value, 
                                                                                     self.getGCCServerSettings().SC_SECURITY.encryptionMethod.value)
     #initialize keys
     self._currentDecrytKey = self._initialDecrytKey
     self._currentEncryptKey = self._initialEncryptKey
     self._decryptRc4 = rc4.RC4Key(self._currentDecrytKey)
     self._encryptRc4 = rc4.RC4Key(self._currentEncryptKey)
     
     self.setNextState(self.recvInfoPkt)