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)
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)
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)
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)
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')))
def next_puzzle_url(context: RequestContext): return get_next_puzzle_url(get_current_puzzle(context))