示例#1
0
    def get_context_data(self, **kwargs):
        context = super(ReversePuzzleView, self).get_context_data(**kwargs)

        context['key'] = KEY
        context['encoded_url'] = self.encode_url(
            get_next_puzzle_url('reverse'), KEY)

        return context
    def handle(self, *args, **kwargs):
        app_root = os.path.dirname(
            os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
        source_path = os.path.join(app_root, 'img', 'source.png')

        dest_dir = os.path.join(app_root, 'static', 'images', 'generated')
        os.makedirs(dest_dir, exist_ok=True)
        dest_path = os.path.join(dest_dir, 'lookatme.png')

        generate_image(source_path, dest_path,
                       str(get_next_puzzle_url('image')),
                       settings.PUZZLE_IMAGE_FONT_NAME,
                       settings.PUZZLE_IMAGE_FONT_SIZE,
                       settings.PUZZLE_IMAGE_FILL)
示例#3
0
文件: sky.py 项目: m4tx/hackthespace
def generate_sky():
    s = ''
    chosen = random.randint(0, ITEM_NUM - 1)

    for i in range(ITEM_NUM):
        s += '<span style="color: #{}">'.format(rand_gray())
        if i == chosen:
            s += '<a href="' + str(get_next_puzzle_url('sky')) + '">'
            s += '★'
            s += '</a>'
        else:
            s += random.choice(CHARS)
        s += '</span>'

        for _ in range(random.randint(22, 56)):
            s += SPACE
            if random.randint(0, 1) == 1:
                s += ' '

    return mark_safe(s)
示例#4
0
    def handle(self, *args, **kwargs):
        app_root = os.path.dirname(os.path.dirname(os.path.dirname(
            os.path.abspath(__file__))))
        source_path = os.path.join(app_root, 'audio', 'deadlyfox.ogg')

        dest_dir = os.path.join(app_root, 'static', 'audio', 'generated')
        os.makedirs(dest_dir, exist_ok=True)
        dest_path = os.path.join(dest_dir, 'deadlyfox')

        hide_text_in_audio(
            input_path=source_path,
            out_path=dest_path,
            text=str(get_next_puzzle_url('audio_spectrum')),
            font_name=settings.PUZZLE_AUDIO_SPECTRUM_FONT_NAME,
            font_size=settings.PUZZLE_AUDIO_SPECTRUM_FONT_SIZE,
            min_freq=settings.PUZZLE_AUDIO_SPECTRUM_MIN_FREQ,
            max_freq=settings.PUZZLE_AUDIO_SPECTRUM_MAX_FREQ,
            pixels_per_second=settings.PUZZLE_AUDIO_SPECTRUM_PPS,
            audio_position=settings.PUZZLE_AUDIO_SPECTRUM_AUDIO_POS,
            audio_gain=settings.PUZZLE_AUDIO_SPECTRUM_AUDIO_GAIN,
            audio_tags=settings.PUZZLE_AUDIO_SPECTRUM_TAGS)
示例#5
0
class LoginPuzzleView(FormView):
    template_name = 'login/puzzle.html'
    form_class = LoginForm
    success_url = get_next_puzzle_url('login')

    username = '******'
    password = '******'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['username'] = self.username
        context['password'] = self.password
        return context

    def form_valid(self, form):
        if (form.cleaned_data['password'] != self.password
                or form.cleaned_data['username'] != self.username):
            form.add_error('password', 'The password you provided is invalid')
            return self.form_invalid(form)

        return super().form_valid(form)
示例#6
0
    def __create_txt(self):
        with open(os.path.join(self.tmp_dir, README_FILENAME), 'w') as f:
            with open(os.path.join(self.assets_dir, README_FILENAME)) as in_f:
                readme_contents = in_f.read()

            f.write(readme_contents.format(get_next_puzzle_url('stego_mix')))
示例#7
0
def next_puzzle_url(context: RequestContext):
    return get_next_puzzle_url(get_current_puzzle(context))