Beispiel #1
0
    def post(self):
        """
        Nahrava slovník na server
        """
        # check if the post request has the file part
        if 'file' not in request.files:
            abort(500, 'No file part')
            return redirect(request.url)
        file = request.files['file']
        # if user does not select file, browser also
        # submit a empty part without filename
        if file.filename == '':
            abort(500, 'No selected file')

        uploadedFile = fileUpload(file, DICTIONARY_DIR, ALLOWED_EXTENSIONS)
        if uploadedFile:
            hc_keyspace = int(shellExec(HASHCAT_PATH + ' --keyspace -a 0 ' + os.path.join(DICTIONARY_DIR, uploadedFile['path']), cwd=HASHCAT_DIR))
            dictionary = FcDictionary(name=uploadedFile['filename'], path=uploadedFile['path'], keyspace=hc_keyspace)
            try:
                db.session.add(dictionary)
                db.session.commit()
            except exc.IntegrityError as e:
                db.session().rollback()
                abort(500, 'Dictionary with name ' + uploadedFile['filename'] + ' already exists.')
            return {
                'message': 'Dictionary ' + uploadedFile['filename'] + ' successfuly uploaded.',
                'status': True

            }
        else:
            abort(500, 'Wrong file format')
Beispiel #2
0
    def post(self):
        """
        Nahrava zaheslovaný subor na server
        """
        # check if the post request has the file part
        if 'file' not in request.files:
            abort(500, 'No file part')
            return redirect(request.url)
        file = request.files['file']
        # if user does not select file, browser also
        # submit a empty part without filename
        if file.filename == '':
            abort(500, 'No selected file')

        uploadedFile = fileUpload(file,
                                  PROTECTEDFILES_DIR,
                                  ALLOWED_EXTENSIONS,
                                  withTimestamp=True)
        if uploadedFile:
            hash = getHashFromFile(filename=uploadedFile['filename'],
                                   path=uploadedFile['path'])
            encFile = FcEncryptedFile(name=uploadedFile['filename'],
                                      path=uploadedFile['path'],
                                      hash=hash['hash'],
                                      hash_type=hash['hash_type'])
            try:
                db.session.add(encFile)
                db.session.commit()
            except exc.IntegrityError as e:
                db.session().rollback()
                abort(
                    500, 'File with name ' + uploadedFile['filename'] +
                    ' already exists.')
            return {
                'message': 'Successfully extracted hash form file.',
                'status': True,
                'hash': hash['hash'],
                'hash_type': hash['hash_type'],
                'hash_type_name': encFile.hash_type_name,
                'file_id': encFile.id
            }
        else:
            abort(
                500, 'We only support ' +
                ', '.join(str(x) for x in ALLOWED_EXTENSIONS) + '.')
Beispiel #3
0
    def post(self):
        """
        Uploads rule file on server.
        """
        # check if the post request has the file part
        if 'file' not in request.files:
            abort(500, 'No file part')
            return redirect(request.url)
        file = request.files['file']
        # if user does not select file, browser also
        # submit a empty part without filename
        if file.filename == '':
            abort(500, 'No selected file')

        uploadedFile = fileUpload(file,
                                  RULE_DIR,
                                  ALLOWED_EXTENSIONS,
                                  suffix='.rule')
        if uploadedFile:
            rule_count = 0
            with open(os.path.join(RULE_DIR, uploadedFile['path']),
                      encoding='latin-1') as file:
                for line in file:
                    if re.match('^\s*(\#.*)?$', line) == None:
                        rule_count += 1
            rule = FcRule(name=uploadedFile['filename'],
                          path=uploadedFile['path'],
                          count=rule_count)
            try:
                db.session.add(rule)
                db.session.commit()
            except exc.IntegrityError as e:
                db.session().rollback()
                abort(
                    500, 'Rule with name ' + uploadedFile['filename'] +
                    ' already exists.')
            return {
                'message':
                'File ' + uploadedFile['filename'] + ' successfully uploaded.',
                'status': True
            }
        else:
            abort(500, 'Wrong file format')
Beispiel #4
0
    def post(self):
        """
        Nahrava mask subor na server
        """
        # check if the post request has the file part
        if 'file' not in request.files:
            abort(500, 'No file part')
            return redirect(request.url)
        file = request.files['file']
        # if user does not select file, browser also
        # submit a empty part without filename
        if file.filename == '':
            abort(500, 'No selected file')

        content = file.read().splitlines()
        for line in content:
            check_mask_syntax(line.decode("utf-8"))

        uploadedFile = fileUpload(
            file,
            MASKS_DIR,
            ALLOWED_EXTENSIONS,
            "".join(x.decode("utf-8") + "\n" for x in content),
            suffix='.hcmask',
            withTimestamp=True)
        if uploadedFile:
            maskSet = FcMasksSet(name=uploadedFile['filename'],
                                 path=uploadedFile['path'])
            try:
                db.session.add(maskSet)
                db.session.commit()
            except exc.IntegrityError as e:
                db.session().rollback()
                abort(
                    500, 'Masks set with name ' + uploadedFile['filename'] +
                    ' already exists.')
            return {
                'message':
                'File ' + uploadedFile['filename'] + ' successfuly uploaded.',
                'status': True
            }
        else:
            abort(500, 'Wrong file format')
Beispiel #5
0
    def post(self):
        """
        Uploads charset file on server.
        """
        # check if the post request has the file part
        if 'file' not in request.files:
            abort(500, 'No file part')
            return redirect(request.url)
        file = request.files['file']
        # if user does not select file, browser also
        # submit a empty part without filename
        if file.filename == '':
            abort(500, 'No selected file')

        uploadedFile = fileUpload(file,
                                  CHARSET_DIR,
                                  ALLOWED_EXTENSIONS,
                                  suffix='.hcchr')
        if uploadedFile:
            size = os.path.getsize(
                os.path.join(CHARSET_DIR, uploadedFile['path']))
            charset = FcCharset(name=uploadedFile['stem'],
                                path=uploadedFile['path'],
                                keyspace=size)
            try:
                db.session.add(charset)
                db.session.commit()
            except exc.IntegrityError as e:
                db.session().rollback()
                abort(
                    500, 'Charset with name ' + uploadedFile['filename'] +
                    ' already exists.')
            return {
                'message':
                'File ' + uploadedFile['filename'] + ' successfully uploaded.',
                'status': True
            }
        else:
            abort(500, 'Wrong file format')
Beispiel #6
0
    def post(self):
        """
        Upload pcfg on server
        """
        # check if the post request has the file part
        if 'file' not in request.files:
            abort(500, 'No file part')
            return redirect(request.url)
        file = request.files['file']
        # if user does not select file, browser also
        # submit a empty part without filename
        if file.filename == '':
            abort(500, 'No selected file')

        uploadedFile = fileUpload(file, PCFG_DIR, ALLOWED_EXTENSIONS)
        if uploadedFile:
            unzipGrammarToPcfgFolder(uploadedFile['filename'])
            pcfg_keyspace = calculateKeyspace(uploadedFile['filename'])
            pcfg = FcPcfg(
                name=extractNameFromZipfile(uploadedFile['filename']), path=uploadedFile['path'], keyspace=int(pcfg_keyspace))

            try:
                db.session.add(pcfg)
                db.session.commit()
            except exc.IntegrityError as e:
                db.session().rollback()
                abort(500, 'PCFG with name '
                      + uploadedFile['filename'] + ' already exists.')

            createPcfgGrammarBin(uploadedFile['filename'])

            return {
                'message': 'PCFG ' + uploadedFile['filename'] + ' successfully uploaded.',
                'status': True

            }
        else:
            abort(500, 'Wrong file format')
Beispiel #7
0
    def post(self):
        """
        Nahrava hcstats na server
        """
        # check if the post request has the file part
        if 'file' not in request.files:
            abort(500, 'No file part')
            return redirect(request.url)
        file = request.files['file']
        # if user does not select file, browser also
        # submit a empty part without filename
        if file.filename == '':
            abort(500, 'No selected file')

        uploadedFile = fileUpload(file,
                                  HCSTATS_DIR,
                                  ALLOWED_EXTENSIONS,
                                  suffix='.hcstat2',
                                  withTimestamp=True)
        if uploadedFile:
            hcstats = FcHcstat(name=uploadedFile['filename'],
                               path=uploadedFile['path'])
            try:
                db.session.add(hcstats)
                db.session.commit()
            except exc.IntegrityError as e:
                db.session().rollback()
                abort(
                    500, 'HcStats with name ' + uploadedFile['filename'] +
                    ' already exists.')
            return {
                'message':
                'File ' + uploadedFile['filename'] + ' successfuly uploaded.',
                'status': True
            }
        else:
            abort(500, 'Wrong file format')