Exemple #1
0
    def _test_dll_emu(self, fpath):
        data = util.get_test_bin_data(fpath)
        self.report = util.run_test(self.config, data)
        eps = self.report["entry_points"]
        self.assertEqual(len(eps), 3)

        dll_entry = eps[0]

        msgbox = self._get_api_calls(dll_entry, "USER32.MessageBoxA")
        self.assertEqual(1, len(msgbox))
        msgbox = msgbox[0]
        self.assertEqual(msgbox["args"][1], "Inside process attach")
        self.assertEqual(msgbox["args"][2], "My caption")
        self.assertEqual(dll_entry["ret_val"], "0x1")

        ep = eps[1]
        msgbox = self._get_api_calls(ep, "USER32.MessageBoxA")
        self.assertEqual(1, len(msgbox))
        msgbox = msgbox[0]
        self.assertEqual(msgbox["args"][1], "Inside emu_test_one")
        self.assertEqual(msgbox["args"][2], "First export")
        self.assertEqual(ep["ret_val"], "0x41414141")

        ep = eps[2]
        msgbox = self._get_api_calls(ep, "USER32.MessageBoxW")
        self.assertEqual(1, len(msgbox))
        msgbox = msgbox[0]
        self.assertEqual(msgbox["args"][1], "Inside emu_test_two")
        self.assertEqual(msgbox["args"][2], "Second export")
        self.assertEqual(ep["ret_val"], "0x42424242")
Exemple #2
0
    def test_seh_dispatch(self):
        self.config['exceptions']['dispatch_handlers'] = True
        data = util.get_test_bin_data('seh_test_x86.exe.xz')
        report = util.run_test(self.config, data)

        ep = report['entry_points']
        printfs = []
        for api in ep[0]['apis']:
            if '__stdio_common_vfprintf' in api['api_name']:
                printfs.append(api)

        fmt_strings = [p['args'][2] for p in printfs]
        self.assertEqual(len(fmt_strings), len(self.dispatch_script))
        for i, s in enumerate(fmt_strings):
            self.assertEqual(s, self.dispatch_script[i])
Exemple #3
0
    def test_seh_dispatch(self):
        self.config["exceptions"]["dispatch_handlers"] = True
        data = util.get_test_bin_data("seh_test_x86.exe.xz")
        report = util.run_test(self.config, data)

        ep = report["entry_points"]
        printfs = []
        for api in ep[0]["apis"]:
            if "__stdio_common_vfprintf" in api["api_name"]:
                printfs.append(api)

        fmt_strings = [p["args"][2] for p in printfs]
        self.assertEqual(len(fmt_strings), len(self.dispatch_script))
        for i, s in enumerate(fmt_strings):
            self.assertEqual(s, self.dispatch_script[i])
Exemple #4
0
    def _test_argv_exe(self, fpath):
        argv_len = 10
        argv = ["argument_%d" % (i + 1) for i in range(argv_len)]
        data = util.get_test_bin_data(fpath)
        report = util.run_test(self.config, data, argv=argv)
        ep = report["entry_points"]
        printfs = []
        for api in ep[0]["apis"]:
            if "__stdio_common_vfprintf" in api["api_name"]:
                printfs.append(api)

        self.assertEqual(len(printfs) - 2, argv_len)
        for i, p in enumerate(printfs[2:]):
            i += 1
            args = p["args"]
            fmt_str = args[2]
            test_str = "argv[%d] = argument_%d\n" % (i, i)
            self.assertEqual(test_str, fmt_str)
Exemple #5
0
    def test_seh_without_dispatch(self):
        self.config['exceptions']['dispatch_handlers'] = False

        data = util.get_test_bin_data('seh_test_x86.exe.xz')
        report = util.run_test(self.config, data)

        ep = report['entry_points']
        printfs = []
        for api in ep[0]['apis']:
            if '__stdio_common_vfprintf' in api['api_name']:
                printfs.append(api)
                break

        self.assertEqual(1, len(printfs))
        error = ep[0]['error']

        self.assertEqual(error['type'], 'invalid_write')
        self.assertEqual(error['address'], '0x0')
        self.assertEqual(error['instr'], 'mov dword ptr [0], 0x14')
Exemple #6
0
    def test_seh_without_dispatch(self):
        self.config["exceptions"]["dispatch_handlers"] = False

        data = util.get_test_bin_data("seh_test_x86.exe.xz")
        report = util.run_test(self.config, data)

        ep = report["entry_points"]
        printfs = []
        for api in ep[0]["apis"]:
            if "__stdio_common_vfprintf" in api["api_name"]:
                printfs.append(api)
                break

        self.assertEqual(1, len(printfs))
        error = ep[0]["error"]

        self.assertEqual(error["type"], "invalid_write")
        self.assertEqual(error["address"], "0x0")
        self.assertEqual(error["instr"], "mov dword ptr [0], 0x14")
Exemple #7
0
    def _test_file_access(self, fpath):
        data = util.get_test_bin_data(fpath)
        self.report = util.run_test(self.config, data)
        eps = self.report["entry_points"]

        driver_entry = eps[0]

        create_file = self._get_api_calls(driver_entry, "ntdll.NtCreateFile")
        self.assertEqual(1, len(create_file))
        create_file = create_file[0]
        self.assertEqual(create_file["args"][3], "\\??\\c:\\myfile.txt")

        read_file = self._get_api_calls(driver_entry, "ntdll.NtReadFile")
        self.assertEqual(1, len(read_file))

        printf = self._get_api_calls(
            driver_entry, "api-ms-win-crt-stdio-l1-1-0.__stdio_common_vfprintf"
        )
        self.assertEqual(5, len(printf))
        printf = printf[-1]

        self.assertIn("File contained:", printf["args"][2])
Exemple #8
0
        cls.channels = 3
        cls.data_name = os.path.join(currentdir, "toy_160_90_3_data.npy")
        cls.label_name = os.path.join(currentdir, "toy_160_90_3_labels.npy")

    @classmethod
    def tearDown(cls):
        if os.path.exists(cls.data_name):
            os.remove(cls.data_name)
        if os.path.exists(cls.label_name):
            os.remove(cls.label_name)

    def test_data_is_created_from_image_folder_and_pickle(self):
        create_data_set_as_np_array(self.image_folder,
                                    currentdir,
                                    "toy",
                                    self.width,
                                    self.height,
                                    self.channels,
                                    verbose=False)
        data = np.load(self.data_name)
        labels = np.load(self.label_name)
        data_expected_shape = (25, self.width * self.height * self.channels)
        self.assertEqual(data.shape, data_expected_shape)
        self.assertEqual(labels.shape, (25, 1))
        self.assertEqual(np.uint8, labels.dtype)
        self.assertEqual(np.uint8, data.dtype)


if __name__ == "__main__":
    run_test(TestDataMani)
Exemple #9
0
        browser.find_element_by_css_selector('#pywebio-scope-go_app button'))
    time.sleep(2)

    thread_out = template.save_output(browser)[-1]

    assert "ToastClicked" in coro_out
    assert coro_out == thread_out

    browser.execute_script(
        "arguments[0].click();",
        browser.find_element_by_css_selector('#pywebio-scope-error button'))
    browser.execute_script("$('button[type=submit]').click();")
    time.sleep(2)


def start_test_server():
    pywebio.enable_debug()
    start_server({
        'coro': corobased,
        'thread': threadbased
    },
                 port=8080,
                 host='127.0.0.1',
                 debug=True)


if __name__ == '__main__':
    util.run_test(start_test_server,
                  test,
                  address='http://localhost:8080/?app=thread')
Exemple #10
0
def main():
    run_test(TestDataHolder)
    run_test(TestTrainer)
Exemple #11
0
    def test_opt(self):
        """
        Test to check if the optimazation is working.
        """
        num_steps = 101
        batch_size = TestCNN.model.batch_size
        with tf.Session(graph=TestCNN.model.graph) as session:
            tf.global_variables_initializer().run()
            for step in range(num_steps):
                offset = (step * batch_size) % (TestCNN.train_labels.shape[0] - batch_size)
                batch_data = TestCNN.train_dataset[offset:(offset + batch_size), :]
                batch_labels = TestCNN.train_labels[offset:(offset + batch_size), :]

                feed_dict = {TestCNN.model.input_tensor: batch_data,
                             TestCNN.model.input_labels: batch_labels}

                _, current_loss = session.run([TestCNN.model.optimizer,
                                               TestCNN.model.loss],
                                              feed_dict=feed_dict)
                if step == 0:
                    initial_loss = current_loss
                if step == 100:
                    final_loss = current_loss
        self.assertTrue(final_loss < initial_loss)


if __name__ == "__main__":
    run_test(TestCNN,
             "\n=== Running CNN tests ===\n")
    time.sleep(1)
    template.test_input(browser)
    time.sleep(1)
    template.save_output(browser,
                         '10.aiohttp_multiple_session_impliment_p1.html')

    browser.get('http://localhost:8080/io2?_pywebio_debug=1')
    template.test_output(browser)
    time.sleep(1)
    template.test_input(browser)

    time.sleep(1)
    template.save_output(browser,
                         '10.aiohttp_multiple_session_impliment_p2.html')


def start_test_server():
    pywebio.enable_debug()

    app = web.Application()
    app.add_routes([web.get('/io', webio_handler(target, cdn=False))])
    app.add_routes([web.get('/io2', webio_handler(async_target, cdn=False))])
    app.add_routes(static_routes())

    web.run_app(app, host='127.0.0.1', port=8080)


if __name__ == '__main__':
    util.run_test(start_test_server, test,
                  'http://localhost:8080/io?_pywebio_debug=1')
        languages = read_from_json_file(self.driver.data['repository_path'],
                                        '/includes/expected_values.json',
                                        'Languages')

        # Get current URL and re-get URL with different language
        for i in range(1, len(languages)):
            url = self.driver.current_url
            url = re.sub('/' + languages[i - 1] + '/',
                         '/' + languages[i] + '/', url)
            self.driver.get(url)

            # Wait for Processes page to load
            self.wait.until(EC.visibility_of_element_located((By.ID, 'SETUP')))

            # Assert that labels are not present on page
            try:
                self.assertEqual(
                    None, re.search(r'\*\*(\w+)\*\*', self.driver.page_source))
                self.driver.log.append('Labels not found')
            except:
                self.driver.log.append('Labels found')

        self.log = self.driver.log


if __name__ == "__main__":
    import __main__
    data['repository_path'] = repository_path
    output = run_test(TestLanguageSpotCheck, data, __main__)
Exemple #14
0
                        self.driver.log[-1] += 'Wrong ' + key + ' version , '
                        fail_flag = 1

                    try:
                        self.assertTrue('Enabled' in elem)
                        self.driver.log[-1] += 'Enabled; '
                    except:
                        self.driver.log[-1] += 'Disabled; '
                        fail_flag = 1

                    del custom_plugins[key]
                    break
            # Assert custom_plugins is empty (meaning every expected value was found)
        try:
            self.assertEqual(custom_plugins, {})
            self.driver.log[-1] += 'All found'
        except:
            not_found = ', '.join(custom_plugins)
            self.driver.log[-1] += 'Not found: ' + not_found
            fail_flag = 1

        if fail_flag == 1:
            self.fail()
        self.log = self.driver.log


if __name__ == "__main__":
    import __main__
    data['repository_path'] = repository_path
    output = run_test(TestPluginVersions, data, __main__)
def main():
    run_test(TestDataMani)
    run_test(TestDataAug)