mobsf 4.3.0__tar.gz → 4.3.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mobsf-4.3.0 → mobsf-4.3.2}/PKG-INFO +3 -2
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/views/android/frida_server_download.py +3 -2
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/views/ios/corellium_instance.py +2 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/views/ios/report.py +3 -2
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MobSF/init.py +1 -1
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MobSF/security.py +77 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MobSF/settings.py +2 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MobSF/urls.py +1 -1
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MobSF/utils.py +0 -54
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MobSF/views/authorization.py +2 -2
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/android/manifest_analysis.py +15 -4
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/android/views/source_tree.py +0 -2
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/android/views/view_source.py +25 -7
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/common/firebase.py +5 -6
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/dynamic_analysis/ios/dynamic_analysis.html +1 -1
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/static_analysis/source_tree.html +2 -10
- {mobsf-4.3.0 → mobsf-4.3.2}/pyproject.toml +3 -2
- {mobsf-4.3.0 → mobsf-4.3.2}/LICENSE +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/LICENSES/AdminLTE_theme.txt +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/LICENSES/AntiEmulator.txt +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/LICENSES/FSecureLabs_frida_scripts.txt +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/LICENSES/IP2LOCATION LITE DATA.txt +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/LICENSES/Rootcloak.txt +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/LICENSES/ac-pm_tools.txt +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/LICENSES/androguard.txt +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/LICENSES/apkinspector.txt +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/LICENSES/apksigner.txt +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/LICENSES/backsmali.txt +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/LICENSES/class-dump-z.txt +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/LICENSES/droidmon.txt +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/LICENSES/exodus-core.txt +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/LICENSES/frida.txt +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/LICENSES/ios_binary_analysis_rules.txt +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/LICENSES/jadx.txt +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/LICENSES/maltrail_blacklist.txt +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/LICENSES/vd2svg.txt +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/README.md +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/__init__.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/admin.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/forms.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/models.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tests.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/__init__.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/apk_patcher.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/auxiliary/class_trace.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/auxiliary/get_loaded_classes.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/auxiliary/get_methods.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/auxiliary/search_class_pattern.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/auxiliary/string_catch.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/auxiliary/string_compare.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/default/api_monitor.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/default/debugger_check_bypass.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/default/dump_clipboard.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/default/root_bypass.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/default/ssl_pinning_bypass.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/app-environment.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/audit-webview.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/bypass-adb-detection.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/bypass-emulator-detection.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/bypass-react-native-emulator-detection.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/crypto-aes-key.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/crypto-dump-keystore.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/crypto-keyguard-credential-intent.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/crypto-trace-cipher.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/crypto-trace-keygenparameterspec.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/crypto-trace-keystore.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/crypto-trace-secretkeyfactory.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/default.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/detect-ssl-pinning.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/device-android-id.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/device-environment.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/dump-inputstream.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/dump-intent.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/dump-library-exports.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/dump-okhttp-calls.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/helper-android-change-sdk-version.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/helper-android-spoof-gps.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/helper-bypass-method.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/helper-convert.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/helper-early-java.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/helper-heap-search.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/helper-jni-hook-by-address.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/helper-trace-jni.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/hook-billing.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/hook-constructor.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/hook-java-reflection.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/hook-json.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/hook-logging.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/ssl-bypass-flutter.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/ssl-pinning-bypass.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/stop-app-terminate.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/trace-bluetooth.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/trace-file.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/trace-intent.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/trace-javascript-interface.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/trace-shared-preference.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/ui-deeplink-trace.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/ui-fingerprint-bypass-via-exception-handling.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/ui-fingerprint-bypass.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/ui-flag-secure-bypass.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/others/ui-webview-enable-debugging.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/rpc/get-hooks.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/auxiliary/class-trace.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/auxiliary/find-app-classes-methods.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/auxiliary/find-app-classes.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/auxiliary/find-specific-method.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/auxiliary/get-methods.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/auxiliary/search-class-pattern.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/auxiliary/string-capture.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/auxiliary/string-compare.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/default/jailbreak_bypass.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/dump/cookies.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/dump/crypto.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/dump/data-dir.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/dump/file-access.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/dump/json.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/dump/keychain.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/dump/network.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/dump/nslog.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/dump/nsurlcredentialstorage.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/dump/nsuserdefaults.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/dump/pasteboard.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/dump/sqlite.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/dump/text-inputs.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/app-environment.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/bypass-ssl-flutter.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/bypass-ssl-ios10.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/bypass-ssl-ios11.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/bypass-ssl-ios12.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/bypass-ssl-ios13.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/bypass-ssl-trustkit.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/check-keyboard-cache.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/check-keyboard-thridparty.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/device-environment.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/dump-ios-url-scheme.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/find-all-classes-methods.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/find-all-classes.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/flutter-trace-function.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/get-exports.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/get-modules.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/helper-backtrace.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/helper-get-memory-address-of-class.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/helper-ios-change-system-version.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/helper-ios-spoof-gps.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/helper-memory-hex-dump.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/helper-method-hooking.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/helper-read-plist-file.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/helper-replace-exported-method.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/helper-show-modify-function-arguments.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/helper-show-modify-method-return-value.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/helper-ssh-commands.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/helper-view-and-modify-method-registers.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/helper-view-method-arguments.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/trace-bluetooth.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/ui-enable-webinspector.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/ui-ios-alert.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/ui-ios-biometric-bypass.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/ui-send-url-scheme.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/ui-trace.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/ui-view-trace.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/others/ui-webview-trace.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/ios/rpc/get-app-container.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/onDevice/xposed/ClipDump.apk +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/onDevice/xposed/Xposed.apk +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/onDevice/xposed/XposedInstaller_3.1.5.apk +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/onDevice/xposed/modules/AndroidBluePill.apk +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/onDevice/xposed/modules/Droidmon.apk +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/onDevice/xposed/modules/JustTrustMe.apk +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/onDevice/xposed/modules/com.devadvance.rootcloak2_v18_c43b61.apk +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/onDevice/xposed/modules/hooks.json +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/onDevice/xposed/modules/mobi.acpm.proxyon_v1_419b04.apk +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/onDevice/xposed/modules/mobi.acpm.sslunpinning_v2_37f44f.apk +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/webproxy.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/views/__init__.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/views/android/__init__.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/views/android/analysis.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/views/android/dynamic_analyzer.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/views/android/environment.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/views/android/frida_core.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/views/android/frida_scripts.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/views/android/operations.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/views/android/report.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/views/android/tests_common.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/views/android/tests_frida.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/views/android/tests_tls.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/views/android/tests_xposed.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/views/common/device.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/views/common/frida.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/views/common/shared.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/views/ios/analysis.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/views/ios/corellium_apis.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/views/ios/corellium_ssh.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/views/ios/dynamic_analyzer.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/views/ios/frida_auxiliary_scripts.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/views/ios/frida_core.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/views/ios/tests_frida.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MalwareAnalyzer/__init__.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MalwareAnalyzer/admin.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MalwareAnalyzer/models.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MalwareAnalyzer/tests.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MalwareAnalyzer/views/MalwareDomainCheck.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MalwareAnalyzer/views/Trackers.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MalwareAnalyzer/views/VirusTotal.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MalwareAnalyzer/views/__init__.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MalwareAnalyzer/views/android/apkid.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MalwareAnalyzer/views/android/behaviour_analysis.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MalwareAnalyzer/views/android/permissions.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MalwareAnalyzer/views/android/rules/behaviour_rules.yaml +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MobSF/__init__.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MobSF/forms.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MobSF/management/commands/clear_tasks.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MobSF/management/commands/create_roles.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MobSF/models.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MobSF/tools_download.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MobSF/views/__init__.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MobSF/views/api/__init__.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MobSF/views/api/api_android_dynamic_analysis.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MobSF/views/api/api_ios_dynamic_analysis.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MobSF/views/api/api_middleware.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MobSF/views/api/api_static_analysis.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MobSF/views/apk_downloader.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MobSF/views/authentication.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MobSF/views/helpers.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MobSF/views/home.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MobSF/views/saml2.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MobSF/views/scanning.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/MobSF/wsgi.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/__init__.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/admin.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/forms.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/models.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/tests.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/tools/__init__.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/tools/androguard4/apk.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/tools/androguard4/apkinspector/extract.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/tools/androguard4/apkinspector/headers.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/tools/androguard4/apkinspector/helpers.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/tools/androguard4/axml.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/tools/androguard4/resources/public.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/tools/androguard4/resources/public.xml +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/tools/androguard4/types.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/tools/androguard4/util.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/tools/apksigner.jar +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/tools/apktool_2.10.0.jar +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/tools/baksmali-3.0.8-dev-fat.jar +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/tools/bundletool-all-1.17.2.jar +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/tools/ios/CgbiPngFix/CgbiPngFix.exe +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/tools/ios/CgbiPngFix/CgbiPngFix_amd64 +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/tools/ios/CgbiPngFix/CgbiPngFix_arm64 +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/tools/ios/class-dump +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/tools/ios/class-dump-swift +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/tools/ios/jtool.ELF64 +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/tools/strings.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/tools/vd2svg-0.4.4.jar +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/__init__.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/android/__init__.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/android/aapt.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/android/apk.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/android/app.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/android/cert_analysis.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/android/code_analysis.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/android/converter.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/android/db_interaction.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/android/icon_analysis.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/android/jar_aar.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/android/kb/android_manifest_desc.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/android/kb/dvm_permissions.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/android/manifest_utils.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/android/network_security.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/android/playstore.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/android/rules/android_apis.yaml +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/android/rules/android_niap.yaml +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/android/rules/android_permissions.yaml +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/android/rules/android_rules.yaml +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/android/sbom_analysis.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/android/so.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/android/static_analyzer.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/android/strings.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/android/views/find.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/android/views/manifest_view.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/android/xapk.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/common/__init__.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/common/a.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/common/appsec.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/common/async_task.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/common/binary/elf.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/common/binary/lib_analysis.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/common/binary/macho.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/common/binary/strings.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/common/entropy.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/common/pdf.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/common/shared_func.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/common/suppression.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/comparer.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/ios/__init__.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/ios/app_transport_security.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/ios/appstore.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/ios/binary_analysis.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/ios/binary_rule_matcher.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/ios/classdump.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/ios/code_analysis.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/ios/db_interaction.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/ios/dylib.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/ios/file_analysis.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/ios/icon_analysis.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/ios/ipa.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/ios/kb/permission_analysis.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/ios/plist_analysis.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/ios/rules/__init__.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/ios/rules/ios_apis.yaml +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/ios/rules/ipa_rules.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/ios/rules/objective_c_rules.yaml +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/ios/rules/swift_rules.yaml +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/ios/static_analyzer.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/ios/strings.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/ios/views/view_source.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/sast_engine.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/windows/__init__.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/windows/db_interaction.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/StaticAnalyzer/views/windows/windows.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/__init__.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/__main__.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/install/__init__.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/install/windows/__init__.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/install/windows/config.txt +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/install/windows/readme.md +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/install/windows/rpc_client.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/install/windows/setup.py +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/signatures/IP2LOCATION-LITE-DB5.IPV6.BIN +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/signatures/exodus_trackers +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/signatures/maltrail-malware-domains.txt +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/signatures/malwaredomainlist +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/dashboard/css/adminlte.min.css +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/dashboard/css/adminlte.min.css.map +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/dashboard/js/adminlte.min.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/dashboard/js/adminlte.min.js.map +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/bootstrap/bootstrap.bundle.min.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/bootstrap/bootstrap.bundle.min.js.map +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/datatables/jquery.dataTables.min.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/datatables-bs4/dataTables.bootstrap4.min.css +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/datatables-bs4/dataTables.bootstrap4.min.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/fontawesome-free/css/all.css +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/fontawesome-free/css/all.min.css +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/fontawesome-free/css/brands.css +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/fontawesome-free/css/brands.min.css +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/fontawesome-free/css/fontawesome.css +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/fontawesome-free/css/fontawesome.min.css +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/fontawesome-free/css/regular.css +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/fontawesome-free/css/regular.min.css +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/fontawesome-free/css/solid.css +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/fontawesome-free/css/solid.min.css +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/fontawesome-free/css/svg-with-js.css +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/fontawesome-free/css/svg-with-js.min.css +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/fontawesome-free/css/v4-shims.css +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/fontawesome-free/css/v4-shims.min.css +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/fontawesome-free/webfonts/fa-brands-400.eot +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/fontawesome-free/webfonts/fa-brands-400.svg +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/fontawesome-free/webfonts/fa-brands-400.ttf +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/fontawesome-free/webfonts/fa-brands-400.woff +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/fontawesome-free/webfonts/fa-brands-400.woff2 +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/fontawesome-free/webfonts/fa-regular-400.eot +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/fontawesome-free/webfonts/fa-regular-400.svg +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/fontawesome-free/webfonts/fa-regular-400.ttf +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/fontawesome-free/webfonts/fa-regular-400.woff +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/fontawesome-free/webfonts/fa-regular-400.woff2 +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/fontawesome-free/webfonts/fa-solid-900.eot +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/fontawesome-free/webfonts/fa-solid-900.svg +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/fontawesome-free/webfonts/fa-solid-900.ttf +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/fontawesome-free/webfonts/fa-solid-900.woff +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/fontawesome-free/webfonts/fa-solid-900.woff2 +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/jquery-ui.min.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/jquery.min.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/overlayScrollbars/css/OverlayScrollbars.min.css +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/overlayScrollbars/js/jquery.overlayScrollbars.min.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/sweetalert2/sweetalert2.min.css +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/adminlte/plugins/sweetalert2/sweetalert2.min.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/amcharts/animated.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/amcharts/core.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/amcharts/maps.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/amcharts/worldIndiaLow.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/chartjs/Chart.bundle.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/chartjs/chartjs-gauge.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/codemirror/codemirror.css +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/codemirror/codemirror.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/codemirror/javascript-lint.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/codemirror/javascript.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/codemirror/jshint.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/codemirror/lint.css +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/codemirror/lint.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/datatables/css/datatables.combined.min.css +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/datatables/js/datatables.combined.min.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/datatables/js/pdfmake.min.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/datatables/js/pdfmake.min.js.map +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/datatables/js/vfs_fonts.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/enlighterjs/enlighterjs.enlighter.min.css +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/enlighterjs/enlighterjs.min.css +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/enlighterjs/enlighterjs.min.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/fonts/Open_Sans/LICENSE.txt +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/fonts/Open_Sans/OpenSans-Regular.ttf +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/fonts/Oswald/OFL.txt +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/fonts/Oswald/Oswald-Regular.ttf +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/img/favicon.ico +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/img/loading.jpg +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/img/mobsf_icon.png +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/img/mobsf_logo.png +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/img/no_icon.png +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/jqueryknob/jquery.knob.min.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/jsTree/custom.css +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/jsTree/jstree.min.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/jsTree/themes/default/32px.png +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/jsTree/themes/default/40px.png +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/jsTree/themes/default/content_background.gif +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/jsTree/themes/default/dir.gif +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/jsTree/themes/default/file.png +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/jsTree/themes/default/style.min.css +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/jsTree/themes/default/throbber.gif +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/landing/css/home.css +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/others/css/devices.min.css +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/others/css/pdf_report.css +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/others/css/spinner.css +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/others/css/terminal.css +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/others/css/xcode.min.css +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/others/js/datatables_init.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/others/js/suppression.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/static/others/js/swipe.js +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/403.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/404.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/500.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/auth/change_password.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/auth/login.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/auth/register.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/auth/users.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/base/base_layout.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/base/list.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/base/list_href.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/base/nav.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/dynamic_analysis/android/dynamic_analysis.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/dynamic_analysis/android/dynamic_analyzer.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/dynamic_analysis/android/dynamic_report.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/dynamic_analysis/android/frida_logs.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/dynamic_analysis/android/live_api.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/dynamic_analysis/android/logcat.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/dynamic_analysis/ios/dynamic_analyzer.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/dynamic_analysis/ios/dynamic_report.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/dynamic_analysis/ios/system_logs.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/general/about.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/general/apidocs.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/general/donate.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/general/dynamic.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/general/error.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/general/home.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/general/recent.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/general/tasks.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/general/view.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/general/zip.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/pdf/android_report.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/pdf/ios_report.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/pdf/windows_report.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/static_analysis/android_binary_analysis.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/static_analysis/android_source_analysis.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/static_analysis/appsec_dashboard.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/static_analysis/compare.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/static_analysis/ios_binary_analysis.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/static_analysis/ios_source_analysis.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/static_analysis/treeview_file.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/static_analysis/treeview_folder.html +0 -0
- {mobsf-4.3.0 → mobsf-4.3.2}/mobsf/templates/static_analysis/windows_binary_analysis.html +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: mobsf
|
|
3
|
-
Version: 4.3.
|
|
3
|
+
Version: 4.3.2
|
|
4
4
|
Summary: Mobile Security Framework (MobSF) is an automated, all-in-one mobile application (Android/iOS/Windows) pen-testing, malware analysis and security assessment framework capable of performing static and dynamic analysis.
|
|
5
5
|
Home-page: https://github.com/MobSF/Mobile-Security-Framework-MobSF
|
|
6
6
|
License: GPL-3.0-only
|
|
@@ -54,7 +54,8 @@ Requires-Dist: svgutils (>=0.3.4)
|
|
|
54
54
|
Requires-Dist: tldextract (>=5.1.3)
|
|
55
55
|
Requires-Dist: tzdata (>=2023.3,<2024.0)
|
|
56
56
|
Requires-Dist: waitress (>=3.0.1) ; sys_platform == "win32"
|
|
57
|
-
Requires-Dist: whitenoise (>=
|
|
57
|
+
Requires-Dist: whitenoise (>=6.8.2)
|
|
58
|
+
Requires-Dist: xmlsec (==1.3.14)
|
|
58
59
|
Project-URL: Bug Tracker, https://github.com/MobSF/Mobile-Security-Framework-MobSF/issues
|
|
59
60
|
Project-URL: Documentation, https://mobsf.github.io/docs/
|
|
60
61
|
Project-URL: Repository, https://github.com/MobSF/Mobile-Security-Framework-MobSF
|
|
@@ -30,7 +30,7 @@ def clean_up_old_binaries(dirc, version):
|
|
|
30
30
|
pass
|
|
31
31
|
|
|
32
32
|
|
|
33
|
-
def download_frida_server(url, version, fname, proxies):
|
|
33
|
+
def download_frida_server(url, version, fname, proxies, verify):
|
|
34
34
|
"""Download frida-server-binary."""
|
|
35
35
|
try:
|
|
36
36
|
download_dir = Path(settings.DWD_DIR)
|
|
@@ -40,6 +40,7 @@ def download_frida_server(url, version, fname, proxies):
|
|
|
40
40
|
url,
|
|
41
41
|
timeout=5,
|
|
42
42
|
proxies=proxies,
|
|
43
|
+
verify=verify,
|
|
43
44
|
stream=True) as r:
|
|
44
45
|
with LZMAFile(r.raw) as f:
|
|
45
46
|
with open(dwd_loc, 'wb') as flip:
|
|
@@ -72,7 +73,7 @@ def update_frida_server(arch, version):
|
|
|
72
73
|
for item in response.json()['assets']:
|
|
73
74
|
if item['name'] == f'{fserver}.xz':
|
|
74
75
|
url = item['browser_download_url']
|
|
75
|
-
return download_frida_server(url, version, fserver, proxies)
|
|
76
|
+
return download_frida_server(url, version, fserver, proxies, verify)
|
|
76
77
|
return False
|
|
77
78
|
except Exception:
|
|
78
79
|
logger.exception('[ERROR] Fetching Frida Server Release')
|
|
@@ -763,6 +763,8 @@ def download_data(request, bundle_id, api=False):
|
|
|
763
763
|
if failed:
|
|
764
764
|
return send_response(failed, api)
|
|
765
765
|
if not strict_package_check(bundle_id):
|
|
766
|
+
# Check bundle_id during call, as the check
|
|
767
|
+
# is not done in REST API/URL repath.
|
|
766
768
|
data['message'] = 'Invalid iOS Bundle id'
|
|
767
769
|
return send_response(data, api)
|
|
768
770
|
ci = CorelliumInstanceAPI(instance_id)
|
|
@@ -49,8 +49,9 @@ def ios_view_report(request, bundle_id, api=False):
|
|
|
49
49
|
else:
|
|
50
50
|
dev = ''
|
|
51
51
|
if not strict_package_check(bundle_id):
|
|
52
|
-
#
|
|
53
|
-
# is not validated
|
|
52
|
+
# bundle_id is not validated in REST API.
|
|
53
|
+
# Also bundleid is not strictly validated
|
|
54
|
+
# in URL path.
|
|
54
55
|
return print_n_send_error_response(
|
|
55
56
|
request,
|
|
56
57
|
'Invalid iOS Bundle id',
|
|
@@ -3,10 +3,13 @@ import subprocess
|
|
|
3
3
|
import functools
|
|
4
4
|
import logging
|
|
5
5
|
import re
|
|
6
|
+
import socket
|
|
7
|
+
import ipaddress
|
|
6
8
|
import sys
|
|
7
9
|
from shutil import which
|
|
8
10
|
from pathlib import Path
|
|
9
11
|
from platform import system
|
|
12
|
+
from urllib.parse import urlparse
|
|
10
13
|
from concurrent.futures import ThreadPoolExecutor
|
|
11
14
|
|
|
12
15
|
from mobsf.MobSF.utils import (
|
|
@@ -249,3 +252,77 @@ def sanitize_for_logging(filename: str, max_length: int = 255) -> str:
|
|
|
249
252
|
|
|
250
253
|
# Truncate filename to the maximum allowed length
|
|
251
254
|
return filename[:max_length]
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
def valid_host(host):
|
|
258
|
+
"""Check if host is valid, run SSRF checks."""
|
|
259
|
+
default_timeout = socket.getdefaulttimeout()
|
|
260
|
+
try:
|
|
261
|
+
if len(host) > 2083: # Standard URL length limit
|
|
262
|
+
return False
|
|
263
|
+
|
|
264
|
+
prefixs = ('http://', 'https://')
|
|
265
|
+
if not host.startswith(prefixs):
|
|
266
|
+
host = f'http://{host}'
|
|
267
|
+
parsed = urlparse(host)
|
|
268
|
+
scheme = parsed.scheme
|
|
269
|
+
domain = parsed.netloc
|
|
270
|
+
hostname = parsed.hostname
|
|
271
|
+
path = parsed.path
|
|
272
|
+
query = parsed.query
|
|
273
|
+
params = parsed.params
|
|
274
|
+
port = parsed.port
|
|
275
|
+
|
|
276
|
+
# Allow only http and https schemes
|
|
277
|
+
if scheme not in ('http', 'https'):
|
|
278
|
+
return False
|
|
279
|
+
|
|
280
|
+
# Check for hostname
|
|
281
|
+
if not hostname:
|
|
282
|
+
return False
|
|
283
|
+
|
|
284
|
+
# Validate port - only allow 80 and 443
|
|
285
|
+
if port and port not in (80, 443):
|
|
286
|
+
return False
|
|
287
|
+
|
|
288
|
+
# Check for URL credentials
|
|
289
|
+
if '@' in domain:
|
|
290
|
+
return False
|
|
291
|
+
|
|
292
|
+
# Detect parser escapes, only host is allowed
|
|
293
|
+
if len(path) > 0 or len(query) > 0 or len(params) > 0:
|
|
294
|
+
return False
|
|
295
|
+
|
|
296
|
+
# Resolve dns to get ipv4 or ipv6 address
|
|
297
|
+
socket.setdefaulttimeout(5) # 5 second timeout
|
|
298
|
+
ip_addresses = socket.getaddrinfo(hostname, None)
|
|
299
|
+
for ip in ip_addresses:
|
|
300
|
+
ip_obj = ipaddress.ip_address(ip[4][0])
|
|
301
|
+
if (ip_obj.is_private
|
|
302
|
+
or ip_obj.is_loopback
|
|
303
|
+
or ip_obj.is_link_local
|
|
304
|
+
or ip_obj.is_reserved
|
|
305
|
+
or ip_obj.is_multicast
|
|
306
|
+
or ip_obj.is_unspecified):
|
|
307
|
+
return False
|
|
308
|
+
|
|
309
|
+
# Additional checks for specific IPv4 ranges
|
|
310
|
+
if isinstance(ip_obj, ipaddress.IPv4Address):
|
|
311
|
+
problematic_networks = [
|
|
312
|
+
'127.0.0.0/8',
|
|
313
|
+
'169.254.0.0/16',
|
|
314
|
+
'172.16.0.0/12',
|
|
315
|
+
'192.168.0.0/16',
|
|
316
|
+
'10.0.0.0/8',
|
|
317
|
+
]
|
|
318
|
+
for network in problematic_networks:
|
|
319
|
+
if ip_obj in ipaddress.IPv4Network(network):
|
|
320
|
+
return False
|
|
321
|
+
|
|
322
|
+
# If all checks pass, return True
|
|
323
|
+
return True
|
|
324
|
+
except Exception:
|
|
325
|
+
return False
|
|
326
|
+
finally:
|
|
327
|
+
# Restore default socket timeout
|
|
328
|
+
socket.setdefaulttimeout(default_timeout)
|
|
@@ -379,6 +379,8 @@ IDP_ENTITY_ID = os.getenv('MOBSF_IDP_ENTITY_ID')
|
|
|
379
379
|
IDP_SSO_URL = os.getenv('MOBSF_IDP_SSO_URL')
|
|
380
380
|
IDP_X509CERT = os.getenv('MOBSF_IDP_X509CERT')
|
|
381
381
|
IDP_IS_ADFS = os.getenv('MOBSF_IDP_IS_ADFS', '0')
|
|
382
|
+
IDP_MAINTAINER_GROUP = os.getenv('MOBSF_IDP_MAINTAINER_GROUP', 'Maintainer')
|
|
383
|
+
IDP_VIEWER_GROUP = os.getenv('MOBSF_IDP_VIEWER_GROUP', 'Viewer')
|
|
382
384
|
# SP Configuration
|
|
383
385
|
SP_HOST = os.getenv('MOBSF_SP_HOST')
|
|
384
386
|
SP_ALLOW_PASSWORD = os.getenv('MOBSF_SP_ALLOW_PASSWORD', '0')
|
|
@@ -52,7 +52,7 @@ from mobsf.StaticAnalyzer.views.ios.views import view_source as io_view_source
|
|
|
52
52
|
|
|
53
53
|
from . import settings
|
|
54
54
|
|
|
55
|
-
bundle_id_regex = r'(?P<bundle_id
|
|
55
|
+
bundle_id_regex = r'(?P<bundle_id>.+)$'
|
|
56
56
|
checksum_regex = r'(?P<checksum>[0-9a-f]{32})'
|
|
57
57
|
paginate = r'(?P<page_size>[0-9]{1,10})/(?P<page_number>[0-9]{1,10})'
|
|
58
58
|
|
|
@@ -16,11 +16,9 @@ import signal
|
|
|
16
16
|
import string
|
|
17
17
|
import subprocess
|
|
18
18
|
import stat
|
|
19
|
-
import socket
|
|
20
19
|
import sqlite3
|
|
21
20
|
import unicodedata
|
|
22
21
|
import threading
|
|
23
|
-
from urllib.parse import urlparse
|
|
24
22
|
from pathlib import Path
|
|
25
23
|
from concurrent.futures import (
|
|
26
24
|
ThreadPoolExecutor,
|
|
@@ -904,58 +902,6 @@ def id_generator(size=6, chars=string.ascii_uppercase + string.digits):
|
|
|
904
902
|
return ''.join(random.choice(chars) for _ in range(size))
|
|
905
903
|
|
|
906
904
|
|
|
907
|
-
def valid_host(host):
|
|
908
|
-
"""Check if host is valid."""
|
|
909
|
-
try:
|
|
910
|
-
prefixs = ('http://', 'https://')
|
|
911
|
-
if not host.startswith(prefixs):
|
|
912
|
-
host = f'http://{host}'
|
|
913
|
-
parsed = urlparse(host)
|
|
914
|
-
domain = parsed.netloc
|
|
915
|
-
path = parsed.path
|
|
916
|
-
if len(domain) == 0:
|
|
917
|
-
# No valid domain
|
|
918
|
-
return False
|
|
919
|
-
if len(path) > 0:
|
|
920
|
-
# Only host is allowed
|
|
921
|
-
return False
|
|
922
|
-
if ':' in domain:
|
|
923
|
-
# IPv6
|
|
924
|
-
return False
|
|
925
|
-
# Local network
|
|
926
|
-
invalid_prefix = (
|
|
927
|
-
'100.64.',
|
|
928
|
-
'127.',
|
|
929
|
-
'192.',
|
|
930
|
-
'198.',
|
|
931
|
-
'10.',
|
|
932
|
-
'172.',
|
|
933
|
-
'169.',
|
|
934
|
-
'0.',
|
|
935
|
-
'203.0.',
|
|
936
|
-
'224.0.',
|
|
937
|
-
'240.0',
|
|
938
|
-
'255.255.',
|
|
939
|
-
'localhost',
|
|
940
|
-
'::1',
|
|
941
|
-
'64::ff9b::',
|
|
942
|
-
'100::',
|
|
943
|
-
'2001::',
|
|
944
|
-
'2002::',
|
|
945
|
-
'fc00::',
|
|
946
|
-
'fe80::',
|
|
947
|
-
'ff00::')
|
|
948
|
-
if domain.startswith(invalid_prefix):
|
|
949
|
-
return False
|
|
950
|
-
ip = socket.gethostbyname(domain)
|
|
951
|
-
if ip.startswith(invalid_prefix):
|
|
952
|
-
# Resolve dns to get IP
|
|
953
|
-
return False
|
|
954
|
-
return True
|
|
955
|
-
except Exception:
|
|
956
|
-
return False
|
|
957
|
-
|
|
958
|
-
|
|
959
905
|
def append_scan_status(checksum, status, exception=None):
|
|
960
906
|
"""Append Scan Status to Database."""
|
|
961
907
|
try:
|
|
@@ -49,8 +49,8 @@ class Permissions(Enum):
|
|
|
49
49
|
DELETE = f'StaticAnalyzer.{PERM_CAN_DELETE}'
|
|
50
50
|
|
|
51
51
|
|
|
52
|
-
MAINTAINER_GROUP =
|
|
53
|
-
VIEWER_GROUP =
|
|
52
|
+
MAINTAINER_GROUP = settings.IDP_MAINTAINER_GROUP
|
|
53
|
+
VIEWER_GROUP = settings.IDP_VIEWER_GROUP
|
|
54
54
|
|
|
55
55
|
|
|
56
56
|
def permission_required(perm):
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
# flake8: noqa
|
|
3
3
|
"""Module for android manifest analysis."""
|
|
4
4
|
import logging
|
|
5
|
+
from urllib.parse import urlparse
|
|
5
6
|
|
|
6
7
|
import requests
|
|
7
8
|
from concurrent.futures import ThreadPoolExecutor
|
|
@@ -10,8 +11,8 @@ from mobsf.MobSF.utils import (
|
|
|
10
11
|
append_scan_status,
|
|
11
12
|
is_number,
|
|
12
13
|
upstream_proxy,
|
|
13
|
-
valid_host,
|
|
14
14
|
)
|
|
15
|
+
from mobsf.MobSF.security import valid_host
|
|
15
16
|
from mobsf.StaticAnalyzer.views.android import (
|
|
16
17
|
network_security,
|
|
17
18
|
)
|
|
@@ -27,6 +28,8 @@ ANDROID_8_0_LEVEL = 26
|
|
|
27
28
|
ANDROID_9_0_LEVEL = 28
|
|
28
29
|
ANDROID_10_0_LEVEL = 29
|
|
29
30
|
ANDROID_MANIFEST_FILE = 'AndroidManifest.xml'
|
|
31
|
+
WELL_KNOWN_PATH = '/.well-known/assetlinks.json'
|
|
32
|
+
|
|
30
33
|
ANDROID_API_LEVEL_MAP = {
|
|
31
34
|
'1': '1.0',
|
|
32
35
|
'2': '1.1',
|
|
@@ -96,6 +99,14 @@ def _check_url(host, w_url):
|
|
|
96
99
|
urls.add(f'https://{w_url[7:]}')
|
|
97
100
|
|
|
98
101
|
for url in urls:
|
|
102
|
+
# Additional checks to ensure that
|
|
103
|
+
# the final path is WELL_KNOWN_PATH
|
|
104
|
+
purl = urlparse(url)
|
|
105
|
+
if (purl.path != WELL_KNOWN_PATH
|
|
106
|
+
or len(purl.query) > 0
|
|
107
|
+
or len(purl.params) > 0):
|
|
108
|
+
logger.warning('Invalid Assetlinks URL: %s', url)
|
|
109
|
+
continue
|
|
99
110
|
r = requests.get(url,
|
|
100
111
|
timeout=5,
|
|
101
112
|
allow_redirects=False,
|
|
@@ -134,7 +145,6 @@ def get_browsable_activities(node, ns):
|
|
|
134
145
|
path_prefixs = []
|
|
135
146
|
path_patterns = []
|
|
136
147
|
well_known = {}
|
|
137
|
-
well_known_path = '/.well-known/assetlinks.json'
|
|
138
148
|
catg = node.getElementsByTagName('category')
|
|
139
149
|
for cat in catg:
|
|
140
150
|
if cat.getAttribute(f'{ns}:name') == 'android.intent.category.BROWSABLE':
|
|
@@ -168,12 +178,13 @@ def get_browsable_activities(node, ns):
|
|
|
168
178
|
and host != '*'):
|
|
169
179
|
host = host.replace('*.', '').replace('#', '')
|
|
170
180
|
if not valid_host(host):
|
|
181
|
+
logger.warning('Invalid Host: %s', host)
|
|
171
182
|
continue
|
|
172
183
|
shost = f'{scheme}://{host}'
|
|
173
184
|
if port and is_number(port):
|
|
174
|
-
c_url = f'{shost}:{port}{
|
|
185
|
+
c_url = f'{shost}:{port}{WELL_KNOWN_PATH}'
|
|
175
186
|
else:
|
|
176
|
-
c_url = f'{shost}{
|
|
187
|
+
c_url = f'{shost}{WELL_KNOWN_PATH}'
|
|
177
188
|
well_known[c_url] = shost
|
|
178
189
|
schemes = [scheme + '://' for scheme in schemes]
|
|
179
190
|
browse_dic['schemes'] = schemes
|
|
@@ -10,7 +10,6 @@ from django.shortcuts import (
|
|
|
10
10
|
render,
|
|
11
11
|
)
|
|
12
12
|
|
|
13
|
-
from mobsf.MobSF.init import api_key
|
|
14
13
|
from mobsf.MobSF.utils import (
|
|
15
14
|
is_md5,
|
|
16
15
|
print_n_send_error_response,
|
|
@@ -71,7 +70,6 @@ def run(request):
|
|
|
71
70
|
'hash': md5,
|
|
72
71
|
'source_type': typ,
|
|
73
72
|
'version': settings.MOBSF_VER,
|
|
74
|
-
'api_key': api_key(settings.MOBSF_HOME),
|
|
75
73
|
}
|
|
76
74
|
template = 'static_analysis/source_tree.html'
|
|
77
75
|
return render(request, template, context)
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
# -*- coding: utf_8 -*-
|
|
2
2
|
"""View Source of a file."""
|
|
3
|
-
|
|
4
3
|
import logging
|
|
5
4
|
import ntpath
|
|
6
5
|
from pathlib import Path
|
|
@@ -8,6 +7,7 @@ from pathlib import Path
|
|
|
8
7
|
from django.conf import settings
|
|
9
8
|
from django.shortcuts import render
|
|
10
9
|
from django.utils.html import escape
|
|
10
|
+
from django.http import JsonResponse
|
|
11
11
|
|
|
12
12
|
from mobsf.MobSF.forms import FormUtil
|
|
13
13
|
from mobsf.MobSF.utils import (
|
|
@@ -28,9 +28,26 @@ from mobsf.MobSF.views.authentication import (
|
|
|
28
28
|
logger = logging.getLogger(__name__)
|
|
29
29
|
|
|
30
30
|
|
|
31
|
+
def send_json(data):
|
|
32
|
+
return JsonResponse(data, safe=False)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def send_error(request, err, api_mode, json_resp, exp=None):
|
|
36
|
+
"""Send error message as dict or JSON."""
|
|
37
|
+
if exp:
|
|
38
|
+
res = print_n_send_error_response(request, err, api_mode, exp)
|
|
39
|
+
else:
|
|
40
|
+
res = print_n_send_error_response(request, err, api_mode)
|
|
41
|
+
if json_resp:
|
|
42
|
+
return send_json(res)
|
|
43
|
+
return res
|
|
44
|
+
|
|
45
|
+
|
|
31
46
|
@login_required
|
|
32
47
|
def run(request, api=False):
|
|
33
48
|
"""View the source of a file."""
|
|
49
|
+
json_resp = request.GET.get('json', '0') == '1'
|
|
50
|
+
api_mode = api or json_resp
|
|
34
51
|
try:
|
|
35
52
|
logger.info('View Java Source File')
|
|
36
53
|
exp = 'Error Description'
|
|
@@ -46,8 +63,7 @@ def run(request, api=False):
|
|
|
46
63
|
viewsource_form = ViewSourceAndroidForm(request.GET)
|
|
47
64
|
if not viewsource_form.is_valid():
|
|
48
65
|
err = FormUtil.errors_message(viewsource_form)
|
|
49
|
-
return
|
|
50
|
-
|
|
66
|
+
return send_error(request, err, api_mode, json_resp, exp)
|
|
51
67
|
base = Path(settings.UPLD_DIR) / md5
|
|
52
68
|
if typ == 'smali':
|
|
53
69
|
src = base / 'smali_source'
|
|
@@ -57,12 +73,12 @@ def run(request, api=False):
|
|
|
57
73
|
src, syntax, _ = find_java_source_folder(base)
|
|
58
74
|
except StopIteration:
|
|
59
75
|
msg = 'Invalid directory or file extension'
|
|
60
|
-
return
|
|
76
|
+
return send_error(request, msg, api_mode, json_resp)
|
|
61
77
|
|
|
62
78
|
sfile = src / fil
|
|
63
79
|
if not is_safe_path(src, sfile.as_posix()):
|
|
64
80
|
msg = 'Path Traversal Detected!'
|
|
65
|
-
return
|
|
81
|
+
return send_error(request, msg, api_mode, json_resp)
|
|
66
82
|
context = {
|
|
67
83
|
'title': escape(ntpath.basename(fil)),
|
|
68
84
|
'file': escape(ntpath.basename(fil)),
|
|
@@ -72,11 +88,13 @@ def run(request, api=False):
|
|
|
72
88
|
'version': settings.MOBSF_VER,
|
|
73
89
|
}
|
|
74
90
|
template = 'general/view.html'
|
|
75
|
-
if
|
|
91
|
+
if json_resp:
|
|
92
|
+
return send_json(context)
|
|
93
|
+
if api_mode:
|
|
76
94
|
return context
|
|
77
95
|
return render(request, template, context)
|
|
78
96
|
except Exception as exp:
|
|
79
97
|
logger.exception('Error Viewing Source')
|
|
80
98
|
msg = str(exp)
|
|
81
99
|
exp = exp.__doc__
|
|
82
|
-
return
|
|
100
|
+
return send_error(request, msg, api_mode, json_resp, exp)
|
|
@@ -5,8 +5,8 @@ from urllib.parse import urlparse
|
|
|
5
5
|
from mobsf.MobSF.utils import (
|
|
6
6
|
append_scan_status,
|
|
7
7
|
upstream_proxy,
|
|
8
|
-
valid_host,
|
|
9
8
|
)
|
|
9
|
+
from mobsf.MobSF.security import valid_host
|
|
10
10
|
|
|
11
11
|
import requests
|
|
12
12
|
|
|
@@ -80,13 +80,12 @@ def firebase_analysis(checksum, code_an_dic):
|
|
|
80
80
|
def open_firebase(checksum, url):
|
|
81
81
|
# Detect Open Firebase Database
|
|
82
82
|
try:
|
|
83
|
-
invalid = 'Invalid Firebase URL'
|
|
84
83
|
if not valid_host(url):
|
|
85
|
-
logger.warning(
|
|
84
|
+
logger.warning('Invalid Host: %s', url)
|
|
86
85
|
return url, False
|
|
87
86
|
purl = urlparse(url)
|
|
88
|
-
if not purl.netloc.endswith('firebaseio.com'):
|
|
89
|
-
logger.warning(
|
|
87
|
+
if not purl.netloc.lower().endswith('.firebaseio.com'):
|
|
88
|
+
logger.warning('Invalid Firebase URL')
|
|
90
89
|
return url, False
|
|
91
90
|
base_url = f'{purl.scheme}://{purl.netloc}/.json'
|
|
92
91
|
proxies, verify = upstream_proxy('https')
|
|
@@ -116,7 +115,7 @@ def firebase_db_check(checksum, code_an_dic):
|
|
|
116
115
|
try:
|
|
117
116
|
urls = list(set(code_an_dic['urls_list']))
|
|
118
117
|
for url in urls:
|
|
119
|
-
if 'firebaseio.com' not in url:
|
|
118
|
+
if '.firebaseio.com' not in url:
|
|
120
119
|
continue
|
|
121
120
|
returl, is_open = open_firebase(checksum, url)
|
|
122
121
|
if is_open:
|
|
@@ -403,7 +403,7 @@ function list_apps(){
|
|
|
403
403
|
<td><p>
|
|
404
404
|
<a class="btn btn-success disable" onclick="dynamic_loader()" href="${url}"><i class="fab fa-apple"></i> Start Dynamic Analysis</a>
|
|
405
405
|
<a class="btn btn-info ${buttonState}" href="../../ios/view_report/${escapeHtml(bundle)}"><i class="fa fa-mobile"></i> View Report </a>
|
|
406
|
-
<a class="btn btn-warning" id="${$('#ios_dynamic').val()}" onclick="remove_app(this, '${bundle}')"><i class="fas fa-trash-alt"></i> Uninstall</a>
|
|
406
|
+
<a class="btn btn-warning" id="${$('#ios_dynamic').val()}" onclick="remove_app(this, '${escapeHtml(bundle)}')"><i class="fas fa-trash-alt"></i> Uninstall</a>
|
|
407
407
|
</p>
|
|
408
408
|
</td></tr>`);
|
|
409
409
|
}
|
|
@@ -275,17 +275,9 @@ const get_lines = function() {
|
|
|
275
275
|
|
|
276
276
|
function show_file(strPath) {
|
|
277
277
|
$.ajax({
|
|
278
|
-
type: "
|
|
279
|
-
url: "{% url "
|
|
278
|
+
type: "GET",
|
|
279
|
+
url: "{% url "view_source" %}?json=1&md5={{ hash }}&type={{ source_type }}&file=" + strPath,
|
|
280
280
|
dataType: 'json',
|
|
281
|
-
headers: {
|
|
282
|
-
"Authorization": "{{ api_key }}"
|
|
283
|
-
},
|
|
284
|
-
data: {
|
|
285
|
-
type: "{{ source_type }}",
|
|
286
|
-
hash: "{{ hash }}",
|
|
287
|
-
file: strPath
|
|
288
|
-
},
|
|
289
281
|
success: function(strFileData) {
|
|
290
282
|
var code_block = $("pre#fileoutput")
|
|
291
283
|
code_block.text(strFileData.data);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "mobsf"
|
|
3
|
-
version = "4.3.
|
|
3
|
+
version = "4.3.2"
|
|
4
4
|
description = "Mobile Security Framework (MobSF) is an automated, all-in-one mobile application (Android/iOS/Windows) pen-testing, malware analysis and security assessment framework capable of performing static and dynamic analysis."
|
|
5
5
|
keywords = ["mobsf", "mobile security framework", "mobile security", "security tool", "static analysis", "dynamic analysis", "malware analysis"]
|
|
6
6
|
authors = ["Ajin Abraham <ajin@opensecurity.in>"]
|
|
@@ -31,7 +31,7 @@ requests = ">=2.25.1"
|
|
|
31
31
|
bs4 = ">=0.0.1"
|
|
32
32
|
colorlog = ">=4.7.2"
|
|
33
33
|
macholib = ">=1.14"
|
|
34
|
-
whitenoise = ">=
|
|
34
|
+
whitenoise = ">=6.8.2"
|
|
35
35
|
waitress = {version = ">=3.0.1", markers = "sys_platform == 'win32'"}
|
|
36
36
|
gunicorn = {version = ">=20.0.4", markers = "sys_platform != 'win32'"}
|
|
37
37
|
psutil = ">=5.8.0"
|
|
@@ -61,6 +61,7 @@ packaging = ">=24.2"
|
|
|
61
61
|
django-ratelimit = "^4.1.0"
|
|
62
62
|
django-q2 = "^1.7.4"
|
|
63
63
|
defusedxml = "^0.7.1"
|
|
64
|
+
xmlsec = "1.3.14" # Remove this after xmlsec issue is resolved: https://github.com/xmlsec/python-xmlsec/issues/345
|
|
64
65
|
|
|
65
66
|
[build-system]
|
|
66
67
|
requires = ["poetry-core"]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/default/api_monitor.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mobsf-4.3.0 → mobsf-4.3.2}/mobsf/DynamicAnalyzer/tools/frida_scripts/android/default/root_bypass.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|