dissect.target 3.20.dev26__py3-none-any.whl → 3.20.dev27__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -247,10 +247,14 @@ class ConfigurationEntry(FilesystemEntry):
247
247
  Returns:
248
248
  A file-like object holding a byte representation of :attr:`parser_items`.
249
249
  """
250
+
250
251
  if isinstance(self.parser_items, ConfigurationParser):
251
252
  # Currently trying to open the underlying entry
252
253
  return self.entry.open()
253
254
 
255
+ if isinstance(self.parser_items, bytes):
256
+ return io.BytesIO(self.parser_items)
257
+
254
258
  output_data = self._write_value_mapping(self.parser_items)
255
259
  return io.BytesIO(bytes(output_data, "utf-8"))
256
260
 
@@ -161,7 +161,7 @@ class ConfigurationParser:
161
161
  def get(self, item: str, default: Optional[Any] = None) -> Any:
162
162
  return self.parsed_data.get(item, default)
163
163
 
164
- def read_file(self, fh: TextIO) -> None:
164
+ def read_file(self, fh: TextIO | io.BytesIO) -> None:
165
165
  """Parse a configuration file.
166
166
 
167
167
  Raises:
@@ -303,6 +303,14 @@ class Txt(ConfigurationParser):
303
303
  self.parsed_data = {"content": fh.read(), "size": str(fh.tell())}
304
304
 
305
305
 
306
+ class Bin(ConfigurationParser):
307
+
308
+ """Read the file into ``binary`` and show the number of bytes read"""
309
+
310
+ def parse_file(self, fh: io.BytesIO) -> None:
311
+ self.parsed_data = {"binary": fh.read(), "size": str(fh.tell())}
312
+
313
+
306
314
  class Xml(ConfigurationParser):
307
315
  """Parses an XML file. Ignores any constructor parameters passed from ``ConfigurationParser`."""
308
316
 
@@ -733,6 +741,8 @@ MATCH_MAP: dict[str, ParserConfig] = {
733
741
  "*/sysconfig/network-scripts/ifcfg-*": ParserConfig(Default),
734
742
  "*/sysctl.d/*.conf": ParserConfig(Default),
735
743
  "*/xml/*": ParserConfig(Xml),
744
+ "*.bashrc": ParserConfig(Txt),
745
+ "*/vim/vimrc*": ParserConfig(Txt),
736
746
  }
737
747
 
738
748
  CONFIG_MAP: dict[tuple[str, ...], ParserConfig] = {
@@ -744,6 +754,13 @@ CONFIG_MAP: dict[tuple[str, ...], ParserConfig] = {
744
754
  "cnf": ParserConfig(Default),
745
755
  "conf": ParserConfig(Default, separator=(r"\s",)),
746
756
  "sample": ParserConfig(Txt),
757
+ "sh": ParserConfig(Txt),
758
+ "key": ParserConfig(Txt),
759
+ "crt": ParserConfig(Txt),
760
+ "pem": ParserConfig(Txt),
761
+ "pl": ParserConfig(Txt), # various admin panels
762
+ "lua": ParserConfig(Txt), # wireshark etc.
763
+ "txt": ParserConfig(Txt),
747
764
  "systemd": ParserConfig(SystemD),
748
765
  "template": ParserConfig(Txt),
749
766
  "toml": ParserConfig(Toml),
@@ -759,6 +776,7 @@ KNOWN_FILES: dict[str, type[ConfigurationParser]] = {
759
776
  "nsswitch.conf": ParserConfig(Default, separator=(":",)),
760
777
  "lsb-release": ParserConfig(Default),
761
778
  "catalog": ParserConfig(Xml),
779
+ "ld.so.cache": ParserConfig(Bin),
762
780
  "fstab": ParserConfig(
763
781
  CSVish,
764
782
  separator=(r"\s",),
@@ -832,9 +850,11 @@ def parse_config(
832
850
  parser_type = _select_parser(entry, hint)
833
851
 
834
852
  parser = parser_type.create_parser(options)
835
-
836
853
  with entry.open() as fh:
837
- open_file = io.TextIOWrapper(fh, encoding="utf-8")
854
+ if not isinstance(parser, Bin):
855
+ open_file = io.TextIOWrapper(fh, encoding="utf-8")
856
+ else:
857
+ open_file = io.BytesIO(fh.read())
838
858
  parser.read_file(open_file)
839
859
 
840
860
  return parser
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dissect.target
3
- Version: 3.20.dev26
3
+ Version: 3.20.dev27
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
@@ -25,7 +25,7 @@ dissect/target/filesystems/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJ
25
25
  dissect/target/filesystems/ad1.py,sha256=nEPzaaRsb6bL4ItFo0uLdmdLvrmK9BjqHeD3FOp3WQI,2413
26
26
  dissect/target/filesystems/btrfs.py,sha256=TotOs0-VOmgSijERZb1pOrIH_E7B1J_DRKqws8ttQTk,6569
27
27
  dissect/target/filesystems/cb.py,sha256=6LcoJiwsYu1Han31IUzVpZVDTifhTLTx_gLfNpB_p6k,5329
28
- dissect/target/filesystems/config.py,sha256=GQOtixIIt-Jjtpl3IVqUTujcBFfWaAZeAtvxgNUNetU,11963
28
+ dissect/target/filesystems/config.py,sha256=5ZJfxs1Cidjxr7nKH2_iGKNWFd5SeLORRWkL4oYcZnk,12063
29
29
  dissect/target/filesystems/cpio.py,sha256=ssVCjkAtLn2FqmNxeo6U5boyUdSYFxLWfXpytHYGPqs,641
30
30
  dissect/target/filesystems/dir.py,sha256=rKEreX3A7CI6a3pMssrO9F-9i5pkxCn_Ucs_dMtHxxA,4574
31
31
  dissect/target/filesystems/exfat.py,sha256=PRkZPUVN5NlgB1VetFtywdNgF6Yj5OBtF5a25t-fFvw,5917
@@ -46,7 +46,7 @@ dissect/target/filesystems/zip.py,sha256=BeNj23DOYfWuTm5V1V419ViJiMfBrO1VA5gP6rl
46
46
  dissect/target/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
47
  dissect/target/helpers/cache.py,sha256=TXlJBdFRz6V9zKs903am4Yawr0maYw5kZY0RqklDQJM,8568
48
48
  dissect/target/helpers/config.py,sha256=RMHnIuKJHINHiLrvKN3EyA0jFA1o6-pbeaycG8Pgrp8,2596
49
- dissect/target/helpers/configutil.py,sha256=AEnkMQ0e6PncvCqGa-ACzBQWQBhMGBCzO5qzGJtRu60,27644
49
+ dissect/target/helpers/configutil.py,sha256=2PjQG-8vsParTANkMox_2cB1_MDxpOURJrUFj5dL3DI,28355
50
50
  dissect/target/helpers/cyber.py,sha256=WnJlk-HqAETmDAgLq92JPxyDLxvzSoFV_WrO-odVKBI,16805
51
51
  dissect/target/helpers/descriptor_extensions.py,sha256=uT8GwznfDAiIgMM7JKKOY0PXKMv2c0GCqJTCkWFgops,2605
52
52
  dissect/target/helpers/docs.py,sha256=J5U65Y3yOTqxDEZRCdrEmO63XQCeDzOJea1PwPM6Cyc,5146
@@ -368,10 +368,10 @@ dissect/target/volumes/luks.py,sha256=OmCMsw6rCUXG1_plnLVLTpsvE1n_6WtoRUGQbpmu1z
368
368
  dissect/target/volumes/lvm.py,sha256=wwQVR9I3G9YzmY6UxFsH2Y4MXGBcKL9aayWGCDTiWMU,2269
369
369
  dissect/target/volumes/md.py,sha256=7ShPtusuLGaIv27SvEETtgsuoQyAa4iAAeOR1NEaajI,1689
370
370
  dissect/target/volumes/vmfs.py,sha256=-LoUbn9WNwTtLi_4K34uV_-wDw2W5hgaqxZNj4UmqAQ,1730
371
- dissect.target-3.20.dev26.dist-info/COPYRIGHT,sha256=m-9ih2RVhMiXHI2bf_oNSSgHgkeIvaYRVfKTwFbnJPA,301
372
- dissect.target-3.20.dev26.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
373
- dissect.target-3.20.dev26.dist-info/METADATA,sha256=9ta9bS0OqAMhf6vc8zDqGxpXSkY-YRJMAHWRucXo3f8,12897
374
- dissect.target-3.20.dev26.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
375
- dissect.target-3.20.dev26.dist-info/entry_points.txt,sha256=BWuxAb_6AvUAQpIQOQU0IMTlaF6TDht2AIZK8bHd-zE,492
376
- dissect.target-3.20.dev26.dist-info/top_level.txt,sha256=Mn-CQzEYsAbkxrUI0TnplHuXnGVKzxpDw_po_sXpvv4,8
377
- dissect.target-3.20.dev26.dist-info/RECORD,,
371
+ dissect.target-3.20.dev27.dist-info/COPYRIGHT,sha256=m-9ih2RVhMiXHI2bf_oNSSgHgkeIvaYRVfKTwFbnJPA,301
372
+ dissect.target-3.20.dev27.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
373
+ dissect.target-3.20.dev27.dist-info/METADATA,sha256=O7DsHBHZKJGXZ1bQFS5nypC1x3WA9342Xj88YwbbT4k,12897
374
+ dissect.target-3.20.dev27.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
375
+ dissect.target-3.20.dev27.dist-info/entry_points.txt,sha256=BWuxAb_6AvUAQpIQOQU0IMTlaF6TDht2AIZK8bHd-zE,492
376
+ dissect.target-3.20.dev27.dist-info/top_level.txt,sha256=Mn-CQzEYsAbkxrUI0TnplHuXnGVKzxpDw_po_sXpvv4,8
377
+ dissect.target-3.20.dev27.dist-info/RECORD,,