Example #1
0
    def shifttext(self, shift, msg):
        msg = msg.strip().lower()
        data = []
        for c in msg:
            if c.strip() and c in self.ALPHABET:
                data.append(self.ALPHABET[(self.ALPHABET.index(c) + shift) % 26])
            else:
                data.append(c)

        output = ''.join(data)
        return output

    def check(self, answer):
        # Update will only change the message if the timer is expired
        self.update()

        if answer.strip().lower() == self.message.strip().lower():
            self.num_solved += 1
            if self.num_solved >= self.num_to_solve:
                self.solved = True
            else:
                # If they're not done, generate a new encrypted message
                self.generate_enc_message()
            return True

        # They have to get all 50 in a row correct
        self.reset()
        return False

Session.register_challenge(Rot)
Example #2
0
from core.challenge import Challenge, ChallengeMetadata
from core.session import Session
from flags import FlagGenerator

FLAGS = FlagGenerator.generate_flags()


class JackIt(Challenge):
    meta = ChallengeMetadata(
        challenge_id="jackit_game",
        name="Game Programming Challenge",
        description="2D Side-scrolling game where you modify code to win",
        price=0,
        value=153,
        flag="",
        sort_order=1,
        js_function="jackIt()")

    def __init__(self):
        super().__init__()
        self.solved = True
        self.purchased = True

    def check(self, answer):
        self.solved = True
        return True


Session.register_challenge(JackIt)
Example #3
0
from core.challenge import Challenge, ChallengeMetadata
from core.session import Session
from flags import FlagGenerator

FLAGS = FlagGenerator.generate_flags()


class SentenceBot(Challenge):
    meta = ChallengeMetadata(challenge_id="sentence_bot",
                             name="Sentence Bot",
                             description="RE The Flag",
                             price=0,
                             value=FLAGS["sentence_bot_challenge"][1],
                             flag="",
                             sort_order=0,
                             js_function="sentenceBot()")

    def __init__(self):
        super().__init__()
        self.solved = True
        self.purchased = True

    def check(self, answer):
        self.solved = True
        return True


Session.register_challenge(SentenceBot)
Example #4
0
from core.challenge import Challenge, ChallengeMetadata
from core.session import Session, AuthenticatedSession
from flags import FlagGenerator

FLAGS = FlagGenerator.generate_flags()

class PaidContent(Challenge):
    meta = ChallengeMetadata(
        challenge_id="paid_content",
        name="Paid Content",
        description="Pay for things you want!",
        price=25,
        value=FLAGS["paid_content_challenge"][1],
        flag=FLAGS["paid_content_challenge"][0],
        js_function="paidContent()",
        sort_order=2
    )

    def check(self, answer):
        if isinstance(answer, AuthenticatedSession):
            if answer.paid:
                self.solved = True
                return True
        return False

Session.register_challenge(PaidContent)
Example #5
0
        self.cipher = self.sxor(self.cipher_key, self.message)

    def generate_key(self):
        key_len = 6
        for _ in range(key_len):
            self.key += self.alnum[random.randint(0, (len(self.alnum) - 1))]
        self.cipher_key = str(self.key) * (int(len(self.message) / len(self.key)) + 1)

    def sxor(self, s1, s2):
        # convert strings to a list of character pair tuples
        # go through each tuple, converting them to ASCII code (ord)
        # perform exclusive or on the ASCII code
        # then convert the result back to ASCII (chr)
        # merge the resulting array of characters as a string
        return bytes([(ord(a) ^ ord(b)) for a, b in zip(s1, s2)])

    def to_json(self):
        obj = super().to_json()
        obj.update({
            "cipher_text": str(self.cipher.hex())
        })
        return obj

    def check(self, answer):
        if answer.strip() == self.key or answer.strip() == self.cipher_key:
            self.solved = True
            return True
        return False

Session.register_challenge(Xor)
Example #6
0
from core.challenge import Challenge, ChallengeMetadata
from core.session import Session
from flags import FlagGenerator

FLAGS = FlagGenerator.generate_flags()


class JackIt(Challenge):
    meta = ChallengeMetadata(
        challenge_id="jackit_game",
        name="Game Programming Challenge",
        description="2D Side-scrolling game where you modify code to win",
        price=0,
        value=153,
        flag="",
        sort_order=1,
        js_function="jackIt()"
    )

    def __init__(self):
        super().__init__()
        self.solved = True
        self.purchased = True

    def check(self, answer):
        self.solved = True
        return True


Session.register_challenge(JackIt)
Example #7
0
    def __init__(self):
        super().__init__()
        random.seed()
        self.password = ""
        self.score = 0
        for _ in range(self.password_len):
            self.password += self.chars[random.randint(0, len(self.chars) - 1)]

    def to_json(self):
        obj = super().to_json()
        obj.update({"score": self.score})
        return obj

    def get_fitness(self, answer):
        score = 0
        for i, c in enumerate(answer):
            if self.password[i] == c:
                score += 1
        self.score = (score / len(self.password)) * 100
        if self.score == 100:
            # Only solved when the score is 100
            self.solved = True

    def check(self, answer):
        answer = answer.strip()
        self.get_fitness(answer)
        return True


Session.register_challenge(Genetic)
Example #8
0
        super().__init__()
        random.seed()
        self.password = ""
        self.score = 0
        for _ in range(self.password_len):
            self.password += self.chars[random.randint(0, len(self.chars) - 1)]

    def to_json(self):
        obj = super().to_json()
        obj.update({
            "score": self.score
        })
        return obj

    def get_fitness(self, answer):
        score = 0
        for i, c in enumerate(answer):
            if self.password[i] == c:
                score += 1
        self.score = (score / len(self.password)) * 100
        if self.score == 100:
            # Only solved when the score is 100
            self.solved = True

    def check(self, answer):
        answer = answer.strip()
        self.get_fitness(answer)
        return True

Session.register_challenge(Genetic)
Example #9
0
FLAGS = FlagGenerator.generate_flags()


class SuperAdmin(Challenge):
    meta = ChallengeMetadata(challenge_id="super_admin",
                             name="Super Admin",
                             description="Are you admin tho?",
                             price=0,
                             value=FLAGS["super_admin_challenge"][1],
                             flag=FLAGS["super_admin_challenge"][0],
                             js_function="superAdmin()",
                             sort_order=0)

    def __init__(self):
        super().__init__()
        self.solved = True
        self.purchased = True

    def to_json(self):
        obj = super().to_json()
        obj.update({"flag": self.meta.flag})
        return obj

    def check(self, answer):
        self.solved = True
        return True


Session.register_challenge(SuperAdmin)
Example #10
0
                             flag=FLAGS["brutal_force_challenge"][0],
                             js_function="brutalForce()",
                             sort_order=1)

    def __init__(self):
        super().__init__()
        random.seed()  # uses current system time
        self.pin = random.randint(666, 9999)  # The user's random PIN number
        self.pin_hash = hashlib.sha256(str(
            self.pin).encode('utf-8')).hexdigest()

    def to_json(self):
        obj = super().to_json()
        obj.update({"pin_hash": self.pin_hash})
        return obj

    def check(self, answer):
        try:
            answer = int(answer)
            if answer < 1 or answer > 9999:
                return False
        except ValueError:
            return False
        if answer == self.pin:
            self.solved = True
            return True
        return False


Session.register_challenge(BrutalForce)
Example #11
0
from core.challenge import Challenge, ChallengeMetadata
from core.session import Session, AuthenticatedSession
from flags import FlagGenerator

FLAGS = FlagGenerator.generate_flags()


class PaidContent(Challenge):
    meta = ChallengeMetadata(challenge_id="paid_content",
                             name="Paid Content",
                             description="Pay for things you want!",
                             price=25,
                             value=FLAGS["paid_content_challenge"][1],
                             flag=FLAGS["paid_content_challenge"][0],
                             js_function="paidContent()",
                             sort_order=2)

    def check(self, answer):
        if isinstance(answer, AuthenticatedSession):
            if answer.paid:
                self.solved = True
                return True
        return False


Session.register_challenge(PaidContent)
Example #12
0
        self.cipher = self.sxor(self.cipher_key, self.message)

    def generate_key(self):
        key_len = 6
        for _ in range(key_len):
            self.key += self.alnum[random.randint(0, (len(self.alnum) - 1))]
        self.cipher_key = str(
            self.key) * (int(len(self.message) / len(self.key)) + 1)

    def sxor(self, s1, s2):
        # convert strings to a list of character pair tuples
        # go through each tuple, converting them to ASCII code (ord)
        # perform exclusive or on the ASCII code
        # then convert the result back to ASCII (chr)
        # merge the resulting array of characters as a string
        return bytes([(ord(a) ^ ord(b)) for a, b in zip(s1, s2)])

    def to_json(self):
        obj = super().to_json()
        obj.update({"cipher_text": str(self.cipher.hex())})
        return obj

    def check(self, answer):
        if answer.strip() == self.key or answer.strip() == self.cipher_key:
            self.solved = True
            return True
        return False


Session.register_challenge(Xor)
Example #13
0
from core.challenge import Challenge, ChallengeMetadata
from core.session import Session
from flags import FlagGenerator

FLAGS = FlagGenerator.generate_flags()


class SentenceBot(Challenge):
    meta = ChallengeMetadata(
        challenge_id="sentence_bot",
        name="Sentence Bot",
        description="RE The Flag",
        price=0,
        value=FLAGS["sentence_bot_challenge"][1],
        flag="",
        sort_order=0,
        js_function="sentenceBot()"
    )

    def __init__(self):
        super().__init__()
        self.solved = True
        self.purchased = True

    def check(self, answer):
        self.solved = True
        return True


Session.register_challenge(SentenceBot)
Example #14
0
        js_function="brutalForce()",
        sort_order=1
    )

    def __init__(self):
        super().__init__()
        random.seed() # uses current system time
        self.pin = random.randint(666, 9999) # The user's random PIN number
        self.pin_hash = hashlib.sha256(str(self.pin).encode('utf-8')).hexdigest()

    def to_json(self):
        obj = super().to_json()
        obj.update({
            "pin_hash": self.pin_hash
        })
        return obj

    def check(self, answer):
        try:
            answer = int(answer)
            if answer < 1 or answer > 9999:
                return False
        except ValueError:
            return False
        if answer == self.pin:
            self.solved = True
            return True
        return False

Session.register_challenge(BrutalForce)
Example #15
0
class SuperAdmin(Challenge):
    meta = ChallengeMetadata(
        challenge_id="super_admin",
        name="Super Admin",
        description="Are you admin tho?",
        price=0,
        value=FLAGS["super_admin_challenge"][1],
        flag=FLAGS["super_admin_challenge"][0],
        js_function="superAdmin()",
        sort_order=0
    )

    def __init__(self):
        super().__init__()
        self.solved = True
        self.purchased = True

    def to_json(self):
        obj = super().to_json()
        obj.update({
            "flag": self.meta.flag
        })
        return obj

    def check(self, answer):
        self.solved = True
        return True

Session.register_challenge(SuperAdmin)
Example #16
0
        data = []
        for c in msg:
            if c.strip() and c in self.ALPHABET:
                data.append(self.ALPHABET[(self.ALPHABET.index(c) + shift) %
                                          26])
            else:
                data.append(c)

        output = ''.join(data)
        return output

    def check(self, answer):
        # Update will only change the message if the timer is expired
        self.update()

        if answer.strip().lower() == self.message.strip().lower():
            self.num_solved += 1
            if self.num_solved >= self.num_to_solve:
                self.solved = True
            else:
                # If they're not done, generate a new encrypted message
                self.generate_enc_message()
            return True

        # They have to get all 50 in a row correct
        self.reset()
        return False


Session.register_challenge(Rot)