# Buggy code
def dynamic_analyzer(request, checksum, api=False):
    """Android Dynamic Analyzer Environment."""
    logger.info("Creating Dynamic Analysis Environment")
    try:
        no_device = False
        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)
        try:
            identifier = get_device()
        except Exception:
            no_device = True
        if no_device or not identifier:
            msg = (
                "Is the android instance 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)
        env = Environment(identifier)
        if not env.connect_n_mount():
            msg = "Cannot Connect to " + identifier
            return print_n_send_error_response(request, msg, api)
        version = env.get_android_version()
        logger.info("Android Version identified as %s", version)
        xposed_first_run = False
        if not env.is_mobsfyied(version):
            msg = (
                "This Android instance is not MobSfyed/Outdated.\n"
                "MobSFying the android runtime environment"
            )
            logger.warning(msg)
            if not env.mobsfy_init():
                return print_n_send_error_response(
                    request, "Failed to MobSFy the instance", api
                )
            if version < 5:
                xposed_first_run = True
        if xposed_first_run:
            msg = (
                "Have you MobSFyed the instance before"
                " attempting Dynamic Analysis?"
                " Install Framework for Xposed."
                " Restart the device and enable"
                " all Xposed modules. And finally"
                " restart the device once again."
            )
            return print_n_send_error_response(request, msg, api)
        # Clean up previous analysis
        env.dz_cleanup(checksum)
        # Configure Web Proxy
        env.configure_proxy(package)
        # Supported in Android 5+
        env.enable_adb_reverse_tcp(version)
        # Apply Global Proxy to device
        env.set_global_proxy(version)
        # Start Clipboard monitor
        env.start_clipmon()
        # Get Screen Resolution
        screen_width, screen_height = env.get_screen_res()
        apk_path = Path(settings.UPLD_DIR) / checksum / f"{checksum}.apk"
        # Install APK
        status, output = env.install_apk(apk_path.as_posix(), package)
        if not status:
            # Unset Proxy
            env.unset_global_proxy()
            msg = (
                f"This APK cannot be installed. Is this APK "
                f"compatible the Android VM/Emulator?\n{output}"
            )
            return print_n_send_error_response(request, msg, api)
        logger.info("Testing Environment is Ready!")
        context = {
            "screen_witdth": screen_width,
            "screen_height": screen_height,
            "package": package,
            "hash": checksum,
            "android_version": version,
            "version": settings.MOBSF_VER,
            "title": "Dynamic Analyzer",
        }
        template = "dynamic_analysis/android/dynamic_analyzer.html"
        if api:
            return context
        return render(request, template, context)
    except Exception:
        logger.exception("Dynamic Analyzer")
        return print_n_send_error_response(request, "Dynamic Analysis Failed.", api)


# Traceback (AttributeError)
[ERROR] 05/Feb/2021 02:43:41 - Internal Server Error: /search
Traceback (most recent call last):
File "\venv\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "\venv\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "\mobsf\MobSF\views\home.py", line 227, in search
return HttpResponseRedirect('/' + db_obj[0].URL)
AttributeError: 'RecentScansDB' object has no attribute 'URL'
[ERROR] 05/Feb/2021 02:43:41 - "GET /search?md5=<the file md5> HTTP/1.1" 500 80105

# Fixed code
def dynamic_analyzer(request, checksum, api=False):
    """Android Dynamic Analyzer Environment."""
    logger.info("Creating Dynamic Analysis Environment")
    try:
        no_device = False
        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)
        try:
            identifier = get_device()
        except Exception:
            no_device = True
        if no_device or not identifier:
            msg = (
                "Is the android instance 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)
        env = Environment(identifier)
        if not env.connect_n_mount():
            msg = "Cannot Connect to " + identifier
            return print_n_send_error_response(request, msg, api)
        version = env.get_android_version()
        logger.info("Android Version identified as %s", version)
        xposed_first_run = False
        if not env.is_mobsfyied(version):
            msg = (
                "This Android instance is not MobSfyed/Outdated.\n"
                "MobSFying the android runtime environment"
            )
            logger.warning(msg)
            if not env.mobsfy_init():
                return print_n_send_error_response(
                    request, "Failed to MobSFy the instance", api
                )
            if version < 5:
                xposed_first_run = True
        if xposed_first_run:
            msg = (
                "Have you MobSFyed the instance before"
                " attempting Dynamic Analysis?"
                " Install Framework for Xposed."
                " Restart the device and enable"
                " all Xposed modules. And finally"
                " restart the device once again."
            )
            return print_n_send_error_response(request, msg, api)
        # Clean up previous analysis
        env.dz_cleanup(checksum)
        # Configure Web Proxy
        env.configure_proxy(package, request)
        # Supported in Android 5+
        env.enable_adb_reverse_tcp(version)
        # Apply Global Proxy to device
        env.set_global_proxy(version)
        # Start Clipboard monitor
        env.start_clipmon()
        # Get Screen Resolution
        screen_width, screen_height = env.get_screen_res()
        apk_path = Path(settings.UPLD_DIR) / checksum / f"{checksum}.apk"
        # Install APK
        status, output = env.install_apk(apk_path.as_posix(), package)
        if not status:
            # Unset Proxy
            env.unset_global_proxy()
            msg = (
                f"This APK cannot be installed. Is this APK "
                f"compatible the Android VM/Emulator?\n{output}"
            )
            return print_n_send_error_response(request, msg, api)
        logger.info("Testing Environment is Ready!")
        context = {
            "screen_witdth": screen_width,
            "screen_height": screen_height,
            "package": package,
            "hash": checksum,
            "android_version": version,
            "version": settings.MOBSF_VER,
            "title": "Dynamic Analyzer",
        }
        template = "dynamic_analysis/android/dynamic_analyzer.html"
        if api:
            return context
        return render(request, template, context)
    except Exception:
        logger.exception("Dynamic Analyzer")
        return print_n_send_error_response(request, "Dynamic Analysis Failed.", api)