Ejemplo n.º 1
0
    def get(self):
        provider = Provider()
        rules = provider.rules()

        files = rules.get_rules()

        api_files = []
        for name, file in files.items():
            api_files.append(self.compile_file_object(file))

        return self.send_valid_response(api_files)
Ejemplo n.º 2
0
def setup_wordlist(session_id):
    provider = Provider()
    sessions = provider.sessions()
    wordlists = provider.wordlists()
    rules = provider.rules()

    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]

    return render_template('sessions/setup/wordlist.html',
                           session=session,
                           wordlists=wordlists.get_wordlists(),
                           rules=rules.get_rules())
Ejemplo n.º 3
0
    def set(self, user_id, session_id):
        required_fields = ['name']
        data = self.get_json(required_fields)
        if data is False:
            return self.send_error_response(
                5000, 'Missing fields',
                'Required fields are: ' + ', '.join(required_fields))

        provider = Provider()
        sessions = provider.sessions()
        rules = provider.rules()

        session = sessions.get(user_id=user_id, session_id=session_id)
        if not session:
            return self.send_access_denied_response()
        elif not rules.is_valid_rule(data['name']):
            return self.send_error_response(5009, 'Invalid rule', '')

        rule_location = rules.get_rule_path(data['name'])
        sessions.set_hashcat_setting(session_id, 'rule', rule_location)

        return self.send_success_response()
Ejemplo n.º 4
0
def __setup_rules(session_id, request):
    provider = Provider()
    sessions = provider.sessions()
    rules = provider.rules()

    rule_type = int(request.form['rule_type'].strip())

    if rule_type == 0:
        # Global Rules.
        rule = request.form['rule'].strip()
        if len(rule) > 0 and not rules.is_valid_rule(rule):
            flash('Invalid rule selected', 'error')
            return redirect(url_for('sessions.setup_wordlist', session_id=session_id))

        rule_location = rules.get_rule_path(rule)
        sessions.set_hashcat_setting(session_id, 'rule', rule_location)
    elif rule_type == 1:
        # Custom rule.
        save_as = sessions.session_filesystem.get_custom_file_path(current_user.id, session_id, prefix='custom_rule',
                                                                   extension='.rule')

        file = request.files['custom_rule']
        if file.filename == '':
            # If file already exists, use that one instead.
            if not sessions.session_filesystem.custom_file_exists(save_as):
                flash('Uploaded rule file could not be found', 'error')
                return redirect(url_for('sessions.setup_wordlist', session_id=session_id))
        else:
            # Otherwise upload new file.
            file.save(save_as)
            sessions.set_hashcat_setting(session_id, 'rule', save_as)
    else:
        flash('Invalid rule option', 'error')
        return redirect(url_for('sessions.setup_wordlist', session_id=session_id))

    sessions.set_hashcat_setting(session_id, 'rule_type', rule_type)

    return True
Ejemplo n.º 5
0
def setup_wordlist(session_id):
    provider = Provider()
    sessions = provider.sessions()
    wordlists = provider.wordlists()
    rules = provider.rules()

    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_wordlist = sessions.session_filesystem.custom_file_exists(sessions.session_filesystem.get_custom_file_path(current_user.id, session_id, prefix='custom_wordlist'))
    has_custom_rule = sessions.session_filesystem.custom_file_exists(sessions.session_filesystem.get_custom_file_path(current_user.id, session_id, prefix='custom_rule', extension='.rule'))

    return render_template(
        'sessions/setup/wordlist.html',
        session=session,
        wordlists=wordlists.get_wordlists(),
        rules=rules.get_rules(),
        has_custom_wordlist=has_custom_wordlist,
        has_custom_rule=has_custom_rule
    )
Ejemplo n.º 6
0
def setup_wordlist(session_id):
    provider = Provider()
    sessions = provider.sessions()
    wordlists = provider.wordlists()
    rules = provider.rules()

    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]

    password_wordlists = wordlists.get_wordlists()
    hashcat_rules = rules.get_rules()

    return render_template('sessions/setup/wordlist.html',
                           session=session,
                           wordlists_json=json.dumps(password_wordlists,
                                                     indent=4,
                                                     sort_keys=True,
                                                     default=str),
                           rules=hashcat_rules)
Ejemplo n.º 7
0
def setup_wordlist_save(session_id):
    provider = Provider()
    sessions = provider.sessions()
    wordlists = provider.wordlists()
    rules = provider.rules()

    if not sessions.can_access(current_user, session_id):
        flash('Access Denied', 'error')
        return redirect(url_for('home.index'))

    wordlist_type = int(request.form['wordlist_type'].strip())

    if wordlist_type == 0:
        # Global wordlist.
        wordlist = request.form['wordlist'].strip()
        if not wordlists.is_valid_wordlist(wordlist):
            flash('Invalid wordlist selected', 'error')
            return redirect(
                url_for('sessions.setup_wordlist', session_id=session_id))

        wordlist_location = wordlists.get_wordlist_path(wordlist)
        sessions.set_hashcat_setting(session_id, 'wordlist', wordlist_location)
    elif wordlist_type == 1:
        # Custom wordlist.
        save_as = sessions.session_filesystem.get_custom_wordlist_path(
            current_user.id,
            session_id,
            prefix='custom_wordlist_',
            random=True)
        if len(request.files) != 1:
            flash('Uploaded file could not be found', 'error')
            return redirect(
                url_for('sessions.setup_wordlist', session_id=session_id))

        file = request.files['custom_wordlist']
        if file.filename == '':
            flash('No hashes uploaded', 'error')
            return redirect(
                url_for('sessions.setup_wordlist', session_id=session_id))

        file.save(save_as)
        sessions.set_hashcat_setting(session_id, 'wordlist', save_as)
    elif wordlist_type == 2:
        # Create wordlist from cracked passwords.
        save_as = sessions.session_filesystem.get_custom_wordlist_path(
            current_user.id, session_id, prefix='pwd_wordlist')
        sessions.export_cracked_passwords(session_id, save_as)
        sessions.set_hashcat_setting(session_id, 'wordlist', save_as)
    else:
        flash('Invalid wordlist option', 'error')
        return redirect(
            url_for('sessions.setup_wordlist', session_id=session_id))

    sessions.set_hashcat_setting(session_id, 'wordlist_type', wordlist_type)

    rule = request.form['rule'].strip()
    if len(rule) > 0 and not rules.is_valid_rule(rule):
        flash('Invalid rule selected', 'error')
        return redirect(
            url_for('sessions.setup_wordlist', session_id=session_id))

    rule_location = rules.get_rule_path(rule)
    sessions.set_hashcat_setting(session_id, 'rule', rule_location)

    return redirect(url_for('sessions.settings', session_id=session_id))