def dynamic_analysis(request, api=False): """Android Dynamic Analysis Entry point.""" try: scan_apps = [] device_packages = {} and_ver = None and_sdk = None apks = StaticAnalyzerAndroid.objects.filter( APP_TYPE='apk') for apk in reversed(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 ' f'{get_config_loc()}') return print_n_send_error_response(request, msg, api) try: if identifier: env = Environment(identifier) device_packages = env.get_device_packages() pkg_file = Path(settings.DWD_DIR) / 'packages.json' with pkg_file.open('w', encoding='utf-8') as target: dump(device_packages, target) and_ver = env.get_android_version() and_sdk = env.get_android_sdk() except Exception: pass context = {'apps': scan_apps, 'identifier': identifier, 'android_version': and_ver, 'android_sdk': and_sdk, 'proxy_ip': get_proxy_ip(identifier), 'proxy_port': settings.PROXY_PORT, 'settings_loc': get_config_loc(), 'device_packages': device_packages, '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)
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 ' f'{get_config_loc()}') 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, 'settings_loc': get_config_loc(), '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)