def dynamic_analysis(request):
    """Android Dynamic Analysis Entry point."""
    try:
        apks = StaticAnalyzerAndroid.objects.filter(
            ZIPPED='&type=apk').order_by('-id')
        try:
            identifier = get_device()
        except Exception:
            msg = ('Is Genymotion Andoird VM running? MobSF cannot'
                   ' find android instance identifier.'
                   ' Please run an android instance and refresh'
                   ' this page. If this error persists,'
                   ' set ANALYZER_IDENTIFIER in MobSF/settings.py')
            return print_n_send_error_response(request, msg)
        proxy_ip = get_proxy_ip(identifier)
        context = {
            'apks': apks,
            'identifier': identifier,
            'proxy_ip': proxy_ip,
            'proxy_port': settings.PROXY_PORT,
            'title': 'MobSF Dynamic Analysis'
        }
        template = 'dynamic_analysis/dynamic_analysis.html'
        return render(request, template, context)
    except Exception as exp:
        logger.exception('Dynamic Analysis')
        return print_n_send_error_response(request, exp)
 def set_global_proxy(self, version):
     """Set Global Proxy on device."""
     # Android 4.4+ supported
     proxy_ip = None
     proxy_port = settings.PROXY_PORT
     if version < 5:
         proxy_ip = get_proxy_ip(self.identifier)
     else:
         proxy_ip = settings.PROXY_IP
     if proxy_ip:
         if version < 4.4:
             logger.warning('Please set Android VM proxy as %s:%s',
                            proxy_ip, proxy_port)
             return
         logger.info('Setting Global Proxy for Android VM')
         self.adb_command([
             'settings', 'put', 'global', 'http_proxy', '{}:{}'.format(
                 proxy_ip, proxy_port)
         ], True)
def dynamic_analysis(request, api=False):
    """Android Dynamic Analysis Entry point."""
    try:
        scan_apps = []
        apks = StaticAnalyzerAndroid.objects.filter(
            APP_TYPE='apk').order_by('-id')
        for apk in apks:
            temp_dict = {
                'ICON_FOUND': apk.ICON_FOUND,
                'MD5': apk.MD5,
                'APP_NAME': apk.APP_NAME,
                'VERSION_NAME': apk.VERSION_NAME,
                'FILE_NAME': apk.FILE_NAME,
                'PACKAGE_NAME': apk.PACKAGE_NAME,
            }
            scan_apps.append(temp_dict)
        try:
            identifier = get_device()
        except Exception:
            msg = ('Is Android VM running? MobSF cannot'
                   ' find android instance identifier.'
                   ' Please run an android instance and refresh'
                   ' this page. If this error persists,'
                   ' set ANALYZER_IDENTIFIER in MobSF/settings.py')
            return print_n_send_error_response(request, msg, api)
        proxy_ip = get_proxy_ip(identifier)
        context = {'apps': scan_apps,
                   'identifier': identifier,
                   'proxy_ip': proxy_ip,
                   'proxy_port': settings.PROXY_PORT,
                   'title': 'MobSF Dynamic Analysis',
                   'version': settings.MOBSF_VER}
        if api:
            return context
        template = 'dynamic_analysis/dynamic_analysis.html'
        return render(request, template, context)
    except Exception as exp:
        logger.exception('Dynamic Analysis')
        return print_n_send_error_response(request,
                                           exp,
                                           api)