コード例 #1
0
def view_report(request, checksum, api=False):
    """Dynamic Analysis Report Generation."""
    logger.info('Dynamic Analysis Report Generation')
    try:
        droidmon = {}
        apimon = {}
        if not is_md5(checksum):
            # We need this check since checksum is not validated
            # in REST API
            return print_n_send_error_response(request, 'Invalid Parameters',
                                               api)
        package = get_package_name(checksum)
        if not package:
            return print_n_send_error_response(request, 'Invalid Parameters',
                                               api)
        app_dir = os.path.join(settings.UPLD_DIR, checksum + '/')
        download_dir = settings.DWD_DIR
        if not is_file_exists(os.path.join(app_dir, 'logcat.txt')):
            msg = ('Dynamic Analysis report is not available '
                   'for this app. Perform Dynamic Analysis '
                   'and generate the report.')
            return print_n_send_error_response(request, msg, api)
        fd_log = os.path.join(app_dir, 'mobsf_frida_out.txt')
        droidmon = droidmon_api_analysis(app_dir, package)
        apimon = apimon_analysis(app_dir)
        analysis_result = run_analysis(app_dir, checksum, package)
        generate_download(app_dir, checksum, download_dir, package)
        images = get_screenshots(checksum, download_dir)
        context = {
            'hash': checksum,
            'emails': analysis_result['emails'],
            'urls': analysis_result['urls'],
            'domains': analysis_result['domains'],
            'clipboard': analysis_result['clipboard'],
            'xml': analysis_result['xml'],
            'sqlite': analysis_result['sqlite'],
            'others': analysis_result['other_files'],
            'screenshots': images['screenshots'],
            'activity_tester': images['activities'],
            'exported_activity_tester': images['exported_activities'],
            'droidmon': droidmon,
            'apimon': apimon,
            'frida_logs': is_file_exists(fd_log),
            'package': package,
            'version': settings.MOBSF_VER,
            'title': 'Dynamic Analysis'
        }
        template = 'dynamic_analysis/android/dynamic_report.html'
        if api:
            return context
        return render(request, template, context)
    except Exception as exp:
        logger.exception('Dynamic Analysis Report Generation')
        err = 'Error Geneating Dynamic Analysis Report. ' + str(exp)
        return print_n_send_error_response(request, err, api)
コード例 #2
0
def view_report(request):
    """Dynamic Analysis Report Generation."""
    logger.info('Dynamic Analysis Report Generation')
    try:
        md5_hash = request.GET['hash']
        package = request.GET['package']
        droidmon = {}
        apimon = {}
        if (is_attack_pattern(package)
                or not is_md5(md5_hash)):
            return print_n_send_error_response(request,
                                               'Invalid Parameters')
        app_dir = os.path.join(settings.UPLD_DIR, md5_hash + '/')
        download_dir = settings.DWD_DIR
        if not is_file_exists(os.path.join(app_dir, 'logcat.txt')):
            msg = ('Dynamic Analysis report is not available '
                   'for this app. Perform Dynamic Analysis '
                   'and generate the report.')
            return print_n_send_error_response(request, msg)
        fd_log = os.path.join(app_dir, 'mobsf_frida_out.txt')
        droidmon = droidmon_api_analysis(app_dir, package)
        apimon = apimon_analysis(app_dir)
        analysis_result = run_analysis(app_dir, md5_hash, package)
        generate_download(app_dir, md5_hash, download_dir, package)
        images = get_screenshots(md5_hash, download_dir)
        context = {'md5': md5_hash,
                   'emails': analysis_result['emails'],
                   'urls': analysis_result['urls'],
                   'domains': analysis_result['domains'],
                   'clipboard': analysis_result['clipboard'],
                   'xml': analysis_result['xml'],
                   'sqlite': analysis_result['sqlite'],
                   'others': analysis_result['other_files'],
                   'screenshots': images['screenshots'],
                   'acttest': images['activities'],
                   'expacttest': images['exported_activities'],
                   'droidmon': droidmon,
                   'apimon': apimon,
                   'fdlog': is_file_exists(fd_log),
                   'package': package,
                   'version': settings.MOBSF_VER,
                   'title': 'Dynamic Analysis'}
        template = 'dynamic_analysis/android/dynamic_report.html'
        return render(request, template, context)
    except Exception as exp:
        logger.exception('Dynamic Analysis Report Generation')
        err = 'Error Geneating Dynamic Analysis Report. ' + str(exp)
        return print_n_send_error_response(request, err)