mirror of
https://github.com/mvt-project/mvt.git
synced 2024-06-27 22:58:57 +00:00
Merge pull request #297 from mvt-project/feature/dumpsys-packages-parsing
Improves Android dumpsys package parsing
This commit is contained in:
commit
134581c000
|
@ -11,6 +11,7 @@ from rich.progress import track
|
|||
from rich.table import Table
|
||||
from rich.text import Text
|
||||
|
||||
from mvt.android.parsers.dumpsys import parse_dumpsys_package_for_details
|
||||
from mvt.common.virustotal import VTNoKey, VTQuotaExceeded, virustotal_lookup
|
||||
|
||||
from .base import AndroidExtraction
|
||||
|
@ -191,43 +192,18 @@ class Packages(AndroidExtraction):
|
|||
|
||||
@staticmethod
|
||||
def parse_package_for_details(output: str) -> dict:
|
||||
details = {
|
||||
"uid": "",
|
||||
"version_name": "",
|
||||
"version_code": "",
|
||||
"timestamp": "",
|
||||
"first_install_time": "",
|
||||
"last_update_time": "",
|
||||
"requested_permissions": [],
|
||||
}
|
||||
|
||||
in_permissions = False
|
||||
# Get only the package information
|
||||
lines = []
|
||||
in_packages = False
|
||||
for line in output.splitlines():
|
||||
if in_permissions:
|
||||
if line.startswith(" " * 4) and not line.startswith(" " * 6):
|
||||
in_permissions = False
|
||||
continue
|
||||
if in_packages:
|
||||
if line.strip() == "":
|
||||
break
|
||||
lines.append(line)
|
||||
if line.strip() == "Packages:":
|
||||
in_packages = True
|
||||
|
||||
permission = line.strip().split(":")[0]
|
||||
details["requested_permissions"].append(permission)
|
||||
|
||||
if line.strip().startswith("userId="):
|
||||
details["uid"] = line.split("=")[1].strip()
|
||||
elif line.strip().startswith("versionName="):
|
||||
details["version_name"] = line.split("=")[1].strip()
|
||||
elif line.strip().startswith("versionCode="):
|
||||
details["version_code"] = line.split("=", 1)[1].strip()
|
||||
elif line.strip().startswith("timeStamp="):
|
||||
details["timestamp"] = line.split("=")[1].strip()
|
||||
elif line.strip().startswith("firstInstallTime="):
|
||||
details["first_install_time"] = line.split("=")[1].strip()
|
||||
elif line.strip().startswith("lastUpdateTime="):
|
||||
details["last_update_time"] = line.split("=")[1].strip()
|
||||
elif line.strip() == "requested permissions:":
|
||||
in_permissions = True
|
||||
continue
|
||||
|
||||
return details
|
||||
return parse_dumpsys_package_for_details("\n".join(lines))
|
||||
|
||||
def _get_files_for_package(self, package_name: str) -> list:
|
||||
output = self._adb_command(f"pm path {package_name}")
|
||||
|
|
|
@ -4,9 +4,9 @@
|
|||
# https://license.mvt.re/1.1/
|
||||
|
||||
import logging
|
||||
import re
|
||||
from typing import Optional, Union
|
||||
|
||||
from mvt.android.parsers.dumpsys import parse_dumpsys_packages
|
||||
from mvt.android.modules.adb.packages import (DANGEROUS_PERMISSIONS,
|
||||
DANGEROUS_PERMISSIONS_THRESHOLD,
|
||||
ROOT_PACKAGES)
|
||||
|
@ -76,89 +76,6 @@ class Packages(BugReportModule):
|
|||
self.detected.append(result)
|
||||
continue
|
||||
|
||||
@staticmethod
|
||||
def parse_package_for_details(output: str) -> dict:
|
||||
details = {
|
||||
"uid": "",
|
||||
"version_name": "",
|
||||
"version_code": "",
|
||||
"timestamp": "",
|
||||
"first_install_time": "",
|
||||
"last_update_time": "",
|
||||
"requested_permissions": [],
|
||||
}
|
||||
|
||||
in_install_permissions = False
|
||||
in_runtime_permissions = False
|
||||
for line in output.splitlines():
|
||||
if in_install_permissions:
|
||||
if line.startswith(" " * 4) and not line.startswith(" " * 6):
|
||||
in_install_permissions = False
|
||||
continue
|
||||
|
||||
permission = line.strip().split(":")[0]
|
||||
if permission not in details["requested_permissions"]:
|
||||
details["requested_permissions"].append(permission)
|
||||
|
||||
if in_runtime_permissions:
|
||||
if not line.startswith(" " * 8):
|
||||
in_runtime_permissions = False
|
||||
continue
|
||||
|
||||
permission = line.strip().split(":")[0]
|
||||
if permission not in details["requested_permissions"]:
|
||||
details["requested_permissions"].append(permission)
|
||||
|
||||
if line.strip().startswith("userId="):
|
||||
details["uid"] = line.split("=")[1].strip()
|
||||
elif line.strip().startswith("versionName="):
|
||||
details["version_name"] = line.split("=")[1].strip()
|
||||
elif line.strip().startswith("versionCode="):
|
||||
details["version_code"] = line.split("=", 1)[1].strip()
|
||||
elif line.strip().startswith("timeStamp="):
|
||||
details["timestamp"] = line.split("=")[1].strip()
|
||||
elif line.strip().startswith("firstInstallTime="):
|
||||
details["first_install_time"] = line.split("=")[1].strip()
|
||||
elif line.strip().startswith("lastUpdateTime="):
|
||||
details["last_update_time"] = line.split("=")[1].strip()
|
||||
elif line.strip() == "install permissions:":
|
||||
in_install_permissions = True
|
||||
elif line.strip() == "runtime permissions:":
|
||||
in_runtime_permissions = True
|
||||
|
||||
return details
|
||||
|
||||
def parse_packages_list(self, output: str) -> list:
|
||||
pkg_rxp = re.compile(r" Package \[(.+?)\].*")
|
||||
|
||||
results = []
|
||||
package_name = None
|
||||
package = {}
|
||||
lines = []
|
||||
for line in output.splitlines():
|
||||
if line.startswith(" Package ["):
|
||||
if len(lines) > 0:
|
||||
details = self.parse_package_for_details("\n".join(lines))
|
||||
package.update(details)
|
||||
results.append(package)
|
||||
lines = []
|
||||
package = {}
|
||||
|
||||
matches = pkg_rxp.findall(line)
|
||||
if not matches:
|
||||
continue
|
||||
|
||||
package_name = matches[0]
|
||||
package["package_name"] = package_name
|
||||
continue
|
||||
|
||||
if not package_name:
|
||||
continue
|
||||
|
||||
lines.append(line)
|
||||
|
||||
return results
|
||||
|
||||
def run(self) -> None:
|
||||
content = self._get_dumpstate_file()
|
||||
if not content:
|
||||
|
@ -189,12 +106,12 @@ class Packages(BugReportModule):
|
|||
|
||||
lines.append(line)
|
||||
|
||||
self.results = self.parse_packages_list("\n".join(lines))
|
||||
self.results = parse_dumpsys_packages("\n".join(lines))
|
||||
|
||||
for result in self.results:
|
||||
dangerous_permissions_count = 0
|
||||
for perm in result["requested_permissions"]:
|
||||
if perm in DANGEROUS_PERMISSIONS:
|
||||
for perm in result["permissions"]:
|
||||
if perm["name"] in DANGEROUS_PERMISSIONS:
|
||||
dangerous_permissions_count += 1
|
||||
|
||||
if dangerous_permissions_count >= DANGEROUS_PERMISSIONS_THRESHOLD:
|
||||
|
|
|
@ -387,3 +387,134 @@ def parse_dumpsys_appops(output: str) -> list:
|
|||
results.append(package)
|
||||
|
||||
return results
|
||||
|
||||
|
||||
def parse_dumpsys_package_for_details(output: str) -> dict:
|
||||
"""
|
||||
Parse one entry of a dumpsys package information
|
||||
"""
|
||||
details = {
|
||||
"uid": "",
|
||||
"version_name": "",
|
||||
"version_code": "",
|
||||
"timestamp": "",
|
||||
"first_install_time": "",
|
||||
"last_update_time": "",
|
||||
"permissions": [],
|
||||
"requested_permissions": [],
|
||||
}
|
||||
|
||||
in_install_permissions = False
|
||||
in_runtime_permissions = False
|
||||
in_declared_permissions = False
|
||||
in_requested_permissions = True
|
||||
for line in output.splitlines():
|
||||
if in_install_permissions:
|
||||
if line.startswith(" " * 4) and not line.startswith(" " * 6):
|
||||
in_install_permissions = False
|
||||
else:
|
||||
lineinfo = line.strip().split(":")
|
||||
permission = lineinfo[0]
|
||||
granted = None
|
||||
if "granted=" in lineinfo[1]:
|
||||
granted = ("granted=true" in lineinfo[1])
|
||||
|
||||
details["permissions"].append({
|
||||
"name": permission,
|
||||
"granted": granted,
|
||||
"type": "install"
|
||||
})
|
||||
|
||||
if in_runtime_permissions:
|
||||
if not line.startswith(" " * 8):
|
||||
in_runtime_permissions = False
|
||||
else:
|
||||
lineinfo = line.strip().split(":")
|
||||
permission = lineinfo[0]
|
||||
granted = None
|
||||
if "granted=" in lineinfo[1]:
|
||||
granted = ("granted=true" in lineinfo[1])
|
||||
|
||||
details["permissions"].append({
|
||||
"name": permission,
|
||||
"granted": granted,
|
||||
"type": "runtime"
|
||||
})
|
||||
|
||||
if in_declared_permissions:
|
||||
if not line.startswith(" " * 6):
|
||||
in_declared_permissions = False
|
||||
else:
|
||||
permission = line.strip().split(":")[0]
|
||||
details["permissions"].append({
|
||||
"name": permission,
|
||||
"type": "declared"
|
||||
})
|
||||
if in_requested_permissions:
|
||||
if not line.startswith(" " * 6):
|
||||
in_requested_permissions = False
|
||||
else:
|
||||
details["requested_permissions"].append(line.strip())
|
||||
|
||||
if line.strip().startswith("userId="):
|
||||
details["uid"] = line.split("=")[1].strip()
|
||||
elif line.strip().startswith("versionName="):
|
||||
details["version_name"] = line.split("=")[1].strip()
|
||||
elif line.strip().startswith("versionCode="):
|
||||
details["version_code"] = line.split("=", 1)[1].strip()
|
||||
elif line.strip().startswith("timeStamp="):
|
||||
details["timestamp"] = line.split("=")[1].strip()
|
||||
elif line.strip().startswith("firstInstallTime="):
|
||||
details["first_install_time"] = line.split("=")[1].strip()
|
||||
elif line.strip().startswith("lastUpdateTime="):
|
||||
details["last_update_time"] = line.split("=")[1].strip()
|
||||
elif line.strip() == "install permissions:":
|
||||
in_install_permissions = True
|
||||
elif line.strip() == "runtime permissions:":
|
||||
in_runtime_permissions = True
|
||||
elif line.strip() == "declared permissions:":
|
||||
in_declared_permissions = True
|
||||
elif line.strip() == "requested permissions:":
|
||||
in_requested_permissions = True
|
||||
|
||||
return details
|
||||
|
||||
|
||||
def parse_dumpsys_packages(output: str) -> list:
|
||||
"""
|
||||
Parse the dumpsys package service data
|
||||
"""
|
||||
pkg_rxp = re.compile(r" Package \[(.+?)\].*")
|
||||
|
||||
results = []
|
||||
package_name = None
|
||||
package = {}
|
||||
lines = []
|
||||
for line in output.splitlines():
|
||||
if line.startswith(" Package ["):
|
||||
if len(lines) > 0:
|
||||
details = parse_dumpsys_package_for_details("\n".join(lines))
|
||||
package.update(details)
|
||||
results.append(package)
|
||||
lines = []
|
||||
package = {}
|
||||
|
||||
matches = pkg_rxp.findall(line)
|
||||
if not matches:
|
||||
continue
|
||||
|
||||
package_name = matches[0]
|
||||
package["package_name"] = package_name
|
||||
continue
|
||||
|
||||
if not package_name:
|
||||
continue
|
||||
|
||||
lines.append(line)
|
||||
|
||||
if len(lines) > 0:
|
||||
details = parse_dumpsys_package_for_details("\n".join(lines))
|
||||
package.update(details)
|
||||
results.append(package)
|
||||
|
||||
return results
|
||||
|
|
|
@ -7,24 +7,36 @@ import os
|
|||
from pathlib import Path
|
||||
|
||||
from mvt.android.modules.bugreport.appops import Appops
|
||||
from mvt.android.modules.bugreport.packages import Packages
|
||||
from mvt.common.module import run_module
|
||||
|
||||
from ..utils import get_artifact_folder
|
||||
|
||||
|
||||
class TestAppopsModule:
|
||||
class TestBugreportAnalysis:
|
||||
|
||||
def test_appops_parsing(self):
|
||||
def launch_bug_report_module(self, module):
|
||||
fpath = os.path.join(get_artifact_folder(), "android_data/bugreport/")
|
||||
m = Appops(target_path=fpath)
|
||||
m = module(target_path=fpath)
|
||||
folder_files = []
|
||||
parent_path = Path(fpath).absolute().as_posix()
|
||||
for root, subdirs, subfiles in os.walk(os.path.abspath(fpath)):
|
||||
for file_name in subfiles:
|
||||
folder_files.append(os.path.relpath(os.path.join(root, file_name), parent_path))
|
||||
m.from_folder(fpath, folder_files)
|
||||
|
||||
run_module(m)
|
||||
return m
|
||||
|
||||
def test_appops_module(self):
|
||||
m = self.launch_bug_report_module(Appops)
|
||||
assert len(m.results) == 12
|
||||
assert len(m.timeline) == 16
|
||||
assert len(m.detected) == 0
|
||||
|
||||
def test_packages_module(self):
|
||||
m = self.launch_bug_report_module(Packages)
|
||||
assert len(m.results) == 2
|
||||
assert m.results[0]["package_name"] == "com.samsung.android.provider.filterprovider"
|
||||
assert m.results[1]["package_name"] == "com.instagram.android"
|
||||
assert len(m.results[0]["permissions"]) == 4
|
||||
assert len(m.results[1]["permissions"]) == 32
|
|
@ -4,7 +4,8 @@
|
|||
# https://license.mvt.re/1.1/
|
||||
|
||||
from mvt.android.parsers.dumpsys import (parse_dumpsys_appops,
|
||||
parse_dumpsys_battery_history)
|
||||
parse_dumpsys_battery_history,
|
||||
parse_dumpsys_packages)
|
||||
|
||||
from ..utils import get_artifact
|
||||
|
||||
|
@ -43,3 +44,18 @@ class TestDumpsysParsing:
|
|||
assert res[2]["package_name"] == "com.whatsapp"
|
||||
assert res[3]["event"] == "end_top"
|
||||
assert res[4]["package_name"] == "com.sec.android.app.launcher"
|
||||
|
||||
def test_packages_parsing(self):
|
||||
file = get_artifact("android_data/dumpsys_packages.txt")
|
||||
with open(file) as f:
|
||||
data = f.read()
|
||||
|
||||
res = parse_dumpsys_packages(data)
|
||||
|
||||
assert len(res) == 2
|
||||
assert res[0]["package_name"] == "com.samsung.android.provider.filterprovider"
|
||||
assert res[1]["package_name"] == "com.sec.android.app.DataCreate"
|
||||
assert len(res[0]["permissions"]) == 4
|
||||
assert len(res[0]["requested_permissions"]) == 0
|
||||
assert len(res[1]["permissions"]) == 34
|
||||
assert len(res[1]["requested_permissions"]) == 11
|
||||
|
|
|
@ -124,3 +124,128 @@ DUMP OF SERVICE appwidget:
|
|||
Providers:
|
||||
[0] provider ProviderId{user:0, app:10107, cmp:ComponentInfo{com.sec.android.app.clockpackage/com.sec.android.app.clockpackage.alarmwidget.ClockAlarmWidgetProvider}}
|
||||
|
||||
--------- 0.002s was the duration of dumpsys overlay, ending at: 2022-08-17 15:31:55
|
||||
-------------------------------------------------------------------------------
|
||||
DUMP OF SERVICE package:
|
||||
Database versions:
|
||||
Internal:
|
||||
sdkVersion=29 databaseVersion=3
|
||||
External:
|
||||
sdkVersion=28 databaseVersion=3
|
||||
|
||||
Verifiers:
|
||||
Required: com.android.vending (uid=10019)
|
||||
|
||||
Intent Filter Verifier:
|
||||
Using: com.google.android.gms (uid=10012)
|
||||
|
||||
Packages:
|
||||
Package [com.samsung.android.provider.filterprovider] (d64f8e0):
|
||||
userId=1000
|
||||
sharedUser=SharedUserSetting{cb92b86 android.uid.system/1000}
|
||||
pkg=Package{5be8c47 com.samsung.android.provider.filterprovider}
|
||||
codePath=/system/app/FilterProvider
|
||||
resourcePath=/system/app/FilterProvider
|
||||
legacyNativeLibraryDir=/system/app/FilterProvider/lib
|
||||
primaryCpuAbi=armeabi-v7a
|
||||
secondaryCpuAbi=null
|
||||
versionCode=500700000 minSdk=28 targetSdk=28
|
||||
versionName=5.0.07
|
||||
splits=[base]
|
||||
apkSigningVersion=2
|
||||
applicationInfo=ApplicationInfo{acc0439 com.samsung.android.provider.filterprovider}
|
||||
flags=[ SYSTEM HAS_CODE ALLOW_CLEAR_USER_DATA ]
|
||||
privateFlags=[ PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION PRIVATE_FLAG_REQUEST_LEGACY_EXTERNAL_STORAGE ]
|
||||
dataDir=/data/user/0/com.samsung.android.provider.filterprovider
|
||||
supportsScreens=[small, medium, large, xlarge, resizeable, anyDensity]
|
||||
usesLibraries:
|
||||
android.hidl.manager-V1.0-java
|
||||
android.hidl.base-V1.0-java
|
||||
usesLibraryFiles:
|
||||
/system/framework/android.hidl.manager-V1.0-java.jar
|
||||
/system/framework/android.hidl.base-V1.0-java.jar
|
||||
timeStamp=2008-12-31 16:00:00
|
||||
firstInstallTime=2008-12-31 16:00:00
|
||||
lastUpdateTime=2008-12-31 16:00:00
|
||||
signatures=PackageSignatures{6c98c74 version:2, signatures:[b378e95c], past signatures:[]}
|
||||
installPermissionsFixed=true
|
||||
pkgFlags=[ SYSTEM HAS_CODE ALLOW_CLEAR_USER_DATA ]
|
||||
declared permissions:
|
||||
com.samsung.android.provider.filterprovider.permission.READ_FILTER: prot=normal, INSTALLED
|
||||
com.samsung.android.provider.filterprovider.permission.WRITE_FILTER: prot=signature, INSTALLED
|
||||
com.samsung.android.provider.filterprovider.permission.RECEIVE_UPDATE: prot=signature, INSTALLED
|
||||
com.sec.android.camera.permission.USE_EFFECT_FILTER: prot=signature, INSTALLED
|
||||
User 0: ceDataInode=-4294835840 installed=true hidden=false suspended=false stopped=false notLaunched=false enabled=0 instant=false virtual=false
|
||||
Package [com.instagram.android] (c716d35):
|
||||
userId=10164
|
||||
pkg=Package{a61df24 com.instagram.android}
|
||||
codePath=/data/app/com.instagram.android-0mrt4tCf3oHIUTc_FFSStA==
|
||||
resourcePath=/data/app/com.instagram.android-0mrt4tCf3oHIUTc_FFSStA==
|
||||
legacyNativeLibraryDir=/data/app/com.instagram.android-0mrt4tCf3oHIUTc_FFSStA==/lib
|
||||
primaryCpuAbi=armeabi-v7a
|
||||
secondaryCpuAbi=null
|
||||
versionCode=364105349 minSdk=21 targetSdk=31
|
||||
versionName=241.1.0.18.114
|
||||
splits=[base]
|
||||
apkSigningVersion=2
|
||||
applicationInfo=ApplicationInfo{80b0d30 com.instagram.android}
|
||||
flags=[ HAS_CODE ALLOW_TASK_REPARENTING ALLOW_CLEAR_USER_DATA ALLOW_BACKUP KILL_AFTER_RESTORE LARGE_HEAP ]
|
||||
privateFlags=[ PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_UNRESIZEABLE ALLOW_AUDIO_PLAYBACK_CAPTURE PRIVATE_FLAG_REQUEST_LEGACY_EXTERNAL_STORAGE HAS_DOMAIN_URLS PARTIALLY_DIRECT_BOOT_AWARE ]
|
||||
dataDir=/data/user/0/com.instagram.android
|
||||
supportsScreens=[small, medium, large, xlarge, resizeable, anyDensity]
|
||||
timeStamp=2022-06-29 23:28:46
|
||||
firstInstallTime=2020-06-12 00:41:34
|
||||
lastUpdateTime=2022-06-29 23:28:51
|
||||
installerPackageName=com.android.vending
|
||||
signatures=PackageSignatures{7812a8d version:2, signatures:[43c4b509], past signatures:[]}
|
||||
installPermissionsFixed=true
|
||||
pkgFlags=[ HAS_CODE ALLOW_TASK_REPARENTING ALLOW_CLEAR_USER_DATA ALLOW_BACKUP KILL_AFTER_RESTORE LARGE_HEAP ]
|
||||
declared permissions:
|
||||
com.instagram.android.permission.SYSTEM_ONLY: prot=signature|privileged, INSTALLED
|
||||
com.instagram.android.permission.RECEIVE_ADM_MESSAGE: prot=signature, INSTALLED
|
||||
com.instagram.android.permission.CROSS_PROCESS_BROADCAST_MANAGER: prot=signature, INSTALLED
|
||||
install permissions:
|
||||
com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE: granted=true
|
||||
com.google.android.c2dm.permission.RECEIVE: granted=true
|
||||
android.permission.USE_CREDENTIALS: granted=true
|
||||
android.permission.MODIFY_AUDIO_SETTINGS: granted=true
|
||||
android.permission.FOREGROUND_SERVICE: granted=true
|
||||
android.permission.RECEIVE_BOOT_COMPLETED: granted=true
|
||||
com.instagram.android.permission.CROSS_PROCESS_BROADCAST_MANAGER: granted=true
|
||||
com.android.launcher.permission.UNINSTALL_SHORTCUT: granted=true
|
||||
android.permission.READ_PROFILE: granted=true
|
||||
android.permission.BLUETOOTH: granted=true
|
||||
com.facebook.services.identity.FEO2: granted=true
|
||||
android.permission.INTERNET: granted=true
|
||||
android.permission.REORDER_TASKS: granted=true
|
||||
com.android.vending.BILLING: granted=true
|
||||
android.permission.BLUETOOTH_ADMIN: granted=true
|
||||
android.permission.USE_FULL_SCREEN_INTENT: granted=true
|
||||
android.permission.BROADCAST_STICKY: granted=true
|
||||
User 0: ceDataInode=-4294835341 installed=true hidden=false suspended=false stopped=false notLaunched=false enabled=4 instant=false virtual=false
|
||||
lastDisabledCaller: auto_disabler
|
||||
gids=[3002, 3003, 3001]
|
||||
runtime permissions:
|
||||
android.permission.ACCESS_FINE_LOCATION: granted=false, flags=[ USER_SET|USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED]
|
||||
android.permission.READ_PHONE_NUMBERS: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED]
|
||||
android.permission.READ_EXTERNAL_STORAGE: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED|RESTRICTION_INSTALLER_EXEMPT|RESTRICTION_UPGRADE_EXEMPT]
|
||||
android.permission.ACCESS_COARSE_LOCATION: granted=false, flags=[ USER_SET|REVOKE_WHEN_REQUESTED|USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED]
|
||||
android.permission.READ_PHONE_STATE: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED]
|
||||
android.permission.CALL_PHONE: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED]
|
||||
android.permission.CAMERA: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED]
|
||||
android.permission.GET_ACCOUNTS: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED]
|
||||
android.permission.WRITE_EXTERNAL_STORAGE: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED|RESTRICTION_INSTALLER_EXEMPT|RESTRICTION_UPGRADE_EXEMPT]
|
||||
android.permission.RECORD_AUDIO: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED]
|
||||
android.permission.READ_CONTACTS: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED]
|
||||
android.permission.ACCESS_MEDIA_LOCATION: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED]
|
||||
disabledComponents:
|
||||
com.instagram.direct.share.handler.DirectExternalMediaShareActivityVideoInterop
|
||||
com.instagram.direct.share.handler.DirectShareHandlerActivityInterop
|
||||
com.instagram.direct.share.handler.DirectExternalPhotoShareActivityInterop
|
||||
com.facebook.rti.push.service.FbnsService
|
||||
com.instagram.direct.share.handler.DirectMultipleExternalMediaShareActivity
|
||||
com.instagram.share.handleractivity.ClipsShareHandlerActivity
|
||||
com.instagram.direct.share.handler.DirectMultipleExternalMediaShareActivityInterop
|
||||
|
||||
|
||||
|
||||
|
|
126
tests/artifacts/android_data/dumpsys_packages.txt
Normal file
126
tests/artifacts/android_data/dumpsys_packages.txt
Normal file
|
@ -0,0 +1,126 @@
|
|||
Verifiers:
|
||||
Required: com.android.vending (uid=10019)
|
||||
|
||||
Intent Filter Verifier:
|
||||
Using: com.google.android.gms (uid=10012)
|
||||
|
||||
Libraries:
|
||||
android.test.base -> (jar) /system/framework/android.test.base.jar
|
||||
android.test.mock -> (jar) /system/framework/android.test.mock.jar
|
||||
|
||||
|
||||
|
||||
Packages:
|
||||
Package [com.samsung.android.provider.filterprovider] (d64f8e0):
|
||||
userId=1000
|
||||
sharedUser=SharedUserSetting{cb92b86 android.uid.system/1000}
|
||||
pkg=Package{5be8c47 com.samsung.android.provider.filterprovider}
|
||||
codePath=/system/app/FilterProvider
|
||||
resourcePath=/system/app/FilterProvider
|
||||
legacyNativeLibraryDir=/system/app/FilterProvider/lib
|
||||
primaryCpuAbi=armeabi-v7a
|
||||
secondaryCpuAbi=null
|
||||
versionCode=500700000 minSdk=28 targetSdk=28
|
||||
versionName=5.0.07
|
||||
splits=[base]
|
||||
apkSigningVersion=2
|
||||
applicationInfo=ApplicationInfo{acc0439 com.samsung.android.provider.filterprovider}
|
||||
flags=[ SYSTEM HAS_CODE ALLOW_CLEAR_USER_DATA ]
|
||||
privateFlags=[ PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION PRIVATE_FLAG_REQUEST_LEGACY_EXTERNAL_STORAGE ]
|
||||
dataDir=/data/user/0/com.samsung.android.provider.filterprovider
|
||||
supportsScreens=[small, medium, large, xlarge, resizeable, anyDensity]
|
||||
usesLibraries:
|
||||
android.hidl.manager-V1.0-java
|
||||
android.hidl.base-V1.0-java
|
||||
usesLibraryFiles:
|
||||
/system/framework/android.hidl.manager-V1.0-java.jar
|
||||
/system/framework/android.hidl.base-V1.0-java.jar
|
||||
timeStamp=2008-12-31 16:00:00
|
||||
firstInstallTime=2008-12-31 16:00:00
|
||||
lastUpdateTime=2008-12-31 16:00:00
|
||||
signatures=PackageSignatures{6c98c74 version:2, signatures:[b378e95c], past signatures:[]}
|
||||
installPermissionsFixed=true
|
||||
pkgFlags=[ SYSTEM HAS_CODE ALLOW_CLEAR_USER_DATA ]
|
||||
declared permissions:
|
||||
com.samsung.android.provider.filterprovider.permission.READ_FILTER: prot=normal, INSTALLED
|
||||
com.samsung.android.provider.filterprovider.permission.WRITE_FILTER: prot=signature, INSTALLED
|
||||
com.samsung.android.provider.filterprovider.permission.RECEIVE_UPDATE: prot=signature, INSTALLED
|
||||
com.sec.android.camera.permission.USE_EFFECT_FILTER: prot=signature, INSTALLED
|
||||
User 0: ceDataInode=-4294835840 installed=true hidden=false suspended=false stopped=false notLaunched=false enabled=0 instant=false virtual=false
|
||||
Package [com.sec.android.app.DataCreate] (d151a2):
|
||||
userId=10143
|
||||
pkg=Package{254559d com.sec.android.app.DataCreate}
|
||||
codePath=/system/app/AutomationTest_FB
|
||||
resourcePath=/system/app/AutomationTest_FB
|
||||
legacyNativeLibraryDir=/system/app/AutomationTest_FB/lib
|
||||
primaryCpuAbi=null
|
||||
secondaryCpuAbi=null
|
||||
versionCode=1 minSdk=29 targetSdk=29
|
||||
versionName=1.0
|
||||
splits=[base]
|
||||
apkSigningVersion=2
|
||||
applicationInfo=ApplicationInfo{46c7a12 com.sec.android.app.DataCreate}
|
||||
flags=[ SYSTEM HAS_CODE ALLOW_CLEAR_USER_DATA ALLOW_BACKUP ]
|
||||
privateFlags=[ PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION ALLOW_AUDIO_PLAYBACK_CAPTURE ]
|
||||
dataDir=/data/user/0/com.sec.android.app.DataCreate
|
||||
supportsScreens=[small, medium, large, xlarge, resizeable, anyDensity]
|
||||
timeStamp=2008-12-31 16:00:00
|
||||
firstInstallTime=2008-12-31 16:00:00
|
||||
lastUpdateTime=2008-12-31 16:00:00
|
||||
signatures=PackageSignatures{b4da5e3 version:2, signatures:[b378e95c], past signatures:[]}
|
||||
installPermissionsFixed=true
|
||||
pkgFlags=[ SYSTEM HAS_CODE ALLOW_CLEAR_USER_DATA ALLOW_BACKUP ]
|
||||
declared permissions:
|
||||
com.sec.android.app.DataCreate.permission.KEYSTRING: prot=signature|privileged, INSTALLED
|
||||
requested permissions:
|
||||
android.permission.ACCESS_WIFI_STATE
|
||||
android.permission.INTERNET
|
||||
android.permission.ACCESS_NETWORK_STATE
|
||||
android.permission.WAKE_LOCK
|
||||
android.permission.GET_ACCOUNTS
|
||||
android.permission.USE_CREDENTIALS
|
||||
android.permission.RECEIVE_BOOT_COMPLETED
|
||||
android.permission.VIBRATE
|
||||
android.permission.FOREGROUND_SERVICE
|
||||
android.permission.USE_FULL_SCREEN_INTENT
|
||||
com.google.android.c2dm.permission.RECEIVE
|
||||
install permissions:
|
||||
android.permission.WRITE_SETTINGS: granted=true
|
||||
com.samsung.android.launcher.permission.WRITE_SETTINGS: granted=true
|
||||
android.permission.RESTART_PACKAGES: granted=true
|
||||
android.permission.ACCESS_CHECKIN_PROPERTIES: granted=true
|
||||
com.sec.android.app.clockpackage.permission.READ_WCCONTENT: granted=true
|
||||
android.permission.BLUETOOTH: granted=true
|
||||
android.permission.WRITE_MEDIA_STORAGE: granted=true
|
||||
com.sec.android.app.DataCreate.permission.KEYSTRING: granted=true
|
||||
android.permission.INTERNET: granted=true
|
||||
com.android.browser.permission.READ_HISTORY_BOOKMARKS: granted=true
|
||||
android.permission.WRITE_SECURE_SETTINGS: granted=true
|
||||
android.permission.READ_PRIVILEGED_PHONE_STATE: granted=true
|
||||
android.permission.WRITE_SMS: granted=true
|
||||
com.sec.android.app.clockpackage.permission.WRITE_WCCONTENT: granted=true
|
||||
android.permission.sec.RECEIVE_BLOCKED_SMS_MMS: granted=true
|
||||
android.permission.START_ACTIVITIES_FROM_BACKGROUND: granted=true
|
||||
com.android.browser.permission.WRITE_HISTORY_BOOKMARKS: granted=true
|
||||
com.sec.android.app.phoneutil.permission.KEYSTRING: granted=true
|
||||
android.permission.ACCESS_WIFI_STATE: granted=true
|
||||
android.permission.MANAGE_APP_OPS_MODES: granted=true
|
||||
User 0: ceDataInode=-4294835694 installed=true hidden=false suspended=false stopped=false notLaunched=false enabled=0 instant=false virtual=false
|
||||
gids=[3002, 1023, 3003]
|
||||
runtime permissions:
|
||||
android.permission.READ_SMS: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|RESTRICTION_UPGRADE_EXEMPT]
|
||||
android.permission.READ_CALENDAR: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED]
|
||||
android.permission.READ_CALL_LOG: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|RESTRICTION_UPGRADE_EXEMPT]
|
||||
android.permission.RECEIVE_MMS: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|RESTRICTION_UPGRADE_EXEMPT]
|
||||
android.permission.READ_EXTERNAL_STORAGE: granted=false, flags=[ REVOKE_WHEN_REQUESTED|USER_SENSITIVE_WHEN_GRANTED|RESTRICTION_UPGRADE_EXEMPT]
|
||||
android.permission.SEND_SMS: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|RESTRICTION_UPGRADE_EXEMPT]
|
||||
android.permission.WRITE_CONTACTS: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED]
|
||||
android.permission.CAMERA: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED]
|
||||
android.permission.WRITE_CALENDAR: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED]
|
||||
android.permission.WRITE_CALL_LOG: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|RESTRICTION_UPGRADE_EXEMPT]
|
||||
android.permission.GET_ACCOUNTS: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED]
|
||||
android.permission.WRITE_EXTERNAL_STORAGE: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|RESTRICTION_UPGRADE_EXEMPT]
|
||||
android.permission.READ_CONTACTS: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED]
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user