Using static methods

This commit is contained in:
Nex 2022-01-31 12:58:33 +01:00
parent fb8a7ca104
commit 06cd640c5e
6 changed files with 52 additions and 23 deletions

View File

@ -27,7 +27,10 @@ class DumpsysAccessibility(AndroidExtraction):
self.detected.append(result)
continue
def process_accessibility(self, output):
@staticmethod
def parse_accessibility(output):
results = []
in_services = False
for line in output.split("\n"):
if line.strip().startswith("installed services:"):
@ -43,17 +46,19 @@ class DumpsysAccessibility(AndroidExtraction):
service = line.split(":")[1].strip()
log.info("Found installed accessibility service \"%s\"", service)
self.results.append({
results.append({
"package": service.split("/")[0],
"service": service,
})
log.info("Identified a total of %d accessibility services", len(self.results))
return results
def run(self):
self._adb_connect()
output = self._adb_command("dumpsys accessibility")
self.process_accessibility(output)
self.results = self.parse_accessibility(output)
self.log.info("Identified a total of %d accessibility services", len(self.results))
self._adb_disconnect()

View File

@ -30,7 +30,10 @@ class DumpsysActivities(AndroidExtraction):
self.detected.append({intent: activity})
continue
def parse_activity_resolver_table(self, output):
@staticmethod
def parse_activity_resolver_table(output):
results = {}
in_activity_resolver_table = False
in_non_data_actions = False
intent = None
@ -57,7 +60,7 @@ class DumpsysActivities(AndroidExtraction):
# We detect the action name.
if line.startswith(" " * 6) and not line.startswith(" " * 8) and ":" in line:
intent = line.strip().replace(":", "")
self.results[intent] = []
results[intent] = []
continue
# If we are not in an intent block yet, skip.
@ -76,15 +79,17 @@ class DumpsysActivities(AndroidExtraction):
activity = line.strip().split(" ")[1]
package = activity.split("/")[0]
self.results[intent].append({
results[intent].append({
"package": package,
"activity": activity,
})
return results
def run(self):
self._adb_connect()
output = self._adb_command("dumpsys package")
self.parse_activity_resolver_table(output)
self.results = self.parse_activity_resolver_table(output)
self._adb_disconnect()

View File

@ -35,7 +35,9 @@ class DumpsysBatteryDaily(AndroidExtraction):
self.detected.append(result)
continue
def process_battery_history(self, output):
@staticmethod
def parse_battery_history(output):
results = []
daily = None
daily_updates = []
for line in output.split("\n")[1:]:
@ -48,7 +50,7 @@ class DumpsysBatteryDaily(AndroidExtraction):
continue
if line.strip() == "":
self.results.extend(daily_updates)
results.extend(daily_updates)
daily = None
daily_updates = []
continue
@ -75,12 +77,14 @@ class DumpsysBatteryDaily(AndroidExtraction):
"vers": vers_nr,
})
self.log.info("Extracted %d records from battery daily stats", len(self.results))
return results
def run(self):
self._adb_connect()
output = self._adb_command("dumpsys batterystats --daily")
self.process_battery_history(output)
self.results = self.parse_battery_history(output)
self.log.info("Extracted %d records from battery daily stats", len(self.results))
self._adb_disconnect()

View File

@ -27,7 +27,10 @@ class DumpsysBatteryHistory(AndroidExtraction):
self.detected.append(result)
continue
def process_battery_history(self, output):
@staticmethod
def parse_battery_history(output):
results = []
for line in output.split("\n")[1:]:
if line.strip() == "":
break
@ -64,7 +67,7 @@ class DumpsysBatteryHistory(AndroidExtraction):
else:
continue
self.results.append({
results.append({
"time_elapsed": time_elapsed,
"event": event,
"uid": uid,
@ -72,12 +75,14 @@ class DumpsysBatteryHistory(AndroidExtraction):
"service": service,
})
self.log.info("Extracted %d records from battery history", len(self.results))
return results
def run(self):
self._adb_connect()
output = self._adb_command("dumpsys batterystats --history")
self.process_battery_history(output)
self.results = self.parse_battery_history(output)
self.log.info("Extracted %d records from battery history", len(self.results))
self._adb_disconnect()

View File

@ -32,7 +32,10 @@ class DumpsysDBInfo(AndroidExtraction):
self.detected.append(result)
continue
def process_dbinfo(self, output):
@staticmethod
def parse_dbinfo(output):
results = []
rxp = re.compile(r'.*\[([0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{3})\].*\[Pid:\((\d+)\)\](\w+).*sql\=\"(.+?)\".*path\=(.*?$)')
in_operations = False
@ -53,7 +56,7 @@ class DumpsysDBInfo(AndroidExtraction):
continue
match = matches[0]
self.results.append({
results.append({
"isodate": match[0],
"pid": match[1],
"action": match[2],
@ -61,11 +64,13 @@ class DumpsysDBInfo(AndroidExtraction):
"path": match[4],
})
return results
def run(self):
self._adb_connect()
output = self._adb_command("dumpsys dbinfo")
self.process_dbinfo(output)
self.results = self.parse_dbinfo(output)
self.log.info("Extracted a total of %d records from database information",
len(self.results))

View File

@ -52,7 +52,10 @@ class DumpsysReceivers(AndroidExtraction):
self.detected.append({intent: receiver})
continue
def parse_receiver_resolver_table(self, output):
@staticmethod
def parse_receiver_resolver_table(output):
results = {}
in_receiver_resolver_table = False
in_non_data_actions = False
intent = None
@ -79,7 +82,7 @@ class DumpsysReceivers(AndroidExtraction):
# We detect the action name.
if line.startswith(" " * 6) and not line.startswith(" " * 8) and ":" in line:
intent = line.strip().replace(":", "")
self.results[intent] = []
results[intent] = []
continue
# If we are not in an intent block yet, skip.
@ -98,15 +101,17 @@ class DumpsysReceivers(AndroidExtraction):
receiver = line.strip().split(" ")[1]
package = receiver.split("/")[0]
self.results[intent].append({
results[intent].append({
"package": package,
"receiver": receiver,
})
return results
def run(self):
self._adb_connect()
output = self._adb_command("dumpsys package")
self.parse_receiver_resolver_table(output)
self.results = self.parse_receiver_resolver_table(output)
self._adb_disconnect()