def setup_mask(session_id): provider = Provider() sessions = provider.sessions() masks = provider.masks() if not sessions.can_access(current_user, session_id): flash('Access Denied', 'error') return redirect(url_for('home.index')) user_id = 0 if current_user.admin else current_user.id session = sessions.get(user_id=user_id, session_id=session_id)[0] has_custom_masklist = sessions.session_filesystem.custom_file_exists(sessions.session_filesystem.get_custom_file_path(current_user.id, session_id, prefix='custom_masklist', random=False, extension='.hcmask')) return render_template( 'sessions/setup/mask.html', session=session, masks=masks.get_masks(), has_custom_masklist=has_custom_masklist )
def setup_mask_save(session_id): provider = Provider() sessions = provider.sessions() masks = provider.masks() if not sessions.can_access(current_user, session_id): flash('Access Denied', 'error') return redirect(url_for('home.index')) mask_type = int(request.form['mask_type'].strip()) if mask_type == 0: # Global Hashcat mask file. mask = request.form['masklist'].strip() if not masks.is_valid_mask(mask): flash('Invalid mask file selected', 'error') return redirect(url_for('sessions.setup_mask', session_id=session_id)) masklist_location = masks.get_mask_path(mask) sessions.set_hashcat_setting(session_id, 'masklist', masklist_location) elif mask_type == 1: # Custom Hashcat mask file save_as = sessions.session_filesystem.get_custom_file_path(current_user.id, session_id, prefix='custom_masklist', random=False, extension='.hcmask') if len(request.files) != 1: flash('Uploaded file could not be found', 'error') return redirect(url_for('sessions.setup_mask', session_id=session_id)) file = request.files['custom_masklist'] if file.filename == '': # If file already exists, use that one instead. if not sessions.session_filesystem.custom_file_exists(save_as): flash('Uploaded file could not be found', 'error') return redirect(url_for('sessions.setup_mask', session_id=session_id)) else: # Otherwise upload new file. file.save(save_as) sessions.set_hashcat_setting(session_id, 'masklist', save_as) elif mask_type == 2: # Manual mask mask = request.form['compiled-mask'].strip() if len(mask) == 0: flash('No mask set', 'error') return redirect(url_for('sessions.setup_mask', session_id=session_id)) sessions.set_hashcat_setting(session_id, 'mask', mask) else: flash('Invalid mask option', 'error') return redirect(url_for('sessions.setup_mask', session_id=session_id)) enable_increments = int(request.form.get('enable_increments', 0)) if enable_increments == 1: increment_min = int(request.form['increment-min'].strip()) increment_max = int(request.form['increment-max'].strip()) if increment_min <= 0: flash('Min Increment is invalid', 'error') return redirect(url_for('sessions.setup_mask', session_id=session_id)) if increment_max <= 0: flash('Max Increment is invalid', 'error') return redirect(url_for('sessions.setup_mask', session_id=session_id)) if increment_min > increment_max: flash('Min Increment cannot be bigger than Max Increment', 'error') return redirect(url_for('sessions.setup_mask', session_id=session_id)) else: increment_min = 0 increment_max = 0 sessions.set_hashcat_setting(session_id, 'increment_min', increment_min) sessions.set_hashcat_setting(session_id, 'increment_max', increment_max) sessions.set_hashcat_setting(session_id, 'mask_type', mask_type) return redirect(url_for('sessions.settings', session_id=session_id))