dissect.target 3.19.dev42__py3-none-any.whl → 3.19.dev43__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,1073 @@
1
+ from __future__ import annotations
2
+
3
+ import re
4
+ from datetime import datetime
5
+ from typing import Iterator
6
+
7
+ from dissect.esedb.c_esedb import decode_guid
8
+ from dissect.esedb.esedb import EseDB
9
+ from dissect.util.ts import oatimestamp
10
+
11
+ from dissect.target.exceptions import UnsupportedPluginError
12
+ from dissect.target.helpers.record import TargetRecordDescriptor
13
+ from dissect.target.plugin import Plugin, export
14
+
15
+ WuaHistoryRecord = TargetRecordDescriptor(
16
+ "filesystem/windows/wua_history",
17
+ [
18
+ ("datetime", "ts"),
19
+ ("varint", "id_event"),
20
+ ("varint", "status"),
21
+ ("varint", "server_selection"),
22
+ ("string", "mapped_result"),
23
+ ("string", "unmapped_result"),
24
+ ("string", "update_id"),
25
+ ("string", "server_id"),
26
+ ("varint", "flags"),
27
+ ("string", "client_id"),
28
+ ("string", "title"),
29
+ ("string", "description"),
30
+ ("string", "uninstall_notes"),
31
+ ("string", "support_url"),
32
+ ("string", "uninstall_steps"),
33
+ ("string", "categories"),
34
+ ("string", "more_info_url"),
35
+ ("string", "path"),
36
+ ("varint", "id_user"),
37
+ ("string", "is_service_is_additional"),
38
+ ("string", "classification"),
39
+ # Enriched fields
40
+ ("string", "kb"),
41
+ ("string", "status_mapped"),
42
+ ("string", "mapped_result_string"),
43
+ ("string", "mapped_result_description"),
44
+ ("string", "unmapped_result_string"),
45
+ ("string", "unmapped_result_description"),
46
+ ("string", "server_id_mapped"),
47
+ ("string", "server_selection_mapped"),
48
+ ("string", "classification_mapped"),
49
+ ],
50
+ )
51
+
52
+ TBHISTORY_COLUMN_MAP = {
53
+ "IdEvent": "id_event",
54
+ "Status": "status",
55
+ "ServerSelection": "server_selection",
56
+ "MappedResult": "mapped_result",
57
+ "UnmappedResult": "unmapped_result",
58
+ "UpdateId": "update_id",
59
+ "ServerId": "server_id",
60
+ "Date": "ts",
61
+ "Flags": "flags",
62
+ "ClientId": "client_id",
63
+ "Title": "title",
64
+ "Description": "description",
65
+ "UninstallNotes": "uninstall_notes",
66
+ "SupportUrl": "support_url",
67
+ "UninstallSteps": "uninstall_steps",
68
+ "Categories": "categories",
69
+ "MoreInfoUrl": "more_info_url",
70
+ "IdUser": "id_user",
71
+ "IsServiceIsAdditional": "is_service_is_additional",
72
+ "Classification": "classification",
73
+ # Enriched fields
74
+ "kb": "kb",
75
+ "status_mapped": "status_mapped",
76
+ "mapped_result_string": "mapped_result_string",
77
+ "mapped_result_description": "mapped_result_description",
78
+ "unmapped_result_string": "unmapped_result_string",
79
+ "unmapped_result_description": "unmapped_result_description",
80
+ "server_id_mapped": "server_id_mapped",
81
+ "server_selection_mapped": "server_selection_mapped",
82
+ "classification_mapped": "classification_mapped",
83
+ }
84
+
85
+ CLASSIFICATION_MAP = {
86
+ "5c9376ab-8ce6-464a-b136-22113dd69801": "Application",
87
+ "434de588-ed14-48f5-8eed-a15e09a991f6": "Connectors",
88
+ "e6cf1350-c01b-414d-a61f-263d14d133b4": "CriticalUpdates",
89
+ "e0789628-ce08-4437-be74-2495b842f43b": "DefinitionUpdates",
90
+ "e140075d-8433-45c3-ad87-e72345b36078": "DeveloperKits",
91
+ "b54e7d24-7add-428f-8b75-90a396fa584f": "FeaturePacks",
92
+ "9511d615-35b2-47bb-927f-f73d8e9260bb": "Guidance",
93
+ "0fa1201d-4330-4fa8-8ae9-b877473b6441": "SecurityUpdates",
94
+ "68c5b0a3-d1a6-4553-ae49-01d3a7827828": "ServicePacks",
95
+ "b4832bd8-e735-4761-8daf-37f882276dab": "Tools",
96
+ "28bc880e-0592-4cbf-8f95-c79b17911d5f": "UpdateRollups",
97
+ "cd5ffd1e-e932-4e3a-bf74-18bf0b1bbd83": "Updates",
98
+ "3689bdc8-b205-4af4-8d4a-a63924c5e9d5": "Upgrades",
99
+ "ebfc1fc5-71a4-4f7b-9aca-3b9a503104a0": "Drivers",
100
+ }
101
+
102
+ SERVER_ID_MAP = {
103
+ "00000000-0000-0000-0000-000000000000": "Unspecified / Default",
104
+ "9482f4b4-e343-43b6-b170-9a65bc822c77": "Windows Update",
105
+ "7971f918-a847-4430-9279-4a52d1efe18d": "Microsoft Update",
106
+ "855e8a7c-ecb4-4ca3-b045-1dfa50104289": "Store",
107
+ "8b24b027-1dee-babb-9a95-3517dfb9c552": "OS Flighting",
108
+ "3da21691-e39d-4da6-8a4b-b43877bcb1b7": "WSUS or Configuration Manager",
109
+ }
110
+
111
+ SERVER_SELECTION_MAP = {
112
+ 0: "ssDefault",
113
+ 1: "ssManagedServer",
114
+ 2: "ssWindowsUpdate",
115
+ 3: "ssOthers",
116
+ }
117
+
118
+ STATUS_MAP = {
119
+ 1: "Success",
120
+ 2: "Failure",
121
+ }
122
+
123
+ WUA_CODE_MAP = {
124
+ "0x0": ["Success", "Success"],
125
+ "0x240001": ["WU_S_SERVICE_STOP", "Windows Update Agent was stopped successfully."],
126
+ "0x240002": ["WU_S_SELFUPDATE", "Windows Update Agent updated itself."],
127
+ "0x240003": ["WU_S_UPDATE_ERROR", "Operation completed successfully but there were errors applying the updates."],
128
+ "0x240004": [
129
+ "WU_S_MARKED_FOR_DISCONNECT",
130
+ "A callback was marked to be disconnected later because the request to disconnect the operation came while a"
131
+ " callback was executing.",
132
+ ],
133
+ "0x240005": ["WU_S_REBOOT_REQUIRED", "The system must be restarted to complete installation of the update."],
134
+ "0x240006": ["WU_S_ALREADY_INSTALLED", "The update to be installed is already installed on the system."],
135
+ "0x240007": ["WU_S_ALREADY_UNINSTALLED", "The update to be removed is not installed on the system."],
136
+ "0x240008": ["WU_S_ALREADY_DOWNLOADED", "The update to be downloaded has already been downloaded."],
137
+ "0x8024400A": [
138
+ "WU_E_PT_SOAPCLIENT_PARSE",
139
+ "SOAPCLIENT_PARSE_ERROR - SOAP client failed to parse the response from the server.",
140
+ ],
141
+ "0x8024600a": [
142
+ "WU_E_DM_DOWNLOADLOCATIONCHANGED",
143
+ "A download must be restarted because the location of the source of the download has changed.",
144
+ ],
145
+ "0x8024D008": [
146
+ "WU_E_SELFUPDATE_SKIP_ON_FAILURE",
147
+ "An update to the Windows Update Agent was skipped because previous attempts to update have failed.",
148
+ ],
149
+ "0x8024D011": ["WU_E_SELFUPDATE_REQUIRED", "Windows Update Agent must be updated before search can continue."],
150
+ "0x8024D012": [
151
+ "WU_E_SELFUPDATE_REQUIRED_ADMIN",
152
+ "Windows Update Agent must be updated before search can continue. An administrator is required to perform the "
153
+ "operation",
154
+ ],
155
+ "0x80243FFF": [
156
+ "WU_E_AUCLIENT_UNEXPECTED",
157
+ "There was a user interface error not covered by another WU_E_AUCLIENT_* error code.",
158
+ ],
159
+ "0x8024A000": ["WU_E_AU_NOSERVICE", "Automatic Updates was unable to service incoming requests."],
160
+ "0x8024A002": [
161
+ "WU_E_AU_NONLEGACYSERVER",
162
+ "The old version of the Automatic Updates client has stopped because the WSUS server has been upgraded.",
163
+ ],
164
+ "0x8024A003": ["WU_E_AU_LEGACYCLIENTDISABLED", "The old version of the Automatic Updates client was disabled."],
165
+ "0x8024A004": [
166
+ "WU_E_AU_PAUSED",
167
+ "Automatic Updates was unable to process incoming requests because it was paused.",
168
+ ],
169
+ "0x8024A005": ["WU_E_AU_NO_REGISTERED_SERVICE", "No unmanaged service is registered with AU."],
170
+ "0x8024AFFF": ["WU_E_AU_UNEXPECTED", "An Automatic Updates error not covered by another WU_E_AU * code."],
171
+ "0x80243001": [
172
+ "WU_E_INSTALLATION_RESULTS_UNKNOWN_VERSION",
173
+ "The results of download and installation could not be read from the registry due to an unrecognized data "
174
+ "format version.",
175
+ ],
176
+ "0x80243002": [
177
+ "WU_E_INSTALLATION_RESULTS_INVALID_DATA",
178
+ "The results of download and installation could not be read from the registry due to an invalid data format.",
179
+ ],
180
+ "0x80243003": [
181
+ "WU_E_INSTALLATION_RESULTS_NOT_FOUND",
182
+ "The results of download and installation are not available; the operation may have failed to start.",
183
+ ],
184
+ "0x80243004": [
185
+ "WU_E_TRAYICON_FAILURE",
186
+ "A failure occurred when trying to create an icon in the taskbar notification area.",
187
+ ],
188
+ "0x80243FFD": [
189
+ "WU_E_NON_UI_MODE",
190
+ "Unable to show UI when in non-UI mode; WU client UI modules may not be installed.",
191
+ ],
192
+ "0x80243FFE": ["WU_E_WUCLTUI_UNSUPPORTED_VERSION", "Unsupported version of WU client UI exported functions."],
193
+ "0x8024043D": ["WU_E_SERVICEPROP_NOTAVAIL", "The requested service property isn't available."],
194
+ "0x80249001": ["WU_E_INVENTORY_PARSEFAILED", "Parsing of the rule file failed."],
195
+ "0x80249002": [
196
+ "WU_E_INVENTORY_GET_INVENTORY_TYPE_FAILED",
197
+ "Failed to get the requested inventory type from the server.",
198
+ ],
199
+ "0x80249003": ["WU_E_INVENTORY_RESULT_UPLOAD_FAILED", "Failed to upload inventory result to the server."],
200
+ "0x80249004": ["WU_E_INVENTORY_UNEXPECTED", "There was an inventory error not covered by another error code."],
201
+ "0x80249005": [
202
+ "WU_E_INVENTORY_WMI_ERROR",
203
+ "A WMI error occurred when enumerating the instances for a particular class.",
204
+ ],
205
+ "0x8024E001": [
206
+ "WU_E_EE_UNKNOWN_EXPRESSION",
207
+ "An expression evaluator operation could not be completed because an expression was unrecognized.",
208
+ ],
209
+ "0x8024E002": [
210
+ "WU_E_EE_INVALID_EXPRESSION",
211
+ "An expression evaluator operation could not be completed because an expression was invalid.",
212
+ ],
213
+ "0x8024E003": [
214
+ "WU_E_EE_MISSING_METADATA",
215
+ "An expression evaluator operation could not be completed because an expression contains an incorrect number "
216
+ "of metadata nodes.",
217
+ ],
218
+ "0x8024E004": [
219
+ "WU_E_EE_INVALID_VERSION",
220
+ "An expression evaluator operation could not be completed because the version of the serialized expression "
221
+ "data is invalid.",
222
+ ],
223
+ "0x8024E005": ["WU_E_EE_NOT_INITIALIZED", "The expression evaluator could not be initialized."],
224
+ "0x8024E006": [
225
+ "WU_E_EE_INVALID_ATTRIBUTEDATA",
226
+ "An expression evaluator operation could not be completed because there was an invalid attribute.",
227
+ ],
228
+ "0x8024E007": [
229
+ "WU_E_EE_CLUSTER_ERROR",
230
+ "An expression evaluator operation could not be completed because the cluster state of the computer could not "
231
+ "be determined.",
232
+ ],
233
+ "0x8024EFFF": [
234
+ "WU_E_EE_UNEXPECTED",
235
+ "There was an expression evaluator error not covered by another WU_E_EE_* error code.",
236
+ ],
237
+ "0x80247001": [
238
+ "WU_E_OL_INVALID_SCANFILE",
239
+ "An operation could not be completed because the scan package was invalid.",
240
+ ],
241
+ "0x80247002": [
242
+ "WU_E_OL_NEWCLIENT_REQUIRED",
243
+ "An operation could not be completed because the scan package requires a greater version of the Windows Update "
244
+ "Agent.",
245
+ ],
246
+ "0x80247FFF": ["WU_E_OL_UNEXPECTED", "Search using the scan package failed."],
247
+ "0x8024F001": ["WU_E_REPORTER_EVENTCACHECORRUPT", "The event cache file was defective."],
248
+ "0x8024F002": [
249
+ "WU_E_REPORTER_",
250
+ "EVENTNAMESPACEPARSEFAILEDThe XML in the event namespace descriptor could not be parsed.",
251
+ ],
252
+ "0x8024F003": ["WU_E_INVALID_EVENT", "The XML in the event namespace descriptor could not be parsed."],
253
+ "0x8024F004": ["WU_E_SERVER_BUSY", "The server rejected an event because the server was too busy."],
254
+ "0x8024FFFF": ["WU_E_REPORTER_UNEXPECTED", "There was a reporter error not covered by another error code."],
255
+ "0x80245001": ["WU_E_REDIRECTOR_LOAD_XML", "The redirector XML document could not be loaded into the DOM class."],
256
+ "0x80245002": ["WU_E_REDIRECTOR_S_FALSE", "The redirector XML document is missing some required information."],
257
+ "0x80245003": [
258
+ "WU_E_REDIRECTOR_ID_SMALLER",
259
+ "The redirector ID in the downloaded redirector cab is less than in the cached cab.",
260
+ ],
261
+ "0x80245FFF": [
262
+ "WU_E_REDIRECTOR_UNEXPECTED",
263
+ "The redirector failed for reasons not covered by another WU_E_REDIRECTOR_* error code.",
264
+ ],
265
+ "0x80244000": [
266
+ "WU_E_PT_SOAPCLIENT_BASE",
267
+ "WU_E_PT_SOAPCLIENT_* error codes map to the SOAPCLIENT_ERROR enum of the ATL Server Library.",
268
+ ],
269
+ "0x80244001": [
270
+ "WU_E_PT_SOAPCLIENT_INITIALIZE",
271
+ "SOAPCLIENT_INITIALIZE_ERROR - initialization of the SOAP client failed, possibly because of an MSXML "
272
+ "installation failure.",
273
+ ],
274
+ "0x80244002": [
275
+ "WU_E_PT_SOAPCLIENT_OUTOFMEMORY",
276
+ "SOAPCLIENT_OUTOFMEMORY - SOAP client failed because it ran out of memory.",
277
+ ],
278
+ "0x80244003": [
279
+ "WU_E_PT_SOAPCLIENT_GENERATE",
280
+ "SOAPCLIENT_GENERATE_ERROR - SOAP client failed to generate the request.",
281
+ ],
282
+ "0x80244004": [
283
+ "WU_E_PT_SOAPCLIENT_CONNECT",
284
+ "SOAPCLIENT_CONNECT_ERROR - SOAP client failed to connect to the server.",
285
+ ],
286
+ "0x80244005": [
287
+ "WU_E_PT_SOAPCLIENT_SEND",
288
+ "SOAPCLIENT_SEND_ERROR - SOAP client failed to send a message for reasons of WU_E_WINHTTP_* error codes.",
289
+ ],
290
+ "0x80244006": [
291
+ "WU_E_PT_SOAPCLIENT_SERVER",
292
+ "SOAPCLIENT_SERVER_ERROR - SOAP client failed because there was a server error.",
293
+ ],
294
+ "0x80244007": [
295
+ "WU_E_PT_SOAPCLIENT_SOAPFAULT",
296
+ "SOAPCLIENT_SOAPFAULT - SOAP client failed because there was a SOAP fault for reasons of WU_E_PT_SOAP_* error "
297
+ "codes.",
298
+ ],
299
+ "0x80244008": [
300
+ "WU_E_PT_SOAPCLIENT_PARSEFAULT",
301
+ "SOAPCLIENT_PARSEFAULT_ERROR - SOAP client failed to parse a SOAP fault.",
302
+ ],
303
+ "0x80244009": [
304
+ "WU_E_PT_SOAPCLIENT_READ",
305
+ "SOAPCLIENT_READ_ERROR - SOAP client failed while reading the response from the server.",
306
+ ],
307
+ "x8024400A": [
308
+ "WU_E_PT_SOAPCLIENT_PARSE",
309
+ "Same as SOAPCLIENT_PARSE_ERROR - SOAP client failed to parse the response from the server.",
310
+ ],
311
+ "0x8024400B": [
312
+ "WU_E_PT_SOAP_VERSION",
313
+ "SOAP_E_VERSION_MISMATCH - SOAP client found an unrecognizable namespace for the SOAP envelope.",
314
+ ],
315
+ "0x8024400C": [
316
+ "WU_E_PT_SOAP_MUST_UNDERSTAND",
317
+ "SOAP_E_MUST_UNDERSTAND - SOAP client was unable to understand a header.",
318
+ ],
319
+ "0x8024400D": [
320
+ "WU_E_PT_SOAP_CLIENT",
321
+ "SOAP_E_CLIENT - SOAP client found the message was malformed; fix before resending.",
322
+ ],
323
+ "0x8024400E": [
324
+ "WU_E_PT_SOAP_SERVER",
325
+ "SOAP_E_SERVER - The SOAP message could not be processed due to a server error; resend later.",
326
+ ],
327
+ "0x8024400F": ["WU_E_PT_WMI_ERROR", "There was an unspecified Windows Management Instrumentation (WMI) error."],
328
+ "0x80244010": [
329
+ "WU_E_PT_EXCEEDED_MAX_SERVER_TRIPS",
330
+ "The number of round trips to the server exceeded the maximum limit.",
331
+ ],
332
+ "0x80244011": ["WU_E_PT_SUS_SERVER_NOT_SET", "WUServer policy value is missing in the registry."],
333
+ "0x80244012": [
334
+ "WU_E_PT_DOUBLE_INITIALIZATION",
335
+ "Initialization failed because the object was already initialized.",
336
+ ],
337
+ "0x80244013": ["WU_E_PT_INVALID_COMPUTER_NAME", "The computer name could not be determined."],
338
+ "0x80244015": [
339
+ "WU_E_PT_REFRESH_CACHE_REQUIRED",
340
+ "The reply from the server indicates that the server was changed or the cookie was invalid; refresh the state "
341
+ "of the internal cache and retry.",
342
+ ],
343
+ "0x80244016": [
344
+ "WU_E_PT_HTTP_STATUS_BAD_REQUEST",
345
+ "HTTP 400 - the server could not process the request due to invalid syntax.",
346
+ ],
347
+ "0x80244017": ["WU_E_PT_HTTP_STATUS_DENIED", "HTTP 401 - the requested resource requires user authentication."],
348
+ "0x80244018": [
349
+ "WU_E_PT_HTTP_STATUS_FORBIDDEN",
350
+ "HTTP 403 - server understood the request, but declined to fulfill it.",
351
+ ],
352
+ "0x80244019": [
353
+ "WU_E_PT_HTTP_STATUS_NOT_FOUND",
354
+ "HTTP 404 - the server cannot find the requested URI (Uniform Resource Identifier).",
355
+ ],
356
+ "0x8024401A": ["WU_E_PT_HTTP_STATUS_BAD_METHOD", "HTTP 405 - the HTTP method is not allowed."],
357
+ "0x8024401B": ["WU_E_PT_HTTP_STATUS_PROXY_AUTH_REQ", "HTTP 407 - proxy authentication is required."],
358
+ "0x8024401C": ["WU_E_PT_HTTP_STATUS_REQUEST_TIMEOUT", "HTTP 408 - the server timed out waiting for the request."],
359
+ "0x8024401D": [
360
+ "WU_E_PT_HTTP_STATUS_CONFLICT",
361
+ "HTTP 409 - the request was not completed due to a conflict with the current state of the resource.",
362
+ ],
363
+ "0x8024401E": ["WU_E_PT_HTTP_STATUS_GONE", "HTTP 410 - requested resource is no longer available at the server."],
364
+ "0x8024401F": [
365
+ "WU_E_PT_HTTP_STATUS_SERVER_ERROR",
366
+ "HTTP 500 - an error internal to the server prevented fulfilling the request.",
367
+ ],
368
+ "0x80244020": [
369
+ "WU_E_PT_HTTP_STATUS_NOT_SUPPORTED",
370
+ "HTTP 501 - server does not support the functionality required to fulfill the request.",
371
+ ],
372
+ "0x80244021": [
373
+ "WU_E_PT_HTTP_STATUS_BAD_GATEWAY",
374
+ "HTTP 502 - the server, while acting as a gateway or proxy, received an invalid response from the upstream "
375
+ "server it accessed in attempting to fulfill the request.",
376
+ ],
377
+ "0x80244022": ["WU_E_PT_HTTP_STATUS_SERVICE_UNAVAIL", "HTTP 503 - the service is temporarily overloaded."],
378
+ "0x80244023": [
379
+ "WU_E_PT_HTTP_STATUS_GATEWAY_TIMEOUT",
380
+ "HTTP 504 - the request was timed out waiting for a gateway.",
381
+ ],
382
+ "0x80244024": [
383
+ "WU_E_PT_HTTP_STATUS_VERSION_NOT_SUP",
384
+ "HTTP 505 - the server does not support the HTTP protocol version used for the request.",
385
+ ],
386
+ "0x80244025": [
387
+ "WU_E_PT_FILE_LOCATIONS_CHANGED",
388
+ "Operation failed due to a changed file location; refresh internal state and resend.",
389
+ ],
390
+ "0x80244026": [
391
+ "WU_E_PT_REGISTRATION_NOT_SUPPORTED",
392
+ "Operation failed because Windows Update Agent does not support registration with a non-WSUS server.",
393
+ ],
394
+ "0x80244027": [
395
+ "WU_E_PT_NO_AUTH_PLUGINS_REQUESTED",
396
+ "The server returned an empty authentication information list.",
397
+ ],
398
+ "0x80244028": [
399
+ "WU_E_PT_NO_AUTH_COOKIES_CREATED",
400
+ "Windows Update Agent was unable to create any valid authentication cookies.",
401
+ ],
402
+ "0x80244029": ["WU_E_PT_INVALID_CONFIG_PROP", "A configuration property value was wrong."],
403
+ "0x8024402A": ["WU_E_PT_CONFIG_PROP_MISSING", "A configuration property value was missing."],
404
+ "0x8024402B": [
405
+ "WU_E_PT_HTTP_STATUS_NOT_MAPPED",
406
+ "The HTTP request could not be completed and the reason did not correspond to any of the WU_E_PT_HTTP_* error "
407
+ "codes.",
408
+ ],
409
+ "0x8024402C": [
410
+ "WU_E_PT_WINHTTP_NAME_NOT_RESOLVED",
411
+ "ERROR_WINHTTP_NAME_NOT_RESOLVED - the proxy server or target server name cannot be resolved.",
412
+ ],
413
+ "0x8024402F": ["WU_E_PT_ECP_SUCCEEDED_WITH_ERRORS", "External cab file processing completed with some errors."],
414
+ "0x80244030": ["WU_E_PT_ECP_INIT_FAILED", "The external cab processor initialization did not complete."],
415
+ "0x80244031": ["WU_E_PT_ECP_INVALID_FILE_FORMAT", "The format of a metadata file was invalid."],
416
+ "0x80244032": ["WU_E_PT_ECP_INVALID_METADATA", "External cab processor found invalid metadata."],
417
+ "0x80244033": [
418
+ "WU_E_PT_ECP_FAILURE_TO_EXTRACT_DIGEST",
419
+ "The file digest could not be extracted from an external cab file.",
420
+ ],
421
+ "0x80244034": ["WU_E_PT_ECP_FAILURE_TO_DECOMPRESS_CAB_FILE", "An external cab file could not be decompressed."],
422
+ "0x80244035": ["WU_E_PT_ECP_FILE_LOCATION_ERROR", "External cab processor was unable to get file locations."],
423
+ "0x80244FFF": ["WU_E_PT_UNEXPECTED", "A communication error not covered by another WU_E_PT_* error code"],
424
+ "0x8024502D": [
425
+ "WU_E_PT_SAME_REDIR_ID",
426
+ "Windows Update Agent failed to download a redirector cabinet file with a new redirector ID value from the "
427
+ "server during the recovery.",
428
+ ],
429
+ "0x8024502E": [
430
+ "WU_E_PT_NO_MANAGED_RECOVER",
431
+ "A redirector recovery action did not complete because the server is managed.",
432
+ ],
433
+ "0x80246001": [
434
+ "WU_E_DM_URLNOTAVAILABLE",
435
+ "A download manager operation could not be completed because the requested file does not have a URL.",
436
+ ],
437
+ "0x80246002": [
438
+ "WU_E_DM_INCORRECTFILEHASH",
439
+ "A download manager operation could not be completed because the file digest was not recognized.",
440
+ ],
441
+ "0x80246003": [
442
+ "WU_E_DM_UNKNOWNALGORITHM",
443
+ "A download manager operation could not be completed because the file metadata requested an unrecognized hash "
444
+ "algorithm.",
445
+ ],
446
+ "0x80246004": [
447
+ "WU_E_DM_NEEDDOWNLOADREQUEST",
448
+ "An operation could not be completed because a download request is required from the download handler.",
449
+ ],
450
+ "0x80246005": [
451
+ "WU_E_DM_NONETWORK",
452
+ "A download manager operation could not be completed because the network connection was unavailable.",
453
+ ],
454
+ "0x80246006": [
455
+ "WU_E_DM_WRONGBITSVERSION",
456
+ "A download manager operation could not be completed because the version of Background Intelligent Transfer "
457
+ "Service (BITS) is incompatible.",
458
+ ],
459
+ "0x80246007": ["WU_E_DM_NOTDOWNLOADED", "The update has not been downloaded."],
460
+ "0x80246008": [
461
+ "WU_E_DM_FAILTOCONNECTTOBITS",
462
+ "A download manager operation failed because the download manager was unable to connect the Background "
463
+ "Intelligent Transfer Service (BITS).",
464
+ ],
465
+ "0x80246009": [
466
+ "WU_E_DM_BITSTRANSFERERROR",
467
+ "A download manager operation failed because there was an unspecified Background Intelligent Transfer Service "
468
+ "(BITS) transfer error.",
469
+ ],
470
+ "0x8024600A": [
471
+ "WU_E_DM_DOWNLOADLOCATIONCHANGED",
472
+ "A download must be restarted because the location of the source of the download has changed.",
473
+ ],
474
+ "0x8024600B": [
475
+ "WU_E_DM_CONTENTCHANGED",
476
+ "A download must be restarted because the update content changed in a new revision.",
477
+ ],
478
+ "0x80246FFF": [
479
+ "WU_E_DM_UNEXPECTED",
480
+ "There was a download manager error not covered by another WU_E_DM_* error code.",
481
+ ],
482
+ "0x80242000": [
483
+ "WU_E_UH_REMOTEUNAVAILABLE",
484
+ "A request for a remote update handler could not be completed because no remote process is available.",
485
+ ],
486
+ "0x80242001": [
487
+ "WU_E_UH_LOCALONLY",
488
+ "A request for a remote update handler could not be completed because the handler is local only.",
489
+ ],
490
+ "0x80242002": [
491
+ "WU_E_UH_UNKNOWNHANDLER",
492
+ "A request for an update handler could not be completed because the handler could not be recognized.",
493
+ ],
494
+ "0x80242003": [
495
+ "WU_E_UH_REMOTEALREADYACTIVE",
496
+ "A remote update handler could not be created because one already exists.",
497
+ ],
498
+ "0x80242004": [
499
+ "WU_E_UH_DOESNOTSUPPORTACTION",
500
+ "A request for the handler to install (uninstall) an update could not be completed because the update does not "
501
+ "support install (uninstall).",
502
+ ],
503
+ "0x80242005": ["WU_E_UH_WRONGHANDLER", "An operation did not complete because the wrong handler was specified."],
504
+ "0x80242006": [
505
+ "WU_E_UH_INVALIDMETADATA",
506
+ "A handler operation could not be completed because the update contains invalid metadata.",
507
+ ],
508
+ "0x80242007": [
509
+ "WU_E_UH_INSTALLERHUNG",
510
+ "An operation could not be completed because the installer exceeded the time limit.",
511
+ ],
512
+ "0x80242008": ["WU_E_UH_OPERATIONCANCELLED", "An operation being done by the update handler was cancelled."],
513
+ "0x80242009": [
514
+ "WU_E_UH_BADHANDLERXML",
515
+ "An operation could not be completed because the handler-specific metadata is invalid.",
516
+ ],
517
+ "0x8024200A": [
518
+ "WU_E_UH_CANREQUIREINPUT",
519
+ "A request to the handler to install an update could not be completed because the update requires user input.",
520
+ ],
521
+ "0x8024200B": ["WU_E_UH_INSTALLERFAILURE", "The installer failed to install (uninstall) one or more updates."],
522
+ "0x8024200C": [
523
+ "WU_E_UH_FALLBACKTOSELFCONTAINED",
524
+ "The update handler should download self-contained content rather than delta-compressed content for the "
525
+ "update.",
526
+ ],
527
+ "0x8024200D": [
528
+ "WU_E_UH_NEEDANOTHERDOWNLOAD",
529
+ "The update handler did not install the update because it needs to be downloaded again.",
530
+ ],
531
+ "0x8024200E": [
532
+ "WU_E_UH_NOTIFYFAILURE",
533
+ "The update handler failed to send notification of the status of the install (uninstall) operation.",
534
+ ],
535
+ "0x8024200F": [
536
+ "WU_E_UH_INCONSISTENT_FILE_NAMES",
537
+ "The file names contained in the update metadata and in the update package are inconsistent.",
538
+ ],
539
+ "0x80242010": ["WU_E_UH_FALLBACKERROR", "The update handler failed to fall back to the self-contained content."],
540
+ "0x80242011": [
541
+ "WU_E_UH_TOOMANYDOWNLOADREQUESTS",
542
+ "The update handler has exceeded the maximum number of download requests.",
543
+ ],
544
+ "0x80242012": ["WU_E_UH_UNEXPECTEDCBSRESPONSE", "The update handler has received an unexpected response from CBS."],
545
+ "0x80242013": ["WU_E_UH_BADCBSPACKAGEID", "The update metadata contains an invalid CBS package identifier."],
546
+ "0x80242014": ["WU_E_UH_POSTREBOOTSTILLPENDING", "The post-reboot operation for the update is still in progress."],
547
+ "0x80242015": [
548
+ "WU_E_UH_POSTREBOOTRESULTUNKNOWN",
549
+ "The result of the post-reboot operation for the update could not be determined.",
550
+ ],
551
+ "0x80242016": [
552
+ "WU_E_UH_POSTREBOOTUNEXPECTEDSTATE",
553
+ "The state of the update after its post-reboot operation has completed is unexpected.",
554
+ ],
555
+ "0x80242017": [
556
+ "WU_E_UH_NEW_SERVICING_STACK_REQUIRED",
557
+ "The operating system servicing stack must be updated before this update is downloaded or installed.",
558
+ ],
559
+ "0x80242FFF": ["WU_E_UH_UNEXPECTED", "An update handler error not covered by another WU_E_UH_* code."],
560
+ "0x80248000": ["WU_E_DS_SHUTDOWN", "An operation failed because Windows Update Agent is shutting down."],
561
+ "0x80248001": ["WU_E_DS_INUSE", "An operation failed because the data store was in use."],
562
+ "0x80248002": ["WU_E_DS_INVALID", "The current and expected states of the data store do not match."],
563
+ "0x80248003": ["WU_E_DS_TABLEMISSING", "The data store is missing a table."],
564
+ "0x80248004": ["WU_E_DS_TABLEINCORRECT", "The data store contains a table with unexpected columns."],
565
+ "0x80248005": [
566
+ "WU_E_DS_INVALIDTABLENAME",
567
+ "A table could not be opened because the table is not in the data store.",
568
+ ],
569
+ "0x80248006": ["WU_E_DS_BADVERSION", "The current and expected versions of the data store do not match."],
570
+ "0x80248007": ["WU_E_DS_NODATA", "The information requested is not in the data store."],
571
+ "0x80248008": [
572
+ "WU_E_DS_MISSINGDATA",
573
+ "The data store is missing required information or has a NULL in a table column that requires a non-null "
574
+ "value.",
575
+ ],
576
+ "0x80248009": [
577
+ "WU_E_DS_MISSINGREF",
578
+ "The data store is missing required information or has a reference to missing license terms, file, localized "
579
+ "property or linked row.",
580
+ ],
581
+ "0x8024800A": [
582
+ "WU_E_DS_UNKNOWNHANDLER",
583
+ "The update was not processed because its update handler could not be recognized.",
584
+ ],
585
+ "0x8024800B": [
586
+ "WU_E_DS_CANTDELETE",
587
+ "The update was not deleted because it is still referenced by one or more services.",
588
+ ],
589
+ "0x8024800C": [
590
+ "WU_E_DS_LOCKTIMEOUTEXPIRED",
591
+ "The data store section could not be locked within the allotted time.",
592
+ ],
593
+ "0x8024800D": [
594
+ "WU_E_DS_NOCATEGORIES",
595
+ "The category was not added because it contains no parent categories and is not a top-level category itself.",
596
+ ],
597
+ "0x8024800E": ["WU_E_DS_ROWEXISTS", "The row was not added because an existing row has the same primary key."],
598
+ "0x8024800F": [
599
+ "WU_E_DS_STOREFILELOCKED",
600
+ "The data store could not be initialized because it was locked by another process.",
601
+ ],
602
+ "0x80248010": [
603
+ "WU_E_DS_CANNOTREGISTER",
604
+ "The data store is not allowed to be registered with COM in the current process.",
605
+ ],
606
+ "0x80248011": ["WU_E_DS_UNABLETOSTART", "Could not create a data store object in another process."],
607
+ "0x80248013": [
608
+ "WU_E_DS_DUPLICATEUPDATEID",
609
+ "The server sent the same update to the client with two different revision IDs.",
610
+ ],
611
+ "0x80248014": [
612
+ "WU_E_DS_UNKNOWNSERVICE",
613
+ "An operation did not complete because the service is not in the data store.",
614
+ ],
615
+ "0x80248015": [
616
+ "WU_E_DS_SERVICEEXPIRED",
617
+ "An operation did not complete because the registration of the service has expired.",
618
+ ],
619
+ "0x80248016": [
620
+ "WU_E_DS_DECLINENOTALLOWED",
621
+ "A request to hide an update was declined because it is a mandatory update or because it was deployed with a "
622
+ "deadline.",
623
+ ],
624
+ "0x80248017": [
625
+ "WU_E_DS_TABLESESSIONMISMATCH",
626
+ "A table was not closed because it is not associated with the session.",
627
+ ],
628
+ "0x80248018": [
629
+ "WU_E_DS_SESSIONLOCKMISMATCH",
630
+ "A table was not closed because it is not associated with the session.",
631
+ ],
632
+ "0x80248019": [
633
+ "WU_E_DS_NEEDWINDOWSSERVICE",
634
+ "A request to remove the Windows Update service or to unregister it with Automatic Updates was declined "
635
+ "because it is a built-in service and/or Automatic Updates cannot fall back to another service.",
636
+ ],
637
+ "0x8024801A": ["WU_E_DS_INVALIDOPERATION", "A request was declined because the operation is not allowed."],
638
+ "0x8024801B": [
639
+ "WU_E_DS_SCHEMAMISMATCH",
640
+ "The schema of the current data store and the schema of a table in a backup XML document do not match.",
641
+ ],
642
+ "0x8024801C": [
643
+ "WU_E_DS_RESETREQUIRED",
644
+ "The data store requires a session reset; release the session and retry with a new session.",
645
+ ],
646
+ "0x8024801D": [
647
+ "WU_E_DS_IMPERSONATED",
648
+ "A data store operation did not complete because it was requested with an impersonated identity.",
649
+ ],
650
+ "0x80248FFF": ["WU_E_DS_UNEXPECTED", "A data store error not covered by another WU_E_DS_* code."],
651
+ "0x8024C001": ["WU_E_DRV_PRUNED", "A driver was skipped."],
652
+ "0x8024C002": [
653
+ "WU_E_DRV_NOPROP_OR_LEGACY",
654
+ "A property for the driver could not be found. It may not conform with required specifications.",
655
+ ],
656
+ "0x8024C003": ["WU_E_DRV_REG_MISMATCH", "The registry type read for the driver does not match the expected type."],
657
+ "0x8024C004": ["WU_E_DRV_NO_METADATA", "The driver update is missing metadata."],
658
+ "0x8024C005": ["WU_E_DRV_MISSING_ATTRIBUTE", "The driver update is missing a required attribute."],
659
+ "0x8024C006": ["WU_E_DRV_SYNC_FAILED", "Driver synchronization failed."],
660
+ "0x8024C007": [
661
+ "WU_E_DRV_NO_PRINTER_CONTENT",
662
+ "Information required for the synchronization of applicable printers is missing.",
663
+ ],
664
+ "0x8024CFFF": ["WU_E_DRV_UNEXPECTED", "A driver error not covered by another WU_E_DRV_* code."],
665
+ "0x80240001": ["WU_E_NO_SERVICE", "Windows Update Agent was unable to provide the service."],
666
+ "0x80240002": ["WU_E_MAX_CAPACITY_REACHED", "The maximum capacity of the service was exceeded."],
667
+ "0x80240003": ["WU_E_UNKNOWN_ID", "An ID cannot be found."],
668
+ "0x80240004": ["WU_E_NOT_INITIALIZED", "The object could not be initialized."],
669
+ "0x80240005": [
670
+ "WU_E_RANGEOVERLAP",
671
+ "The update handler requested a byte range overlapping a previously requested range.",
672
+ ],
673
+ "0x80240006": ["WU_E_TOOMANYRANGES", "The requested number of byte ranges exceeds the maximum number (2^31 - 1)."],
674
+ "0x80240007": ["WU_E_INVALIDINDEX", "The index to a collection was invalid."],
675
+ "0x80240008": ["WU_E_ITEMNOTFOUND", "The key for the item queried could not be found."],
676
+ "0x80240009": [
677
+ "WU_E_OPERATIONINPROGRESS",
678
+ "Another conflicting operation was in progress. Some operations such as installation cannot be performed twice "
679
+ "simultaneously.",
680
+ ],
681
+ "0x8024000A": ["WU_E_COULDNOTCANCEL", "Cancellation of the operation was not allowed."],
682
+ "0x8024000B": ["WU_E_CALL_CANCELLED", "Operation was cancelled."],
683
+ "0x8024000C": ["WU_E_NOOP", "No operation was required."],
684
+ "0x8024000D": [
685
+ "WU_E_XML_MISSINGDATA",
686
+ "Windows Update Agent could not find required information in the update's XML data.",
687
+ ],
688
+ "0x8024000E": ["WU_E_XML_INVALID", "Windows Update Agent found invalid information in the update's XML data."],
689
+ "0x8024000F": ["WU_E_CYCLE_DETECTED", "Circular update relationships were detected in the metadata."],
690
+ "0x80240010": ["WU_E_TOO_DEEP_RELATION", "Update relationships too deep to evaluate were evaluated."],
691
+ "0x80240011": ["WU_E_INVALID_RELATIONSHIP", "An invalid update relationship was detected."],
692
+ "0x80240012": ["WU_E_REG_VALUE_INVALID", "An invalid registry value was read."],
693
+ "0x80240013": ["WU_E_DUPLICATE_ITEM", "Operation tried to add a duplicate item to a list."],
694
+ "0x80240016": [
695
+ "WU_E_INSTALL_NOT_ALLOWED",
696
+ "Operation tried to install while another installation was in progress or the system was pending a mandatory "
697
+ "restart.",
698
+ ],
699
+ "0x80240017": ["WU_E_NOT_APPLICABLE", "Operation was not performed because there are no applicable updates."],
700
+ "0x80240018": ["WU_E_NO_USERTOKEN", "Operation failed because a required user token is missing."],
701
+ "0x80240019": [
702
+ "WU_E_EXCLUSIVE_INSTALL_CONFLICT",
703
+ "An exclusive update cannot be installed with other updates at the same time.",
704
+ ],
705
+ "0x8024001A": ["WU_E_POLICY_NOT_SET", "A policy value was not set."],
706
+ "0x8024001B": [
707
+ "WU_E_SELFUPDATE_IN_PROGRESS",
708
+ "The operation could not be performed because the Windows Update Agent is self-updating.",
709
+ ],
710
+ "0x8024001D": ["WU_E_INVALID_UPDATE", "An update contains invalid metadata."],
711
+ "0x8024001E": [
712
+ "WU_E_SERVICE_STOP",
713
+ "Operation did not complete because the service or system was being shut down.",
714
+ ],
715
+ "0x8024001F": ["WU_E_NO_CONNECTION", "Operation did not complete because the network connection was unavailable."],
716
+ "0x80240020": [
717
+ "WU_E_NO_INTERACTIVE_USER",
718
+ "Operation did not complete because there is no logged-on interactive user.",
719
+ ],
720
+ "0x80240021": ["WU_E_TIME_OUT", "Operation did not complete because it timed out."],
721
+ "0x80240022": ["WU_E_ALL_UPDATES_FAILED", "Operation failed for all the updates."],
722
+ "0x80240023": ["WU_E_EULAS_DECLINED", "The license terms for all updates were declined."],
723
+ "0x80240024": ["WU_E_NO_UPDATE", "There are no updates."],
724
+ "0x80240025": ["WU_E_USER_ACCESS_DISABLED", "Group Policy settings prevented access to Windows Update."],
725
+ "0x80240026": ["WU_E_INVALID_UPDATE_TYPE", "The type of update is invalid."],
726
+ "0x80240027": ["WU_E_URL_TOO_LONG", "The URL exceeded the maximum length."],
727
+ "0x80240028": [
728
+ "WU_E_UNINSTALL_NOT_ALLOWED",
729
+ "The update could not be uninstalled because the request did not originate from a WSUS server.",
730
+ ],
731
+ "0x80240029": [
732
+ "WU_E_INVALID_PRODUCT_LICENSE",
733
+ "Search may have missed some updates before there is an unlicensed application on the system.",
734
+ ],
735
+ "0x8024002A": ["WU_E_MISSING_HANDLER", "A component required to detect applicable updates was missing."],
736
+ "0x8024002B": ["WU_E_LEGACYSERVER", "An operation did not complete because it requires a newer version of server."],
737
+ "0x8024002C": [
738
+ "WU_E_BIN_SOURCE_ABSENT",
739
+ "A delta-compressed update could not be installed because it required the source.",
740
+ ],
741
+ "0x8024002D": ["WU_E_SOURCE_ABSENT", "A full-file update could not be installed because it required the source."],
742
+ "0x8024002E": ["WU_E_WU_DISABLED", "Access to an unmanaged server is not allowed."],
743
+ "0x8024002F": [
744
+ "WU_E_CALL_CANCELLED_BY_POLICY",
745
+ "Operation did not complete because the DisableWindowsUpdateAccess policy was set.",
746
+ ],
747
+ "0x80240030": ["WU_E_INVALID_PROXY_SERVER", "The format of the proxy list was invalid."],
748
+ "0x80240031": ["WU_E_INVALID_FILE", "The file is in the wrong format."],
749
+ "0x80240032": ["WU_E_INVALID_CRITERIA", "The search criteria string was invalid."],
750
+ "0x80240033": ["WU_E_EULA_UNAVAILABLE", "License terms could not be downloaded."],
751
+ "0x80240034": ["WU_E_DOWNLOAD_FAILED", "Update failed to download."],
752
+ "0x80240035": ["WU_E_UPDATE_NOT_PROCESSED", "The update was not processed."],
753
+ "0x80240036": ["WU_E_INVALID_OPERATION", "The object's current state did not allow the operation."],
754
+ "0x80240037": ["WU_E_NOT_SUPPORTED", "The functionality for the operation is not supported."],
755
+ "0x80240038": ["WU_E_WINHTTP_INVALID_FILE", "The downloaded file has an unexpected content type."],
756
+ "0x80240039": ["WU_E_TOO_MANY_RESYNC", "Agent is asked by server to resync too many times."],
757
+ "0x80240040": ["WU_E_NO_SERVER_CORE_SUPPORT", "WUA API method does not run on Server Core installation."],
758
+ "0x80240041": ["WU_E_SYSPREP_IN_PROGRESS", "Service is not available while sysprep is running."],
759
+ "0x80240042": ["WU_E_UNKNOWN_SERVICE", "The update service is no longer registered with AU."],
760
+ "0x80240043": ["WU_E_NO_UI_SUPPORT", "There's no support for WUA UI."],
761
+ "0x80240FFF": ["WU_E_UNEXPECTED", "An operation failed due to reasons not covered by another error code."],
762
+ "0x80070422": ["NA", "This issue occurs when the Windows Update service stops working or isn't running."],
763
+ "0x00240001": ["WU_S_SERVICE_STOP", "Windows Update Agent was stopped successfully."],
764
+ "0x00240002": ["WU_S_SELFUPDATE", "Windows Update Agent updated itself."],
765
+ "0x00240003": ["WU_S_UPDATE_ERROR", "Operation completed successfully but there were errors applying the updates."],
766
+ "0x00240004": [
767
+ "WU_S_MARKED_FOR_DISCONNECT",
768
+ "A callback was marked to be disconnected later because the request to disconnect the operation came while a "
769
+ "callback was executing.",
770
+ ],
771
+ "0x00240005": ["WU_S_REBOOT_REQUIRED", "The system must be restarted to complete installation of the update."],
772
+ "0x00240006": ["WU_S_ALREADY_INSTALLED", "The update to be installed is already installed on the system."],
773
+ "0x00240007": ["WU_S_ALREADY_UNINSTALLED", "The update to be removed isn't installed on the system."],
774
+ "0x00240008": ["WU_S_ALREADY_DOWNLOADED", "The update to be downloaded has already been downloaded."],
775
+ "0x80241001": [
776
+ "WU_E_MSI_WRONG_VERSION",
777
+ "Search may have missed some updates because the Windows Installer is less than version 3.1.",
778
+ ],
779
+ "0x80241002": [
780
+ "WU_E_MSI_NOT_CONFIGURED",
781
+ "Search may have missed some updates because the Windows Installer is not configured.",
782
+ ],
783
+ "0x80241003": [
784
+ "WU_E_MSP_DISABLED",
785
+ "Search may have missed some updates because policy has disabled Windows Installer patching.",
786
+ ],
787
+ "0x80241004": [
788
+ "WU_E_MSI_WRONG_APP_CONTEXT",
789
+ "An update could not be applied because the application is installed per-user.",
790
+ ],
791
+ "0x80241FFF": [
792
+ "WU_E_MSP_UNEXPECTED",
793
+ "Search may have missed some updates because there was a failure of the Windows Installer.",
794
+ ],
795
+ "0x8024D001": [
796
+ "WU_E_SETUP_INVALID_INFDATA",
797
+ "Windows Update Agent could not be updated because an INF file contains invalid information.",
798
+ ],
799
+ "0x8024D002": [
800
+ "WU_E_SETUP_INVALID_IDENTDATA",
801
+ "Windows Update Agent could not be updated because the wuident.cab file contains invalid information.",
802
+ ],
803
+ "0x8024D003": [
804
+ "WU_E_SETUP_ALREADY_INITIALIZED",
805
+ "Windows Update Agent could not be updated because of an internal error that caused setup initialization to be "
806
+ "performed twice.",
807
+ ],
808
+ "0x8024D004": [
809
+ "WU_E_SETUP_NOT_INITIALIZED",
810
+ "Windows Update Agent could not be updated because setup initialization never completed successfully.",
811
+ ],
812
+ "0x8024D005": [
813
+ "WU_E_SETUP_SOURCE_VERSION_MISMATCH",
814
+ "Windows Update Agent could not be updated because the versions specified in the INF do not match the actual "
815
+ "source file versions.",
816
+ ],
817
+ "0x8024D006": [
818
+ "WU_E_SETUP_TARGET_VERSION_GREATER",
819
+ "Windows Update Agent could not be updated because a WUA file on the target system is newer than the "
820
+ "corresponding source file.",
821
+ ],
822
+ "0x8024D007": [
823
+ "WU_E_SETUP_REGISTRATION_FAILED",
824
+ "Windows Update Agent could not be updated because regsvr32.exe returned an error.",
825
+ ],
826
+ "0x8024D009": [
827
+ "WU_E_SETUP_SKIP_UPDATE",
828
+ "An update to the Windows Update Agent was skipped due to a directive in the wuident.cab file.",
829
+ ],
830
+ "0x8024D00A": [
831
+ "WU_E_SETUP_UNSUPPORTED_CONFIGURATION",
832
+ "Windows Update Agent could not be updated because the current system configuration is not supported.",
833
+ ],
834
+ "0x8024D00B": [
835
+ "WU_E_SETUP_BLOCKED_CONFIGURATION",
836
+ "Windows Update Agent could not be updated because the system is configured to block the update.",
837
+ ],
838
+ "0x8024D00C": [
839
+ "WU_E_SETUP_REBOOT_TO_FIX",
840
+ "Windows Update Agent could not be updated because a restart of the system is required.",
841
+ ],
842
+ "0x8024D00D": ["WU_E_SETUP_ALREADYRUNNING", "Windows Update Agent setup is already running."],
843
+ "0x8024D00E": [
844
+ "WU_E_SETUP_REBOOTREQUIRED",
845
+ "Windows Update Agent setup package requires a reboot to complete installation.",
846
+ ],
847
+ "0x8024D00F": [
848
+ "WU_E_SETUP_HANDLER_EXEC_FAILURE",
849
+ "Windows Update Agent could not be updated because the setup handler failed during execution.",
850
+ ],
851
+ "0x8024D010": [
852
+ "WU_E_SETUP_INVALID_REGISTRY_DATA",
853
+ "Windows Update Agent could not be updated because the registry contains invalid information.",
854
+ ],
855
+ "0x8024D013": [
856
+ "WU_E_SETUP_WRONG_SERVER_VERSION",
857
+ "Windows Update Agent could not be updated because the server does not contain update information for this "
858
+ "version.",
859
+ ],
860
+ "0x8024DFFF": [
861
+ "WU_E_SETUP_UNEXPECTED",
862
+ "Windows Update Agent could not be updated because of an error not covered by another WU_E_SETUP_* error code.",
863
+ ],
864
+ "0x80070BC9": [
865
+ "ERROR_FAIL_REBOOT_REQUIRED",
866
+ "The requested operation failed. Restart the system to roll back changes made.",
867
+ ],
868
+ "0x80200053": ["BG_E_VALIDATION_FAILED", "NA"],
869
+ "0x80072EFD": ["TIME_OUT_ERRORS", "The operation timed out"],
870
+ "0x80072EFE": [
871
+ "WININET_E_CONNECTION_ABORTED; The connection with the server was closed abnormally",
872
+ "BITS is unable to transfer the file successfully.",
873
+ ],
874
+ "0x80D02002": ["TIME_OUT_ERRORS", "The operation timed out"],
875
+ "0X8007000D": ["ERROR_INVALID_DATA", "Indicates data that isn't valid was downloaded or corruption occurred."],
876
+ "0x8024A10A": ["USO_E_SERVICE_SHUTTING_DOWN", "Indicates that the Windows Update Service is shutting down."],
877
+ "0x80246017": [
878
+ "WU_E_DM_UNAUTHORIZED_LOCAL_USER",
879
+ "The download failed because the local user was denied authorization to download the content.",
880
+ ],
881
+ "0x800f0821": [
882
+ "CBS_E_ABORT; client abort, IDABORT returned by ICbsUIHandler method except Error()",
883
+ "CBS transaction timeout exceeded.",
884
+ ],
885
+ "0x800f0825": [
886
+ "CBS_E_CANNOT_UNINSTALL; Package can't be uninstalled.",
887
+ "Typically this error is due component store corruption caused when a component is in a partially installed "
888
+ "state.",
889
+ ],
890
+ "0x800F0920": [
891
+ "CBS_E_HANG_DETECTED; A failure to respond was detected while processing the operation.",
892
+ "Subsequent error logged after getting 0x800f0821",
893
+ ],
894
+ "0x800f081f": [
895
+ "CBS_E_SOURCE_MISSING; source for package or file not found, ResolveSource() unsuccessful",
896
+ "Component Store corruption",
897
+ ],
898
+ "0x800f0831": ["CBS_E_STORE_CORRUPTION; CBS store is corrupted.", "Corruption in the Windows Component Store."],
899
+ "0x80070005": [
900
+ "E_ACCESSDENIED; General access denied error",
901
+ "File system or registry key permissions have been changed and the servicing stack doesn't have the required "
902
+ "level of access.",
903
+ ],
904
+ "0x80070003": [
905
+ "ERROR_PATH_NOT_FOUND; The system can't find the path specified.",
906
+ "The servicing stack can't access a specific path.",
907
+ ],
908
+ "0x80073701": [
909
+ "ERROR_SXS_ASSEMBLY_MISSING; The referenced assembly couldn't be found.",
910
+ "Typically, a component store corruption caused when a component is in a partially installed state.",
911
+ ],
912
+ "0x80072F8F": [
913
+ "WININET_E_DECODING_FAILED; Content decoding has failed",
914
+ "TLS 1.2 isn't configured correctly on the client.",
915
+ ],
916
+ "0x80072EE2": [
917
+ "WININET_E_TIMEOUT; The operation timed out",
918
+ "Unable to scan for updates due to a connectivity issue to Windows Update, Configuration Manager, or WSUS.",
919
+ ],
920
+ "0x80070490": ["ERROR_NOT_FOUND", "This error occurs during driver installation as part of the update."],
921
+ "0x800f0922": [
922
+ "CBS_E_INSTALLERS_FAILED",
923
+ "The July cumulative update failed to be installed on Windows Server 2016",
924
+ ],
925
+ "0x80070bc9": [
926
+ "ERROR_FAIL_REBOOT_REQUIRED",
927
+ "The TrustedInstaller service startup type is set to 'Manual' by Group Policy (GPO), which prevented it from "
928
+ "starting to complete pending operations.",
929
+ ],
930
+ "0x800706be": [
931
+ "Failed to install cumulative updates",
932
+ "Windows Server 2016 Std failed to install cumulative packages by using the .msu package. No error is "
933
+ "returned. When installing the packages with dism.exe, it returned the error 0x800706be.",
934
+ ],
935
+ }
936
+
937
+
938
+ class WuaHistoryPlugin(Plugin):
939
+ """Plugin to return all available historical Windows Update Agent operations stored in the DataStore.edb."""
940
+
941
+ DATASTORE_PATH = "sysvol/windows/softwaredistribution/datastore/datastore.edb"
942
+ DATASTORE_UPDATE_TABLE = "tbHistory"
943
+
944
+ def __init__(self, target):
945
+ super().__init__(target)
946
+
947
+ self._datastore = None
948
+ self._update_table = None
949
+
950
+ if (path := target.fs.path(self.DATASTORE_PATH)).exists():
951
+ try:
952
+ self._datastore = EseDB(path.open())
953
+ self._update_table = self._datastore.table(self.DATASTORE_UPDATE_TABLE)
954
+ except Exception as e:
955
+ self.target.log.warning("Error opening Windows Update Agent datastore.", exc_info=e)
956
+
957
+ def check_compatible(self) -> None:
958
+ if not self._datastore or not self._update_table:
959
+ raise UnsupportedPluginError("No Windows Update Agent data found.")
960
+
961
+ def get_table_records(self) -> Iterator[dict[str, str | int | datetime]]:
962
+ for record in self._update_table.records():
963
+ record_data = {}
964
+ for column in self._update_table.columns:
965
+ column_value = record.get(column.name)
966
+
967
+ if mapped_column_name := TBHISTORY_COLUMN_MAP.get(column.name):
968
+ if mapped_column_name in "unmapped_result":
969
+ column_value = hex(int(column_value) & 0xFFFFFFFF)
970
+
971
+ info = WUA_CODE_MAP.get(column_value, ["Unknown", "Unknown"])
972
+ record_data[f"{mapped_column_name}_description"] = info[0]
973
+ record_data[f"{mapped_column_name}_string"] = info[1]
974
+
975
+ record_data.update(self._format_record_value(mapped_column_name, column_value))
976
+
977
+ yield record_data
978
+
979
+ @export(record=WuaHistoryRecord)
980
+ def wua_history(self) -> Iterator[WuaHistoryRecord]:
981
+ """Returns all available historical Windows Update Agent operations stored in the DataStore.edb.
982
+
983
+ The Windows Update Agent (WUA) stores information of its operations in a DataStore.edb file.
984
+ Historical data of these operations, successful or failed performed patches, are stored in the 'tbHistory' table
985
+ of this database. The plugin extracts all rows of this table. For certain columns of the table the extracted
986
+ data is mapped to publicly available enumerations to provide more meaningful information.
987
+
988
+ With this plugin you should be able to ascertain the patch level of systems, and it may aid you into
989
+ finding why a system was generating a lot of other types of events in a certain time period.
990
+
991
+ References:
992
+ - https://learn.microsoft.com/en-us/windows/deployment/update/how-windows-update-works
993
+ - https://learn.microsoft.com/en-us/windows/win32/api/wuapi/nn-wuapi-iupdatehistoryentry
994
+ - https://learn.microsoft.com/en-us/windows/deployment/update/windows-update-error-reference
995
+ - https://learn.microsoft.com/en-us/troubleshoot/windows-client/installing-updates-features-roles/common-windows-update-errors
996
+ - https://learn.microsoft.com/en-us/troubleshoot/windows-client/installing-updates-features-roles/common-windows-update-errors?context=%2Fwindows%2Fdeployment%2Fcontext%2Fcontext
997
+
998
+ - https://github.com/libyal/esedb-kb/blob/main/documentation/Windows%20Update.asciidoc
999
+ - https://www.nirsoft.net/articles/extract-windows-updates-list-external-drive.html
1000
+
1001
+ Yields a WuaHistoryRecord with fields:
1002
+
1003
+ .. code-block:: text
1004
+
1005
+ ts (datetime): The timestamp (UTC) of when the Windows Update Agent operation was finished.
1006
+ categories (string): Category of the update.
1007
+ classification (string): Unique ID indicating which classification the update has.
1008
+ classification_mapped (string): Mapping of the 'classification' field, giving an understandable classification.
1009
+ client_id (string): Client that initiated the Windows Update Agent operation.
1010
+ description (string): Description of the update.
1011
+ flags (int): Undocumented and unknown.
1012
+ id_event (int): Index number of the Windows Update Agent record in the tbHistory table.
1013
+ kb (string): Another unique ID of the update.
1014
+ status (int): Integer signifying result of operation
1015
+ status_mapped (string): Mapping of the 'status' field.
1016
+ server_selection (int): The update service that was used for the Windows Update Agent operation.
1017
+ server_selection_mapped (string): Mapping of the 'server_selection' field.
1018
+ title (string): Title of the update.
1019
+ mapped_result (string): The mapped result code of an update operation.
1020
+ mapped_result_string (string): Mapping of the 'mapped_result' field, giving the error string.
1021
+ mapped_result_description (string): Mapping of the 'mapped_result' field, giving a description of the error.
1022
+ unmapped_result (string): The unmapped result code of an update operation.
1023
+ unmapped_result_string (string): Mapping of the 'unmapped_result' field, giving the error string.
1024
+ unmapped_result_description (string): Mapping of the 'unmapped_result' field, giving a description of the error.
1025
+ update_id (string): Unique ID of the performed update.
1026
+ server_id (string): Unique ID of the service used for the update operation.
1027
+ server_id_mapped (string): Mapping of the 'server_id' field, indication the service used for the update operation.
1028
+ support_url (string): Support URL of the update.
1029
+ uninstall_notes (string): Uninstall notes of the update.
1030
+ uninstall_steps (string): Uninstall steps of the update.
1031
+ more_info_url (string): Additional informational URLs of the update.
1032
+ path (uri): Path of the datastore containing the Windows Update Agent records.
1033
+ id_user (int): Undocumented and unknown.
1034
+ is_service_is_additional (string): Undocumented and unknown.
1035
+ """ # noqa: E501
1036
+ for record in self.get_table_records():
1037
+ values = {TBHISTORY_COLUMN_MAP.get(key, key): value for key, value in record.items()}
1038
+
1039
+ yield WuaHistoryRecord(
1040
+ **values,
1041
+ path=self.target.fs.path(self.DATASTORE_PATH),
1042
+ _target=self.target,
1043
+ )
1044
+
1045
+ def _format_record_value(self, mapped_column_name: str, value: str) -> dict[str, str | int | datetime]:
1046
+ format_data = {}
1047
+
1048
+ if mapped_column_name == "ts":
1049
+ format_data[mapped_column_name] = oatimestamp(value)
1050
+ elif mapped_column_name == "update_id":
1051
+ format_data[mapped_column_name] = decode_guid(value[:16])
1052
+ elif mapped_column_name == "server_id":
1053
+ guid = decode_guid(value[:16])
1054
+ format_data[mapped_column_name] = guid
1055
+ format_data["server_id_mapped"] = SERVER_ID_MAP.get(guid, "Unknown")
1056
+ elif mapped_column_name == "classification":
1057
+ format_data[mapped_column_name] = value
1058
+ format_data["classification_mapped"] = CLASSIFICATION_MAP.get(value, "Unknown")
1059
+ elif mapped_column_name == "title":
1060
+ format_data[mapped_column_name] = value
1061
+ if kb := re.search(r"(KB.[0-9]*)", value):
1062
+ format_data["kb"] = kb.group()
1063
+ elif mapped_column_name == "status":
1064
+ format_data[mapped_column_name] = value
1065
+ format_data["status_mapped"] = STATUS_MAP.get(value, "Unknown")
1066
+ elif mapped_column_name == "server_selection":
1067
+ key = value - 1
1068
+ format_data[mapped_column_name] = key
1069
+ format_data["server_selection_mapped"] = SERVER_SELECTION_MAP.get(key, "Unknown")
1070
+ else:
1071
+ format_data[mapped_column_name] = value
1072
+
1073
+ return format_data
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dissect.target
3
- Version: 3.19.dev42
3
+ Version: 3.19.dev43
4
4
  Summary: This module ties all other Dissect modules together, it provides a programming API and command line tools which allow easy access to various data sources inside disk images or file collections (a.k.a. targets)
5
5
  Author-email: Dissect Team <dissect@fox-it.com>
6
6
  License: Affero General Public License v3
@@ -287,6 +287,7 @@ dissect/target/plugins/os/windows/tasks.py,sha256=8DRsIAuIJPaH_G18l8RYfnK_WkEqVx
287
287
  dissect/target/plugins/os/windows/thumbcache.py,sha256=23YjOjTNoE7BYITmg8s9Zs8Wih2e73BkJJEaKlfotcI,4133
288
288
  dissect/target/plugins/os/windows/ual.py,sha256=TYF-R46klEa_HHb86UJd6mPrXwHlAMOUTzC0pZ8uiq0,9787
289
289
  dissect/target/plugins/os/windows/wer.py,sha256=ogecvKYxAvDXLptQj4cn0JLn1FxaXjeSuJWs4JgkoZs,8656
290
+ dissect/target/plugins/os/windows/wua_history.py,sha256=GrSmnEbPYUrQzixG5JWElMRBoCrUPnZKpsVIwpfPQfg,54785
290
291
  dissect/target/plugins/os/windows/defender_helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
291
292
  dissect/target/plugins/os/windows/defender_helpers/defender_patterns.py,sha256=xsZH0WqMX_mC1q55jgp4RDHBRh2UQBXZVhJD0DRiwZU,9329
292
293
  dissect/target/plugins/os/windows/defender_helpers/defender_records.py,sha256=_azaY5Y1cH-WPmkA5k94PMktZGYXmWJG8addFQxQ554,5177
@@ -352,10 +353,10 @@ dissect/target/volumes/luks.py,sha256=OmCMsw6rCUXG1_plnLVLTpsvE1n_6WtoRUGQbpmu1z
352
353
  dissect/target/volumes/lvm.py,sha256=wwQVR9I3G9YzmY6UxFsH2Y4MXGBcKL9aayWGCDTiWMU,2269
353
354
  dissect/target/volumes/md.py,sha256=7ShPtusuLGaIv27SvEETtgsuoQyAa4iAAeOR1NEaajI,1689
354
355
  dissect/target/volumes/vmfs.py,sha256=-LoUbn9WNwTtLi_4K34uV_-wDw2W5hgaqxZNj4UmqAQ,1730
355
- dissect.target-3.19.dev42.dist-info/COPYRIGHT,sha256=m-9ih2RVhMiXHI2bf_oNSSgHgkeIvaYRVfKTwFbnJPA,301
356
- dissect.target-3.19.dev42.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
357
- dissect.target-3.19.dev42.dist-info/METADATA,sha256=XF7DS_1vdvBgQLUXWDQ8JfwXd5FAffF06CNgi2LA0DM,12897
358
- dissect.target-3.19.dev42.dist-info/WHEEL,sha256=HiCZjzuy6Dw0hdX5R3LCFPDmFS4BWl8H-8W39XfmgX4,91
359
- dissect.target-3.19.dev42.dist-info/entry_points.txt,sha256=BWuxAb_6AvUAQpIQOQU0IMTlaF6TDht2AIZK8bHd-zE,492
360
- dissect.target-3.19.dev42.dist-info/top_level.txt,sha256=Mn-CQzEYsAbkxrUI0TnplHuXnGVKzxpDw_po_sXpvv4,8
361
- dissect.target-3.19.dev42.dist-info/RECORD,,
356
+ dissect.target-3.19.dev43.dist-info/COPYRIGHT,sha256=m-9ih2RVhMiXHI2bf_oNSSgHgkeIvaYRVfKTwFbnJPA,301
357
+ dissect.target-3.19.dev43.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
358
+ dissect.target-3.19.dev43.dist-info/METADATA,sha256=40QYBthE2QNPlWPP0yCqsNiP-yBtfTFToBFOnJcN4Zo,12897
359
+ dissect.target-3.19.dev43.dist-info/WHEEL,sha256=HiCZjzuy6Dw0hdX5R3LCFPDmFS4BWl8H-8W39XfmgX4,91
360
+ dissect.target-3.19.dev43.dist-info/entry_points.txt,sha256=BWuxAb_6AvUAQpIQOQU0IMTlaF6TDht2AIZK8bHd-zE,492
361
+ dissect.target-3.19.dev43.dist-info/top_level.txt,sha256=Mn-CQzEYsAbkxrUI0TnplHuXnGVKzxpDw_po_sXpvv4,8
362
+ dissect.target-3.19.dev43.dist-info/RECORD,,