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)))
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)))
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()
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())