1
0
mirror of https://github.com/dkmstr/openuds.git synced 2025-08-25 13:49:59 +03:00

Some refactoring to easy indentify algorithm

This commit is contained in:
Adolfo Gómez García
2018-08-02 01:00:24 +02:00
parent 6cee32d680
commit 3f76f6c1ab
8 changed files with 17 additions and 11 deletions

View File

@ -195,7 +195,7 @@ class Handler(object):
session['REST'] = {
'auth': id_auth,
'username': username,
'password': cryptoManager().xor(password, scrambler), # Stores "bytes"
'password': cryptoManager().symCrypt(password, scrambler), # Stores "bytes"
'locale': locale,
'is_admin': is_admin,
'staff_member': staff_member

View File

@ -135,7 +135,7 @@ class Client(Handler):
res = userServiceManager().getService(self._request.user, self._request.ip, data['service'], data['transport'])
logger.debug('Res: {}'.format(res))
ip, userService, userServiceInstance, transport, transportInstance = res
password = cryptoManager().xor(data['password'], scrambler).decode('utf-8')
password = cryptoManager().symDecrpyt(data['password'], scrambler)
userService.setConnectionSource(srcIp, hostname) # Store where we are accessing from so we can notify Service

View File

@ -182,7 +182,7 @@ class Connection(Handler):
res = userServiceManager().getService(self._user, self._request.ip, idService, idTransport)
logger.debug('Res: {}'.format(res))
ip, userService, userServiceInstance, transport, transportInstance = res
password = cryptoManager().xor(self.getValue('password'), scrambler).decode('utf-8')
password = cryptoManager().symDecrpyt(self.getValue('password'), scrambler)
userService.setConnectionSource(self._request.ip, hostname) # Store where we are accessing from so we can notify Service

View File

@ -46,14 +46,14 @@ from uds.core.util import log
from uds.core.util.decorators import deprecated
from uds.core import auths
from uds.core.util.stats import events
from uds.core.managers.CryptoManager import CryptoManager
from uds.core.managers import cryptoManager
from uds.core.util.State import State
from uds.models import User
import logging
import six
__updated__ = '2018-07-26'
__updated__ = '2018-08-02'
logger = logging.getLogger(__name__)
authLogger = logging.getLogger('authLog')
@ -286,7 +286,7 @@ def webLogin(request, response, user, password):
user.updateLastAccess()
request.session.clear()
request.session[USER_KEY] = user.id
request.session[PASS_KEY] = CryptoManager.manager().xor(password, cookie) # Stores "bytes"
request.session[PASS_KEY] = cryptoManager().symCrypt(password, cookie) # Stores "bytes"
# Ensures that this user will have access through REST api if logged in through web interface
REST.Handler.storeSessionAuthdata(request.session, manager_id, user.name, password, get_language(), user.is_admin, user.staff_member, cookie)
return True
@ -300,7 +300,7 @@ def webPassword(request):
@param request: DJango Request
@return: Unscrambled user password
'''
return CryptoManager.manager().xor(request.session.get(PASS_KEY, ''), getUDSCookie(request)).decode('utf-8') # recover as original unicode string
return cryptoManager().symDecrpyt(request.session.get(PASS_KEY, ''), getUDSCookie(request)) # recover as original unicode string
def webLogout(request, exit_url=None):

View File

@ -100,6 +100,12 @@ class CryptoManager(object):
# We must return bynary in xor, because result is in fact binary
return six.binary_type(array.array(six.binary_type('B'), (s1[i] ^ s2[i] for i in range(len(s1)))).tostring())
def symCrypt(self, text, key):
return self.xor(text, key)
def symDecrpyt(self, cryptText, key):
return self.xor(cryptText, key).decode('utf-8')
def loadPrivateKey(self, rsaKey):
try:
pk = RSA.importKey(rsaKey)

View File

@ -60,7 +60,7 @@ def guacamole(request, tunnelId):
try:
val = TicketStore.get(tunnelId, invalidate=False)
val['password'] = cryptoManager().xor(val['password'], scrambler)
val['password'] = cryptoManager().symDecrpyt(val['password'], scrambler)
response = dict2resp(val)
except Exception:

View File

@ -191,7 +191,7 @@ class HTML5RDPTransport(Transport):
username = domain + '\\' + username
scrambler = cryptoManager().randomString(32)
passwordCrypted = cryptoManager().xor(password, scrambler)
passwordCrypted = cryptoManager().symCrypt(password, scrambler)
# Build params dict
params = {

View File

@ -56,7 +56,7 @@ import logging
logger = logging.getLogger(__name__)
__updated__ = '2018-03-14'
__updated__ = '2018-08-02'
@webLoginRequired(admin=False)
@ -117,7 +117,7 @@ def clientEnabler(request, idService, idTransport):
try:
res = userServiceManager().getService(request.user, request.ip, idService, idTransport, doTest=False)
scrambler = cryptoManager().randomString(32)
password = cryptoManager().xor(webPassword(request), scrambler)
password = cryptoManager().symCrypt(webPassword(request), scrambler)
_x, userService, _x, trans, _x = res