コード例 #1
0
    def nextPut(self):
        #TODO: косяк в status_service
        # Подводим итоги предыдущего раунда

        self.statistic.summary(self.round_count)
        # Очищаем предыдущие задачи
        self.checkerManager.clear()
        self.round_count += 1

        Message.success('Round: ' + str(self.round_count))

        for team in self.config.get_all_teams():
            for service in self.config.get_all_services():
                flag = self.generate_flags()
                flag_id = self.generate_flag_ids()

                Message.info(team['name'] + ' ' + service['name'] + ' ' + flag)

                self.checkerManager.put(team=team,
                                        service=service,
                                        flag=flag,
                                        flag_id=flag_id,
                                        round=self.round_count,
                                        action='put')
        self.checkerManager.run()
コード例 #2
0
    def start(self):
        Message.success(
            'Class is initialized. Starting...\nListening on port {}'.format(
                CHECKER['PORT']))
        try:
            self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            self.socket.bind(('0.0.0.0', self.port))
            self.socket.listen(
                CHECKER['MAX_CONNECTIONS']
            )  # максимальное число соединений. учитывайте это при конфигурировании сервиса

            while True:
                self.conn, self.address = self.socket.accept()
                Message.info('connected:' + self.address[0])

                process = multiprocessing.Process(target=self.recv,
                                                  args=(self.conn,
                                                        self.address))
                process.daemon = True
                process.start()

        except KeyboardInterrupt:
            print('Module flags is shutdown')
            self.conn.close()
            exit(0)
コード例 #3
0
    def create_teams(self):
        Message.success('Generate teams')

        for e in self.config.teams:
            Message.info("\tInit team {" + e["name"] + "} (Network: " +
                         e["network"] + ")")
            self.db.teams.insert_one(e)
コード例 #4
0
    def create_service(self):
        Message.success('Generate services')

        for e in self.config.services:
            Message.info("\tInit service {" + e["name"] + "}");

            self.db.services.insert_one(e)
            self.create_program(e['name'], e['program'])
コード例 #5
0
 def __init__(self, method='json'):
     Message.info('Get config from ' + method)
     if method == 'json':
         self.from_json()
     else:
         self.from_api()
     if not self.loaded:
         Message.fail("Couldn't get config...Exit")
         sys.exit(0)
コード例 #6
0
    def delete_old_data(self):
        Message.info('Removing old data ... ')
        self.db.teams.delete_many({})
        self.db.services.delete_many({})
        self.db.scoreboard.delete_many({})
        self.db.flags.delete_many({})
        self.db.stolen_flags.delete_many({})
        self.db.settings.delete_many({})

        Message.info('\tDone')
コード例 #7
0
ファイル: put.py プロジェクト: shipko/ctf-attack-defense
    def __init__(self, method='api'):
        Message.info('Get config from ' + method)
        if method == 'json':
            self.from_json()
        else:
            self.from_api()

        if not self.loaded:
            Message.fail("Couldn't get config...Exit")
            sys.exit(0)
コード例 #8
0
    def __init__(self, args):
        self.args = args

        Message.info('Get config from ' + self.args.type)

        if self.args.type == 'json':
            self.from_json()
        else:
            self.from_api()

        if not self.loaded:
            Message.fail("Couldn't get config...Exit")
            sys.exit(0)
コード例 #9
0
    def __init__(self, db):
        self.db = db
        self.config = ConfigGet(self.db)
        self.statistic = Statistic(self.db, self.config)
        self.status_service = {}

        if CHECKER['METHOD'] == 'queue':
            from classes.checker.queue import Queue
            self.checkerManager = Queue()
        else:
            self.checkerManager = Threads()

        Message.info('Get last round number')
        self.get_round_number()
        Message.info('\t Last round number - ' + str(self.round_count))
コード例 #10
0
ファイル: flags.py プロジェクト: shipko/ctf-attack-defense
    def start(self):
        Message.success("Class is initialized. Starting")
        try:
            self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            self.socket.bind(("0.0.0.0", self.port))
            self.socket.listen(1)

            while True:
                self.conn, self.address = self.socket.accept()
                Message.info("connected:" + self.address[0])

                process = multiprocessing.Process(target=self.recv, args=(self.conn, self.address))
                process.daemon = True
                process.start()

        except KeyboardInterrupt:
            print("Module flags is shutdown")
            self.conn.close()
            exit(0)
コード例 #11
0
    def start(self):
        Message.success('Class is initialized. Starting')
        try:
            self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            self.socket.bind(('0.0.0.0', self.port))
            self.socket.listen(1)

            while True:
                self.conn, self.address = self.socket.accept()
                Message.info('connected:' + self.address[0])

                process = multiprocessing.Process(target=self.recv, args=(self.conn, self.address))
                process.daemon = True
                process.start()

        except KeyboardInterrupt:
            print('Module flags is shutdown')
            self.conn.close()
            exit(0)
コード例 #12
0
ファイル: round.py プロジェクト: shipko/ctf-attack-defense
    def __init__(self, db):
        self.db = db
        self.config = ConfigGet(self.db)

        self.statistic = Statistic(self.db, self.config)

        self.status_service = {}

        # if CHECKER_METHOD == 'queue':
        from classes.checker.queue import Queue
        self.checkerManager = Queue()
        # else:
        #     self.checkerManager = Threads()


        Message.info('Get last round number')

        self.get_round_number()

        Message.info('\t Last round number - ' + str(self.round_count))
コード例 #13
0
    def __init__(self, db):
        self.db = db
        self.config = ConfigGet(self.db)

        self.statistic = Statistic(self.db, self.config)

        self.status_service = {}

        # if CHECKER_METHOD == 'queue':
        from classes.checker.queue import Queue
        self.checkerManager = Queue()
        # else:
        #     self.checkerManager = Threads()


        Message.info('Get last round number')

        self.get_round_number()

        Message.info('\t Last round number - ' + str(self.round_count))

        Message.success('All ready!')
        Message.info('Now use python3 main.py init --slave for starting slave client')
コード例 #14
0
 def create_service(self):
     Message.success('Generate services')
     for e in self.config.services:
         Message.info("\tInit service {" + e["name"] + "}");
         self.db.services.insert_one(e)
         self.create_program(e['name'], e['program'])
コード例 #15
0
    def create_teams(self):
        Message.success('Generate teams')

        for e in self.config.teams:
            Message.info("Init team {" + e["name"] + "} (Network: " + e["network"] + ")");
            self.db.teams.insert_one(e)