Esempio n. 1
0
    def __init__(self):
        super().__init__()

        self.opener = Request()

        self.aes = None  # 用于aes加密传输的aes对象
        self.private_key = None
        self.public_key = None
Esempio n. 2
0
 def __make_request(self):
     if self.__entry.text():
         req = Request("GET", self.__entry.text())
         res = req.get_api()
         if res:
             return self.__set_data(res)
         else:
             return
     else:
         Error('Enter country name')
         self.__data_label.setText("")
Esempio n. 3
0
    def __init__(self):
        super().__init__()
        self.options.add_option(
            'password',
            'You need use this password to connect webshell server.',
            True,
            'c',
            check=r'[\w\-]+')
        self.options.add_option(
            'password_type',
            'Password type like GET, POST or HEADER.If not set, will use POST type to connect server(server must use this type).',
            default='POST',
            check=r'(?i)GET|POST|HEADER')

        self.opener = Request()
Esempio n. 4
0
    def __init__(self):
        super().__init__()

        self.options.add_option(
            'password',
            'You need use this password to connect webshell server.',
            True,
            'c',
            check=r'[\w\-]+')
        self.options.add_option(
            'new_version',
            'Specifies whether the remote webshell is a new version.',
            default=1,
            type=int,
            check=r'0|1')

        self.opener = Request()

        self.aes = None  # 用于aes加密传输的aes对象
Esempio n. 5
0
async def test_repeated_login():
    login = generate(20)
    user_old = User(login=login)

    user_old.save()

    request = Request(None, None, generate(), 2, 0)
    data = {
        'user': generate_id(),
        'login': login.upper(),
    }

    res = await handle(request, data)

    assert res.get('id')
    assert res.get('new')

    user_new = User.get(ids=res['id'], fields={'login'})

    assert user_new.login != process_lower(login)
    assert user_new.id != user_old.id
Esempio n. 6
0
    def connect(self)-> bool:
        '''connect target and return True, or False if connect failed. 
        '''
        self.opener = Request()
        self._create_key()
        key = self.aes.algorithm.key
        
        pwd = hashlib.sha256(self.options.password.encode()).hexdigest()[:16].encode()
        self._create_key(pwd)
        data = base64.b64encode(self._encrypt(key))
        try:
            with self.opener.post(self.options.target, data, timeout=10) as f:
                ret = f.read()
        except BaseException as e:
            logger.error(e)
            return False
        if ret.strip() != base64.b64encode(key):
            logger.error(f"The accepted number `{ret.decode(self.options.encoding, 'ignore')}` does not match the expected `{base64.b64encode(key).decode()}`")
            return False

        self._create_key(key)
        return True
Esempio n. 7
0
async def test_repeated_login():
    login = generate(20)
    user_old = User(login=login, password='******')

    user_old.save()
    assert user_old.id
    assert user_old.login == process_lower(login)

    request = Request(None, None, generate(), 2, 0, SIO())
    data = {
        'login': login.upper(),
        'password': '******',
    }

    res = await handle(request, data)

    assert res.get('id')
    assert res.get('new') == False

    user_new = User.get(ids=res['id'], fields={'login'})

    assert user_new.login == process_lower(login)
    assert user_new.id == user_old.id