Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update #30

Merged
merged 9 commits into from
Jan 26, 2021
Prev Previous commit
Next Next commit
Runtime app permissions
List of permissions accepted by the user per app.
  • Loading branch information
abrignoni committed Jan 25, 2021
commit 1f72ec017dafca1337cd2f8dbed85c7e2088c459
64 changes: 64 additions & 0 deletions scripts/artifacts/runtimePerms.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
import xml.etree.ElementTree as ET

from scripts.artifact_report import ArtifactHtmlReport
from scripts.ilapfuncs import logfunc, tsv, is_platform_windows

def get_runtimePerms(files_found, report_folder, seeker, wrap_text):

run = 0
slash = '\\' if is_platform_windows() else '/'

for file_found in files_found:
file_found = str(file_found)

data_list = []
run = run + 1
err = 0


parts = file_found.split(slash)
if 'mirror' in parts:
user = 'mirror'
elif 'system' in parts:
user = parts[-2]
elif 'misc_de' in parts:
user = parts[-4]

if user == 'mirror':
continue
else:
try:
ET.parse(file_found)
except ET.ParseError:
print('Parse error - Non XML file.') #change to logfunc
err = 1

if err == 0:
tree = ET.parse(file_found)
root = tree.getroot()

for elem in root:
#print(elem.tag)
usagetype = elem.tag
name = elem.attrib['name']
#print("Usage type: "+usagetype)
#print('name')
for subelem in elem:
permission = subelem.attrib['name']
granted = subelem.attrib['granted']
flags = subelem.attrib['flags']

data_list.append((usagetype, name, permission, granted, flags))

if len(data_list) > 0:
report = ArtifactHtmlReport('Runtime Permissions')
report.start_artifact_report(report_folder, f'Runtime Permissions_{user}')
report.add_script()
data_headers = ('Type', 'Name', 'Permission', 'Granted?','Flag')
report.write_artifact_data_table(data_headers, data_list, file_found)
report.end_artifact_report()

tsvname = f'Runtime Permissions_{user}'
tsv(report_folder, data_headers, data_list, tsvname)


2 changes: 2 additions & 0 deletions scripts/ilap_artifacts.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
from scripts.artifacts.packageInfo import get_package_info
from scripts.artifacts.recentactivity import get_recentactivity
from scripts.artifacts.lgRCS import get_lgRCS
from scripts.artifacts.runtimePerms import get_runtimePerms
from scripts.artifacts.scontextLog import get_scontextLog
from scripts.artifacts.settingsSecure import get_settingsSecure
from scripts.artifacts.siminfo import get_siminfo
Expand Down Expand Up @@ -115,6 +116,7 @@
'quicksearch_recent':('Google Now & QuickSearch', '**/com.google.android.googlequicksearchbox/files/recently/*'),
'recentactivity':('Recent Activity', '**/system_ce/*'),
'lgRCS':('RCS Chats', '*/mmssms.db*'),
'runtimePerms':('Runtime Permissions',('*/system/users/*/runtime-permissions.xml','*/misc_de/*/apexdata/com.android.permission/runtime-permissions.xml')),
'scontextLog':('App Interaction', '**/com.samsung.android.providers.context/databases/ContextLog.db'),
'settingsSecure':('Device Info', '**/system/users/*/settings_secure.xml'),
'siminfo':('Device Info', '**/user_de/*/com.android.providers.telephony/databases/telephony.db'),
Expand Down
1 change: 1 addition & 0 deletions scripts/report.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ def get_icon_name(category, artifact):
if artifact == 'ACCOUNT DATA': icon = 'user'
else: icon = 'layers'
elif category == 'WIFI PROFILES': icon = 'wifi'
elif category == 'RUNTIME PERMISSIONS': icon = 'check'

return icon

Expand Down