Example #1
0
 def test_random_string(self):
     from vmreflect.utils import get_random_string
     for l in range(20):
         self.assertEquals(l, len(get_random_string(length=l)))
     for alphabet in ['1234', string.letters, '!$(AJ$)AF(A@F']:
         self.assertTrue(
             all(c in alphabet
                 for c in get_random_string(alphabet=alphabet)))
Example #2
0
 def test_reversing_server(self):
     random_string = get_random_string()
     with contextlib.closing(Server()) as server:
         result = client(server.ip, server.port, random_string)
         self.assertEquals(result, ''.join(reversed(random_string)))
Example #3
0
    def test_end_to_end(self):
        random_string = get_random_string()
        with contextlib.closing(Server()) as server:

            # Create a tunnel and wait for it to start.

            tunnel = Tunnel(port=server.port,
                            vm_name=test_config.vm_name,
                            username=test_config.vm_username,
                            password=test_config.vm_password)

            started = threading.Event()
            done = threading.Event()

            def tunnel_thread():
                tunnel.start(started_event=started, done_event=done)

            tunnel_thread = threading.Thread(target=tunnel_thread)
            tunnel_thread.start()

            started.wait()

            try:

                tunnel_vmapi = VM(vm_name=test_config.vm_name,
                                username=test_config.vm_username,
                                password=test_config.vm_password)

                # get temp dir
                tmpdir, _ = tunnel_vmapi._run_command('echo %TEMP%')
                tmpdir = tmpdir.strip()

                # copy socketclient.exe to temporary filename
                target_filename = (tmpdir + r'\socketclient-' +
                                get_random_string() + '.exe')
                fd, local_temp = tempfile.mkstemp(prefix='vmreflect')
                os.close(fd)
                try:
                    socketclient_bin = pkg_resources.resource_stream(
                        'vmreflect', 'lib-win32/socketclient/socketclient.exe')
                    with open(local_temp, 'wb') as out:
                        out.write(socketclient_bin.read())
                    os.chmod(local_temp, 0700)
                    tunnel_vmapi.copy_file_to_guest(
                        local_temp, target_filename)
                    try:
                        output, _ = tunnel_vmapi._run_command(
                            '%s %s %d %s' % (target_filename,
                                            'localhost', server.port,
                                            repr(random_string)))

                    finally:
                        tunnel_vmapi.delete_file(target_filename)

                    self.assertIn(''.join(reversed(random_string)),
                                output)
                finally:
                    os.unlink(local_temp)

            finally:
                done.set()
Example #4
0
 def test_exception_on_bad_username_password(self):
     self.vm = vmapi.VM(vm_name=test_config.vm_name, username=get_random_string(), password=get_random_string())
     self.assertRaises(Exception, lambda: self.vm._create_temp_file())