dissect.target 3.20.2.dev14__py3-none-any.whl → 3.20.2.dev16__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -66,7 +66,7 @@ FileAppcompatRecord = TargetRecordDescriptor(
66
66
  ("varint", "reference"),
67
67
  ("path", "path"),
68
68
  ("string", "language_code"),
69
- ("digest", "digests"),
69
+ ("digest", "digest"),
70
70
  ("string", "program_id"),
71
71
  ("string", "pe_header_checksum"),
72
72
  ("string", "pe_size_of_image"),
@@ -126,7 +126,7 @@ ApplicationFileAppcompatRecord = TargetRecordDescriptor(
126
126
  [
127
127
  ("datetime", "mtime_regf"),
128
128
  ("string", "program_id"),
129
- ("digest", "digests"),
129
+ ("digest", "digest"),
130
130
  ("path", "path"),
131
131
  ("string", "hash_path"),
132
132
  ("wstring", "name"),
@@ -224,7 +224,7 @@ class AmcachePluginOldMixin:
224
224
  reference=int(subkey.name, 16),
225
225
  path=self.target.fs.path(subkey_data["full_path"]) if subkey_data.get("full_path") else None,
226
226
  language_code=subkey_data.get("language_code"),
227
- digests=[None, subkey_data["sha1"][-40:] if subkey_data.get("sha1") else None, None],
227
+ digest=(None, subkey_data["sha1"][-40:] if subkey_data.get("sha1") else None, None),
228
228
  program_id=subkey_data.get("program_id"),
229
229
  pe_header_checksum=subkey_data.get("pe_header_checksum"),
230
230
  pe_size_of_image=subkey_data.get("pe_size_of_image"),
@@ -468,7 +468,7 @@ class AmcachePlugin(AmcachePluginOldMixin, Plugin):
468
468
  yield ApplicationFileAppcompatRecord(
469
469
  mtime_regf=entry.timestamp,
470
470
  program_id=entry_data.get("ProgramId"),
471
- digests=[None, sha1_digest, None],
471
+ digest=(None, sha1_digest, None),
472
472
  path=self.target.fs.path(entry_data.get("LowerCaseLongPath")),
473
473
  link_date=parse_win_datetime(entry_data.get("LinkDate")),
474
474
  hash_path=entry_data.get("LongPathHash"),
@@ -31,7 +31,7 @@ COMMON_ELEMENTS = [
31
31
  ("string", "bin_file_version"),
32
32
  ("string", "bin_product_version"),
33
33
  ("string", "binary_type"),
34
- ("digest", "digests"),
34
+ ("digest", "digest"),
35
35
  ("wstring", "file_version"),
36
36
  ("wstring", "company_name"),
37
37
  ("wstring", "file_description"),
@@ -82,11 +82,11 @@ def create_record(
82
82
  size_of_image=install_properties.get("sizeofimage"),
83
83
  file_description=install_properties.get("filedescription"),
84
84
  size=install_properties.get("size"),
85
- digests=[
85
+ digest=(
86
86
  None,
87
87
  install_properties.get("id")[4:],
88
88
  None,
89
- ], # remove leading zeros from the entry to create a sha1 hash
89
+ ), # remove leading zeros from the entry to create a sha1 hash
90
90
  company_name=install_properties.get("companyname"),
91
91
  binary_type=install_properties.get("binarytype"),
92
92
  bin_product_version=install_properties.get("binproductversion"),
@@ -11,7 +11,7 @@ SyscacheRecord = TargetRecordDescriptor(
11
11
  "windows/syscache/object",
12
12
  [
13
13
  ("datetime", "regf_mtime"),
14
- ("digest", "digests"),
14
+ ("digest", "digest"),
15
15
  ("string", "program_id"),
16
16
  ("string", "file_id"),
17
17
  ("varint", "object_id"),
@@ -84,7 +84,7 @@ class SyscachePlugin(Plugin):
84
84
 
85
85
  yield SyscacheRecord(
86
86
  regf_mtime=subkey.ts,
87
- digests=[None, ae_file_id[4:] if ae_file_id else None, None],
87
+ digest=(None, ae_file_id[4:] if ae_file_id else None, None),
88
88
  program_id=ae_program_id,
89
89
  file_id=f"{file_segment}#{file_id >> 48}",
90
90
  object_id=subkey.value("_ObjectId_").value,
@@ -1,3 +1,5 @@
1
+ from __future__ import annotations
2
+
1
3
  import warnings
2
4
  from typing import Iterator, Optional
3
5
  from xml.etree.ElementTree import Element
@@ -157,8 +159,8 @@ class XmlTask:
157
159
  return data
158
160
 
159
161
  def get_element(
160
- self, xml_path: str, xml_data: Optional[Element] = None, attribute: Optional[str] = None
161
- ) -> Optional[str]:
162
+ self, xml_path: str, xml_data: Element | None = None, attribute: Optional[str] = None
163
+ ) -> str | None:
162
164
  """Get the value of the specified XML element.
163
165
 
164
166
  Args:
@@ -179,7 +181,7 @@ class XmlTask:
179
181
 
180
182
  return data.text
181
183
 
182
- def get_raw(self, xml_path: Optional[str] = None) -> str:
184
+ def get_raw(self, xml_path: str | None = None) -> str:
183
185
  """Get the raw XML data of the specified element.
184
186
 
185
187
  Args:
@@ -1,21 +1,16 @@
1
1
  from __future__ import annotations
2
2
 
3
- import logging
4
- import warnings
5
- from typing import Iterator, Union
3
+ from typing import Iterator
6
4
 
7
5
  from flow.record import GroupedRecord
8
6
 
9
7
  from dissect.target import Target
10
- from dissect.target.exceptions import UnsupportedPluginError
8
+ from dissect.target.exceptions import InvalidTaskError, UnsupportedPluginError
11
9
  from dissect.target.helpers.record import DynamicDescriptor, TargetRecordDescriptor
12
10
  from dissect.target.plugin import Plugin, export
13
11
  from dissect.target.plugins.os.windows.task_helpers.tasks_job import AtTask
14
12
  from dissect.target.plugins.os.windows.task_helpers.tasks_xml import ScheduledTasks
15
13
 
16
- warnings.simplefilter(action="ignore", category=FutureWarning)
17
- log = logging.getLogger(__name__)
18
-
19
14
  TaskRecord = TargetRecordDescriptor(
20
15
  "filesystem/windows/task",
21
16
  [
@@ -118,7 +113,7 @@ class TasksPlugin(Plugin):
118
113
  raise UnsupportedPluginError("No task files")
119
114
 
120
115
  @export(record=DynamicDescriptor(["path", "datetime"]))
121
- def tasks(self) -> Iterator[Union[TaskRecord, GroupedRecord]]:
116
+ def tasks(self) -> Iterator[TaskRecord | GroupedRecord]:
122
117
  """Return all scheduled tasks on a Windows system.
123
118
 
124
119
  On a Windows system, a scheduled task is a program or script that is executed on a specific time or at specific
@@ -132,7 +127,12 @@ class TasksPlugin(Plugin):
132
127
  """
133
128
  for task_file in self.task_files:
134
129
  if not task_file.suffix or task_file.suffix == ".xml":
135
- task_objects = ScheduledTasks(task_file).tasks
130
+ try:
131
+ task_objects = ScheduledTasks(task_file).tasks
132
+ except InvalidTaskError as e:
133
+ self.target.log.warning("Invalid task file encountered: %s", task_file)
134
+ self.target.log.debug("", exc_info=e)
135
+ continue
136
136
  else:
137
137
  task_objects = [AtTask(task_file, self.target)]
138
138
 
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: dissect.target
3
- Version: 3.20.2.dev14
3
+ Version: 3.20.2.dev16
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
@@ -280,7 +280,7 @@ dissect/target/plugins/os/windows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
280
280
  dissect/target/plugins/os/windows/_os.py,sha256=SUTfCPEVi2ADfjsQQJad6dEsnKUzRtsKJXOlEuiT9Xk,12462
281
281
  dissect/target/plugins/os/windows/activitiescache.py,sha256=_I-rc7hAKRgqfFexsJq5nkIAV3E31byG4KeBQeDBehg,7051
282
282
  dissect/target/plugins/os/windows/adpolicy.py,sha256=ul8lKlG9ExABnd6yVLMPFFgVxN74CG4T3MvcRuBLHJc,7158
283
- dissect/target/plugins/os/windows/amcache.py,sha256=1jq-S80_FIzGegrqQ6HqrjmaAPTyxyn69HxnbRBlaUc,27608
283
+ dissect/target/plugins/os/windows/amcache.py,sha256=PEQry72tVtMOdKkvlxfJhObj8OuJMnA8mG-7G-dB0bk,27604
284
284
  dissect/target/plugins/os/windows/catroot.py,sha256=59KfdNPcoA5NQtpj4_e3wzPDsyB1RYIu049UeIhLuEk,11390
285
285
  dissect/target/plugins/os/windows/cim.py,sha256=jsrpu6TZpBUh7VWI9AV2Ib5bebTwsvqOwRfa5gjJd7c,3056
286
286
  dissect/target/plugins/os/windows/clfs.py,sha256=begVsZ-CY97Ksh6S1g03LjyBgu8ERY2hfNDWYPj0GXI,4872
@@ -299,8 +299,8 @@ dissect/target/plugins/os/windows/registry.py,sha256=f6ka__6KXvdqRMRRJzlCAYaIpTZ
299
299
  dissect/target/plugins/os/windows/services.py,sha256=Q3_ZNYvWBXHVsNYwNAaiV93oHI0j0PJ9f1a2MJbR93E,6131
300
300
  dissect/target/plugins/os/windows/sru.py,sha256=sOM7CyMkW8XIXzI75GL69WoqUrSK2X99TFIfdQR2D64,17767
301
301
  dissect/target/plugins/os/windows/startupinfo.py,sha256=LarIAfB-sB6rzmh1rzxhiGWqy3VupKMpWLUpN1azB2I,3574
302
- dissect/target/plugins/os/windows/syscache.py,sha256=SXJxwyC34WPUpo0zGqbthdLPSPCsjfifsF4KscGvruw,3542
303
- dissect/target/plugins/os/windows/tasks.py,sha256=Bpy3tosncnFuGRqomEtB1jwJCVehZq4suhUznjtq4wo,5718
302
+ dissect/target/plugins/os/windows/syscache.py,sha256=kR3Pc-Irtz6Ob2pv2CkKCWrL17LENxplNoer9VaOa2s,3540
303
+ dissect/target/plugins/os/windows/tasks.py,sha256=Pm_PhRbFEBvYxFmKgvXi01RjDW6l9Kh4LpptqCU8Frc,5844
304
304
  dissect/target/plugins/os/windows/thumbcache.py,sha256=jAceapDdP9bNLGZchJ1l1okm7_7xiYHRbI2hVGAzMPk,4249
305
305
  dissect/target/plugins/os/windows/ual.py,sha256=S43ltndKKrs2SqeDLgZv4dzdqtJD8c3Y0Z8FK-Y9IOA,10076
306
306
  dissect/target/plugins/os/windows/wer.py,sha256=y4ZU6Yai53UsZ4VLr0V9_uLhZJZ_UEtdPuNzxKbGoEY,9269
@@ -326,7 +326,7 @@ dissect/target/plugins/os/windows/dpapi/keyprovider/lsa.py,sha256=QU3Hj5todELhSo
326
326
  dissect/target/plugins/os/windows/exchange/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
327
327
  dissect/target/plugins/os/windows/exchange/exchange.py,sha256=40x9_KOmoW24Z-S4eJiczBsOEyZFjwBoU2um86szqMg,1644
328
328
  dissect/target/plugins/os/windows/log/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
329
- dissect/target/plugins/os/windows/log/amcache.py,sha256=TabtjNx9Ve-u-Fn0K95A0v_SLGzn2YeNPHrcQvjVKJc,5877
329
+ dissect/target/plugins/os/windows/log/amcache.py,sha256=IsgUZgKW0Ayhd-5obcERJJLvCC1KD0P5ie7PlWComRA,5875
330
330
  dissect/target/plugins/os/windows/log/etl.py,sha256=t5GpunjzYMvAO9CBOP1ynH6053_PlasnIEIvlLNLU10,7255
331
331
  dissect/target/plugins/os/windows/log/evt.py,sha256=pYRVK3u309yK5pJoogohHWV2a_Lev8FK2zte_ys4SN8,7133
332
332
  dissect/target/plugins/os/windows/log/evtx.py,sha256=eSnMkU7HRmIDZ19WRsF9li08HuEOo51pRJDN2JOua5U,6148
@@ -356,7 +356,7 @@ dissect/target/plugins/os/windows/regf/userassist.py,sha256=E9Iwel4-BO9M-6BZ8fro
356
356
  dissect/target/plugins/os/windows/task_helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
357
357
  dissect/target/plugins/os/windows/task_helpers/tasks_job.py,sha256=7w3UGOiTAUQkP3xQ3sj4X3MTgHUJmmfdgiEadWmYquI,21197
358
358
  dissect/target/plugins/os/windows/task_helpers/tasks_records.py,sha256=vpCyKqLQSzI5ymD1h5P6RncLEE47YtmjDFwKA16dVZ4,4046
359
- dissect/target/plugins/os/windows/task_helpers/tasks_xml.py,sha256=fKwh9jtOP_gzWC_QTyuNScAvjJzWJphSz436aPknXzQ,15280
359
+ dissect/target/plugins/os/windows/task_helpers/tasks_xml.py,sha256=3D30BIuWGHuZtnvRmV53XgFDFuXSYEUqrMiKJJrWH8Q,15307
360
360
  dissect/target/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
361
361
  dissect/target/tools/build_pluginlist.py,sha256=5fomcuMwsVzcnYx5Htf5f9lSwsLeUUvomLUXNA4t7m4,849
362
362
  dissect/target/tools/dd.py,sha256=rTM-lgXxrYBpVAtJqFqAatDz45bLoD8-mFt_59Q3Lio,1928
@@ -383,10 +383,10 @@ dissect/target/volumes/luks.py,sha256=OmCMsw6rCUXG1_plnLVLTpsvE1n_6WtoRUGQbpmu1z
383
383
  dissect/target/volumes/lvm.py,sha256=wwQVR9I3G9YzmY6UxFsH2Y4MXGBcKL9aayWGCDTiWMU,2269
384
384
  dissect/target/volumes/md.py,sha256=7ShPtusuLGaIv27SvEETtgsuoQyAa4iAAeOR1NEaajI,1689
385
385
  dissect/target/volumes/vmfs.py,sha256=-LoUbn9WNwTtLi_4K34uV_-wDw2W5hgaqxZNj4UmqAQ,1730
386
- dissect.target-3.20.2.dev14.dist-info/COPYRIGHT,sha256=m-9ih2RVhMiXHI2bf_oNSSgHgkeIvaYRVfKTwFbnJPA,301
387
- dissect.target-3.20.2.dev14.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
388
- dissect.target-3.20.2.dev14.dist-info/METADATA,sha256=es_MUgD-RMEcA-o_NR1_ZB5SV0nGzcDVh_4UsHXqTzY,13184
389
- dissect.target-3.20.2.dev14.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
390
- dissect.target-3.20.2.dev14.dist-info/entry_points.txt,sha256=yQwLCWUuzHgS6-sfCcRk66gAfoCfqXdCjqKjvhnQW8o,537
391
- dissect.target-3.20.2.dev14.dist-info/top_level.txt,sha256=Mn-CQzEYsAbkxrUI0TnplHuXnGVKzxpDw_po_sXpvv4,8
392
- dissect.target-3.20.2.dev14.dist-info/RECORD,,
386
+ dissect.target-3.20.2.dev16.dist-info/COPYRIGHT,sha256=m-9ih2RVhMiXHI2bf_oNSSgHgkeIvaYRVfKTwFbnJPA,301
387
+ dissect.target-3.20.2.dev16.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
388
+ dissect.target-3.20.2.dev16.dist-info/METADATA,sha256=ZVQ6JUTNyfe_3NFIUrieaQtNAKVu2sBkIfPZ21Ho7UE,13184
389
+ dissect.target-3.20.2.dev16.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
390
+ dissect.target-3.20.2.dev16.dist-info/entry_points.txt,sha256=yQwLCWUuzHgS6-sfCcRk66gAfoCfqXdCjqKjvhnQW8o,537
391
+ dissect.target-3.20.2.dev16.dist-info/top_level.txt,sha256=Mn-CQzEYsAbkxrUI0TnplHuXnGVKzxpDw_po_sXpvv4,8
392
+ dissect.target-3.20.2.dev16.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.6.0)
2
+ Generator: setuptools (75.8.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5