68 lines
2.1 KiB
Python
Executable File
68 lines
2.1 KiB
Python
Executable File
#! /usr/bin/env python3
|
|
import exploit
|
|
import argparse
|
|
import unittest
|
|
|
|
RELEASE_PORT = 8080
|
|
DEBUG_PORT = 8081
|
|
|
|
|
|
def __get_activation_key__() -> bytes:
|
|
global activation_key_file
|
|
assert (activation_key_file is not None)
|
|
with open(activation_key_file, "rb") as f:
|
|
data = f.read()
|
|
return data
|
|
|
|
|
|
class ExploitTest(unittest.TestCase):
|
|
|
|
def __check_extract_activation_key__(self, is_debug: bool):
|
|
port = DEBUG_PORT if is_debug else RELEASE_PORT
|
|
exploit.PORT = port
|
|
key = exploit.extract_premium_key(is_debug)
|
|
self.assertEqual(key, __get_activation_key__())
|
|
|
|
def test_extract_activation_key_debug(self):
|
|
self.__check_extract_activation_key__(is_debug=True)
|
|
|
|
def test_extract_activation_key_release(self):
|
|
self.__check_extract_activation_key__(is_debug=False)
|
|
|
|
def __check_get_flag__(self, is_debug: bool):
|
|
port = DEBUG_PORT if is_debug else RELEASE_PORT
|
|
exploit.PORT = port
|
|
p = exploit.connect(__get_activation_key__(), True)
|
|
flag = exploit.get_flag(p, is_debug)
|
|
self.assertRegex(flag, "flag_[0-9a-f]{32}")
|
|
|
|
def test_get_flag_debug(self):
|
|
self.__check_get_flag__(True)
|
|
|
|
def test_get_flag_release(self):
|
|
self.__check_get_flag__(False)
|
|
|
|
def __check_combined__(self, is_debug: bool):
|
|
port = DEBUG_PORT if is_debug else RELEASE_PORT
|
|
exploit.PORT = port
|
|
activation_key = exploit.extract_premium_key(is_debug)
|
|
p = exploit.connect(activation_key, True)
|
|
flag = exploit.get_flag(p, is_debug)
|
|
self.assertRegex(flag, "flag_[0-9a-f]{32}")
|
|
|
|
def test_combined_debug(self):
|
|
self.__check_combined__(True)
|
|
|
|
def test_combined_release(self):
|
|
self.__check_combined__(False)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
global activation_key_file
|
|
arg_parser = argparse.ArgumentParser(prog="Exploit CI tester")
|
|
arg_parser.add_argument("-f", "--file", type=str, required=True, help="File containing the activation key.")
|
|
args = arg_parser.parse_args()
|
|
activation_key_file = args.file
|
|
|
|
unittest.main(argv=[""])
|