From ded132ec3f9cebf7517c6b00aa37b01a41a937cd Mon Sep 17 00:00:00 2001 From: AspHyxia28 Date: Tue, 9 Dec 2025 00:31:23 +0700 Subject: [PATCH] Handle Errors in wifiConfigstore2 and gboard --- scripts/artifacts/gboard.py | 36 ++++++++++++++++----------- scripts/artifacts/wifiConfigstore2.py | 18 +++++++++++++- 2 files changed, 38 insertions(+), 16 deletions(-) diff --git a/scripts/artifacts/gboard.py b/scripts/artifacts/gboard.py index 40e70aa8..b3259086 100755 --- a/scripts/artifacts/gboard.py +++ b/scripts/artifacts/gboard.py @@ -5,6 +5,7 @@ import os import shutil import sqlite3 +from google.protobuf.message import DecodeError from scripts.artifact_report import ArtifactHtmlReport from scripts.ilapfuncs import logfunc, tsv, timeline, is_platform_windows, open_sqlite_db_readonly, does_table_exist_in_db, media_to_html @@ -124,22 +125,27 @@ def read_trainingcache2(file_found, report_folder, seeker): all_rows = cursor.fetchall() for row in all_rows: pb = row['_payload'] - data, actual_types = blackboxprotobuf.decode_message(pb, pb_types) - texts = data.get('7', {}).get('2', []) - text_typed = '' - if texts: - if isinstance(texts, list): - for t in texts: - text_typed += t.get('1', b'').decode('utf8', 'ignore') - else: - text_typed = texts.get('1', b'').decode('utf8', 'ignore') + try: + data, actual_types = blackboxprotobuf.decode_message(pb, pb_types) + texts = data.get('7', {}).get('2', []) + text_typed = '' + if texts: + if isinstance(texts, list): + for t in texts: + text_typed += t.get('1', b'').decode('utf8', 'ignore') + else: + text_typed = texts.get('1', b'').decode('utf8', 'ignore') - # Not filtering out blanks for now - textbox_name = row['textbox_name'] - textbox_id = row['textbox_id'] - if len(textbox_id) > len(textbox_name): - textbox_id = textbox_id[len(textbox_name) + 4:] - keyboard_events.append(keyboard_event(row['_id'], row['app'], text_typed, row['textbox_name'], row['textbox_id'], row['ts'])) + # Not filtering out blanks for now + textbox_name = row['textbox_name'] + textbox_id = row['textbox_id'] + if len(textbox_id) > len(textbox_name): + textbox_id = textbox_id[len(textbox_name) + 4:] + keyboard_events.append(keyboard_event(row['_id'], row['app'], text_typed, row['textbox_name'], row['textbox_id'], row['ts'])) + except (DecodeError, ValueError, AttributeError, TypeError) as inner_ex: + # Skip rows with malformed protobuf data + logfunc(f'Skipping row with malformed protobuf data: {inner_ex}') + continue except (sqlite3.Error, TypeError, ValueError) as ex: logfunc(f'read_trainingcache2 had an error reading {file_found} ' + str(ex)) diff --git a/scripts/artifacts/wifiConfigstore2.py b/scripts/artifacts/wifiConfigstore2.py index 44ede334..a4c90350 100644 --- a/scripts/artifacts/wifiConfigstore2.py +++ b/scripts/artifacts/wifiConfigstore2.py @@ -31,6 +31,22 @@ def get_wifiConfigstore(files_found, report_folder, seeker, wrap_text): #print(b.tag) tagg = b.tag + # Initialize all variables before processing fields + configcombined = '' + ssidcombined = '' + bssidcombined = '' + PreSharedKeycombined = '' + WEPKeyscombined = '' + HiddenSSIDcombined = '' + RandomizedMacAddresscombined = '' + CreatorNamecombined = '' + CreationTimecombined = '' + ConnectChoicecombined = '' + ConnectChoiceTimeStampcombined = '' + HasEverConnectedcombined = '' + IpAssignmentcombined = '' + ProxySettingscombined = '' + for c in b: combined = (c.attrib, c.text) datafieldname = (c.attrib['name']) #field @@ -109,7 +125,7 @@ def get_wifiConfigstore(files_found, report_folder, seeker, wrap_text): ProxySettingsvalue = f'{datafieldvalue}' ProxySettingscombined = f'{ProxySettings} - {ProxySettingsvalue}' - data_list.append((configcombined,ssidcombined,bssidcombined,PreSharedKeycombined, WEPKeyscombined,HiddenSSIDcombined,RandomizedMacAddresscombined,CreatorNamecombined,CreationTimecombined,ConnectChoicecombined,ConnectChoiceTimeStampcombined,HasEverConnectedcombined,IpAssignmentcombined,ProxySettingscombined)) + data_list.append((configcombined,ssidcombined,bssidcombined,PreSharedKeycombined, WEPKeyscombined,HiddenSSIDcombined,RandomizedMacAddresscombined,CreatorNamecombined,CreationTimecombined,ConnectChoicecombined,ConnectChoiceTimeStampcombined,HasEverConnectedcombined,IpAssignmentcombined,ProxySettingscombined)) if data_list: report = ArtifactHtmlReport(f'Wifi Configuration Store Details.xml - {count}')