dissect.target 3.14.dev29__py3-none-any.whl → 3.15__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. dissect/target/containers/ewf.py +1 -1
  2. dissect/target/containers/vhd.py +5 -2
  3. dissect/target/filesystem.py +36 -18
  4. dissect/target/filesystems/dir.py +10 -4
  5. dissect/target/filesystems/jffs.py +122 -0
  6. dissect/target/helpers/compat/path_310.py +506 -0
  7. dissect/target/helpers/compat/path_311.py +539 -0
  8. dissect/target/helpers/compat/path_312.py +443 -0
  9. dissect/target/helpers/compat/path_39.py +545 -0
  10. dissect/target/helpers/compat/path_common.py +223 -0
  11. dissect/target/helpers/cyber.py +512 -0
  12. dissect/target/helpers/fsutil.py +128 -666
  13. dissect/target/helpers/hashutil.py +17 -57
  14. dissect/target/helpers/keychain.py +9 -3
  15. dissect/target/helpers/loaderutil.py +1 -1
  16. dissect/target/helpers/mount.py +47 -4
  17. dissect/target/helpers/polypath.py +73 -0
  18. dissect/target/helpers/record_modifier.py +100 -0
  19. dissect/target/loader.py +2 -1
  20. dissect/target/loaders/asdf.py +2 -0
  21. dissect/target/loaders/cyber.py +37 -0
  22. dissect/target/loaders/log.py +14 -3
  23. dissect/target/loaders/raw.py +2 -0
  24. dissect/target/loaders/remote.py +12 -0
  25. dissect/target/loaders/tar.py +13 -0
  26. dissect/target/loaders/targetd.py +2 -0
  27. dissect/target/loaders/velociraptor.py +12 -3
  28. dissect/target/loaders/vmwarevm.py +2 -0
  29. dissect/target/plugin.py +272 -143
  30. dissect/target/plugins/apps/ssh/openssh.py +11 -54
  31. dissect/target/plugins/apps/ssh/opensshd.py +4 -3
  32. dissect/target/plugins/apps/ssh/putty.py +236 -0
  33. dissect/target/plugins/apps/ssh/ssh.py +58 -0
  34. dissect/target/plugins/apps/vpn/openvpn.py +6 -0
  35. dissect/target/plugins/apps/webserver/apache.py +309 -95
  36. dissect/target/plugins/apps/webserver/caddy.py +5 -2
  37. dissect/target/plugins/apps/webserver/citrix.py +82 -0
  38. dissect/target/plugins/apps/webserver/iis.py +9 -12
  39. dissect/target/plugins/apps/webserver/nginx.py +5 -2
  40. dissect/target/plugins/apps/webserver/webserver.py +25 -41
  41. dissect/target/plugins/child/wsl.py +1 -1
  42. dissect/target/plugins/filesystem/ntfs/mft.py +10 -0
  43. dissect/target/plugins/filesystem/ntfs/mft_timeline.py +10 -0
  44. dissect/target/plugins/filesystem/ntfs/usnjrnl.py +10 -0
  45. dissect/target/plugins/filesystem/ntfs/utils.py +28 -5
  46. dissect/target/plugins/filesystem/resolver.py +6 -4
  47. dissect/target/plugins/general/default.py +0 -2
  48. dissect/target/plugins/general/example.py +0 -1
  49. dissect/target/plugins/general/loaders.py +3 -5
  50. dissect/target/plugins/os/unix/_os.py +3 -3
  51. dissect/target/plugins/os/unix/bsd/citrix/_os.py +68 -28
  52. dissect/target/plugins/os/unix/bsd/citrix/history.py +130 -0
  53. dissect/target/plugins/os/unix/generic.py +17 -12
  54. dissect/target/plugins/os/unix/linux/fortios/__init__.py +0 -0
  55. dissect/target/plugins/os/unix/linux/fortios/_os.py +534 -0
  56. dissect/target/plugins/os/unix/linux/fortios/generic.py +30 -0
  57. dissect/target/plugins/os/unix/linux/fortios/locale.py +109 -0
  58. dissect/target/plugins/os/windows/log/evt.py +1 -1
  59. dissect/target/plugins/os/windows/log/schedlgu.py +155 -0
  60. dissect/target/plugins/os/windows/regf/firewall.py +1 -1
  61. dissect/target/plugins/os/windows/regf/shimcache.py +1 -1
  62. dissect/target/plugins/os/windows/regf/trusteddocs.py +1 -1
  63. dissect/target/plugins/os/windows/registry.py +1 -1
  64. dissect/target/plugins/os/windows/sam.py +3 -0
  65. dissect/target/plugins/os/windows/sru.py +41 -28
  66. dissect/target/plugins/os/windows/tasks.py +5 -2
  67. dissect/target/target.py +7 -3
  68. dissect/target/tools/dd.py +7 -1
  69. dissect/target/tools/fs.py +8 -1
  70. dissect/target/tools/info.py +22 -16
  71. dissect/target/tools/mount.py +28 -3
  72. dissect/target/tools/query.py +146 -117
  73. dissect/target/tools/reg.py +21 -16
  74. dissect/target/tools/shell.py +30 -6
  75. dissect/target/tools/utils.py +28 -0
  76. dissect/target/volumes/bde.py +14 -10
  77. dissect/target/volumes/luks.py +18 -10
  78. {dissect.target-3.14.dev29.dist-info → dissect.target-3.15.dist-info}/METADATA +4 -3
  79. {dissect.target-3.14.dev29.dist-info → dissect.target-3.15.dist-info}/RECORD +85 -67
  80. dissect/target/plugins/os/unix/linux/fortigate/_os.py +0 -175
  81. /dissect/target/{plugins/os/unix/linux/fortigate → helpers/compat}/__init__.py +0 -0
  82. {dissect.target-3.14.dev29.dist-info → dissect.target-3.15.dist-info}/COPYRIGHT +0 -0
  83. {dissect.target-3.14.dev29.dist-info → dissect.target-3.15.dist-info}/LICENSE +0 -0
  84. {dissect.target-3.14.dev29.dist-info → dissect.target-3.15.dist-info}/WHEEL +0 -0
  85. {dissect.target-3.14.dev29.dist-info → dissect.target-3.15.dist-info}/entry_points.txt +0 -0
  86. {dissect.target-3.14.dev29.dist-info → dissect.target-3.15.dist-info}/top_level.txt +0 -0
@@ -52,7 +52,9 @@ class LUKSVolumeSystem(EncryptedVolumeSystem):
52
52
  **volume_details,
53
53
  )
54
54
 
55
- def unlock_with_volume_encryption_key(self, key: bytes, keyslot: Optional[int] = None) -> None:
55
+ def unlock_with_volume_encryption_key(
56
+ self, key: bytes, keyslot: Optional[int] = None, is_wildcard: bool = False
57
+ ) -> None:
56
58
  try:
57
59
  if keyslot is None:
58
60
  for keyslot in self.luks.keyslots.keys():
@@ -68,25 +70,31 @@ class LUKSVolumeSystem(EncryptedVolumeSystem):
68
70
 
69
71
  log.debug("Unlocked LUKS volume with provided volume encryption key")
70
72
  except ValueError:
71
- log.exception("Failed to unlock LUKS volume with provided volume encryption key")
73
+ if not is_wildcard:
74
+ log.exception("Failed to unlock LUKS volume with provided volume encryption key")
72
75
 
73
- def unlock_with_passphrase(self, passphrase: str, keyslot: Optional[int] = None) -> None:
76
+ def unlock_with_passphrase(self, passphrase: str, keyslot: Optional[int] = None, is_wildcard: bool = False) -> None:
74
77
  try:
75
78
  self.luks.unlock_with_passphrase(passphrase, keyslot)
76
79
  log.debug("Unlocked LUKS volume with provided passphrase")
77
80
  except ValueError:
78
- log.exception("Failed to unlock LUKS volume with provided passphrase")
81
+ if not is_wildcard:
82
+ log.exception("Failed to unlock LUKS volume with provided passphrase")
79
83
 
80
- def unlock_with_key_file(self, key_file: pathlib.Path, keyslot: Optional[int] = None) -> None:
84
+ def unlock_with_key_file(
85
+ self, key_file: pathlib.Path, keyslot: Optional[int] = None, is_wildcard: bool = False
86
+ ) -> None:
81
87
  if not key_file.exists():
82
- log.error("Provided key file does not exist: %s", key_file)
88
+ if not is_wildcard:
89
+ log.error("Provided key file does not exist: %s", key_file)
83
90
  return
84
91
 
85
92
  try:
86
93
  self.luks.unlock_with_key_file(key_file, keyslot=keyslot)
87
94
  log.debug("Unlocked LUKS volume with key file %s", key_file)
88
95
  except ValueError:
89
- log.exception("Failed to unlock LUKS volume with key file %s", key_file)
96
+ if not is_wildcard:
97
+ log.exception("Failed to unlock LUKS volume with key file %s", key_file)
90
98
 
91
99
  def unlock_volume(self) -> AlignedStream:
92
100
  keyslots = list(map(str, self.luks.keyslots.keys()))
@@ -99,12 +107,12 @@ class LUKSVolumeSystem(EncryptedVolumeSystem):
99
107
  keyslot = None
100
108
 
101
109
  if key.key_type == KeyType.RAW:
102
- self.unlock_with_volume_encryption_key(key.value, keyslot)
110
+ self.unlock_with_volume_encryption_key(key.value, keyslot, key.is_wildcard)
103
111
  if key.key_type == KeyType.PASSPHRASE:
104
- self.unlock_with_passphrase(key.value, keyslot)
112
+ self.unlock_with_passphrase(key.value, keyslot, key.is_wildcard)
105
113
  elif key.key_type == KeyType.FILE:
106
114
  key_file = pathlib.Path(key.value)
107
- self.unlock_with_key_file(key_file, keyslot)
115
+ self.unlock_with_key_file(key_file, keyslot, key.is_wildcard)
108
116
 
109
117
  if self.luks.unlocked:
110
118
  log.info("Volume %s unlocked with %s (keyslot: %d)", self.fh, key, self.luks._active_keyslot_id)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dissect.target
3
- Version: 3.14.dev29
3
+ Version: 3.15
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
@@ -31,7 +31,7 @@ Requires-Dist: dissect.ntfs <4.0.dev,>=3.4.dev
31
31
  Requires-Dist: dissect.regf <4.0.dev,>=3.3.dev
32
32
  Requires-Dist: dissect.util <4.0.dev,>=3.0.dev
33
33
  Requires-Dist: dissect.volume <4.0.dev,>=3.0.dev
34
- Requires-Dist: flow.record ~=3.13.0
34
+ Requires-Dist: flow.record ~=3.14.0
35
35
  Requires-Dist: structlog
36
36
  Provides-Extra: cb
37
37
  Requires-Dist: dissect.target[full] ; extra == 'cb'
@@ -46,6 +46,7 @@ Requires-Dist: dissect.etl <4.0.dev,>=3.0.dev ; extra == 'full'
46
46
  Requires-Dist: dissect.extfs <4.0.dev,>=3.0.dev ; extra == 'full'
47
47
  Requires-Dist: dissect.fat <4.0.dev,>=3.0.dev ; extra == 'full'
48
48
  Requires-Dist: dissect.ffs <4.0.dev,>=3.0.dev ; extra == 'full'
49
+ Requires-Dist: dissect.jffs <2.0.dev,>=1.0.dev ; extra == 'full'
49
50
  Requires-Dist: dissect.shellitem <4.0.dev,>=3.0.dev ; extra == 'full'
50
51
  Requires-Dist: dissect.squashfs <2.0.dev,>=1.0.dev ; extra == 'full'
51
52
  Requires-Dist: dissect.sql <4.0.dev,>=3.0.dev ; extra == 'full'
@@ -62,7 +63,7 @@ Requires-Dist: dissect.target[full] ; extra == 'smb'
62
63
  Requires-Dist: impacket ==0.10.0 ; extra == 'smb'
63
64
  Provides-Extra: yara
64
65
  Requires-Dist: dissect.target[full] ; extra == 'yara'
65
- Requires-Dist: yara-python ; extra == 'yara'
66
+ Requires-Dist: yara-python-wheel ; extra == 'yara'
66
67
 
67
68
  # dissect.target
68
69
 
@@ -1,22 +1,22 @@
1
1
  dissect/target/__init__.py,sha256=Oc7ounTgq2hE4nR6YcNabetc7SQA40ldSa35VEdZcQU,63
2
2
  dissect/target/container.py,sha256=9ixufT1_0WhraqttBWwQjG80caToJqvCX8VjFk8d5F0,9307
3
3
  dissect/target/exceptions.py,sha256=VVW_Rq_vQinapz-2mbJ3UkxBEZpb2pE_7JlhMukdtrY,2877
4
- dissect/target/filesystem.py,sha256=8qbXNbhnE9Y1cz-5OH-67Z5eDJMXKQwy7dNYTw1ST5o,53410
5
- dissect/target/loader.py,sha256=4ZdX-QJY83NPswTyNG31LUwYXdV1tuByrR2vKKg7d5k,7214
6
- dissect/target/plugin.py,sha256=5EtUEU8feYSak7NRWocByPFWKsU0yeUJio6L72Ekw5c,40914
4
+ dissect/target/filesystem.py,sha256=aLkvZMgeah39Nhlscawh77cm2mzFYI9J5h3uT3Rigtc,53876
5
+ dissect/target/loader.py,sha256=0-LcZNi7S0qsXR7XGtrzxpuCh9BsLcqNR1T15O7SnBM,7257
6
+ dissect/target/plugin.py,sha256=YXsxV8ppceE5054Ki1OiC-v09FdcJ7SaddrqQXDq9cU,48235
7
7
  dissect/target/report.py,sha256=06uiP4MbNI8cWMVrC1SasNS-Yg6ptjVjckwj8Yhe0Js,7958
8
- dissect/target/target.py,sha256=CuqLTD3fwr4HIxtDgN_fwJ3UHSqe5PhNJlLTVGsluB8,31908
8
+ dissect/target/target.py,sha256=HxqqnGW0i0Y4a6Q4DjgNmqkJmJ-_IrkvksNgSPwa7LI,32143
9
9
  dissect/target/volume.py,sha256=aQZAJiny8jjwkc9UtwIRwy7nINXjCxwpO-_UDfh6-BA,15801
10
10
  dissect/target/containers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
11
  dissect/target/containers/asdf.py,sha256=DJp0QEFwUjy2MFwKYcYqIR_BS1fQT1Yi9Kcmqt0aChM,1366
12
- dissect/target/containers/ewf.py,sha256=c_YrkkFgEflmLLIysMEW2Dbz7Q68X5oN56X1vn1HTHA,1372
12
+ dissect/target/containers/ewf.py,sha256=FTEPZpogDzymrbAeSnLuHNNStifLzNVhUvtbEMOyo0E,1342
13
13
  dissect/target/containers/hdd.py,sha256=Y1qYpk3GePCpq2HZIyqyoGch7nzN8aeI3zWG3UGhf5o,1069
14
14
  dissect/target/containers/hds.py,sha256=xijSUSRM392Ckc9QsOsvjx7PMyeoR4qOlWGG0w4nqUU,1145
15
15
  dissect/target/containers/qcow2.py,sha256=FtXLZA-Xkegbv--dStusQntUiDqM1idSFWMtJRiL7eM,1128
16
16
  dissect/target/containers/raw.py,sha256=1etzdlHSoO77HDaBZcKINTY5MermtKjdKnG7EKwpFrw,1087
17
17
  dissect/target/containers/split.py,sha256=mgCoSdtEMs_JK3OOlSB0aEIZEwfUDECAHlxIermwlyM,2402
18
18
  dissect/target/containers/vdi.py,sha256=Dqv--Pp8XHtHApOhSludeX8N7qDAzy2MW5E1BWGKKLo,1065
19
- dissect/target/containers/vhd.py,sha256=ShtvSnWUPkk-4lpjfawA_The01c4Qok5CZeCIzObGsg,1053
19
+ dissect/target/containers/vhd.py,sha256=l6ODEPK1Z8HZpK3T0Ty2Dp7O7RPr9qnqi_N82ERY2q8,1123
20
20
  dissect/target/containers/vhdx.py,sha256=h03uhQBhwdixSwCeHbZ2LKcycBIek-_fEUl7uV3yM74,960
21
21
  dissect/target/containers/vmdk.py,sha256=5fQGkJy4esXONXrKLbhpkQDt8Fwx19YENK2mOm7kIEk,1000
22
22
  dissect/target/data/autocompletion/target_bash_completion.sh,sha256=wrOQ_ED-h8WFcjCmY6n4qKl84tWJv9l8ShFHDfJqJyA,3592
@@ -25,12 +25,13 @@ dissect/target/filesystems/ad1.py,sha256=nEPzaaRsb6bL4ItFo0uLdmdLvrmK9BjqHeD3FOp
25
25
  dissect/target/filesystems/btrfs.py,sha256=5MBi193ZvclkEQcxDr_sDHfj_FYU_hyYNRL4YqpDu4M,6243
26
26
  dissect/target/filesystems/cb.py,sha256=6LcoJiwsYu1Han31IUzVpZVDTifhTLTx_gLfNpB_p6k,5329
27
27
  dissect/target/filesystems/config.py,sha256=n1MR7a3tGXszpusLSDxZdTYo8IRLtDC_Xd95zPDTzzA,11295
28
- dissect/target/filesystems/dir.py,sha256=1RVT0-lomceRLQG5sXHpiyii4Vu7S1MGeQSyT-7BCPY,3851
28
+ dissect/target/filesystems/dir.py,sha256=7GRvojL151_Vk9e3vqgZbWE3I8IL9bU6LUKc_xjk6D4,4050
29
29
  dissect/target/filesystems/exfat.py,sha256=PRkZPUVN5NlgB1VetFtywdNgF6Yj5OBtF5a25t-fFvw,5917
30
30
  dissect/target/filesystems/extfs.py,sha256=9Cke-H0CL-SPd3-xvdAgfc3YA5hYso0sq6hm0C9vGII,4640
31
31
  dissect/target/filesystems/fat.py,sha256=ZSw-wS57vo5eIXJndfI1rZkGu_qh-vyioMzCZFZ_UTE,4611
32
32
  dissect/target/filesystems/ffs.py,sha256=Wu8sS1jjmD0QXXcAaD2h_zzfvinjco8qvj0hErufZ-4,4555
33
33
  dissect/target/filesystems/itunes.py,sha256=6LPUHSf2qpHacMgA4bdlEKUIV_BaLxmIxyLESXqNexI,6345
34
+ dissect/target/filesystems/jffs.py,sha256=Ceqa5Em2pepnXMH_XZFmSNjQyWPo1uWTthBFSMWfKRo,3926
34
35
  dissect/target/filesystems/ntfs.py,sha256=fGgCKjdO5GrPC21DDr0SwIxmwR7KruNIqGUzysboirA,7068
35
36
  dissect/target/filesystems/smb.py,sha256=uxfcOWwEoDCw8Qpsa94T5Pn-SKd4WXs4OOrzVVI55d8,6406
36
37
  dissect/target/filesystems/squashfs.py,sha256=ehzlThXB7n96XUvQnsK5tWLsA9HIxYN-Zxl7aO9D7ts,3921
@@ -42,33 +43,43 @@ dissect/target/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3
42
43
  dissect/target/helpers/cache.py,sha256=_0w_iPD1OM066Ueyadb70erQW05jNnpJe-bDDN1UyXc,8444
43
44
  dissect/target/helpers/config.py,sha256=6917CZ6eDHaK_tOoiVEIndyhRXO6r6eCBIleq6f47PQ,2346
44
45
  dissect/target/helpers/configutil.py,sha256=V105MdN5umMf-kJLVcmeuOLGz3ciL4LSzaq2qJBoEVs,19758
46
+ dissect/target/helpers/cyber.py,sha256=MsGSF6BCWTIasqIk-PYySO0LQ9rfpgcz-kXtwr8aQ30,15746
45
47
  dissect/target/helpers/descriptor_extensions.py,sha256=uT8GwznfDAiIgMM7JKKOY0PXKMv2c0GCqJTCkWFgops,2605
46
48
  dissect/target/helpers/docs.py,sha256=J5U65Y3yOTqxDEZRCdrEmO63XQCeDzOJea1PwPM6Cyc,5146
47
- dissect/target/helpers/fsutil.py,sha256=pFYy9e3HWaXgUfmzX7PsHSpPItto-x6Cin8Z-h7TTJc,33646
48
- dissect/target/helpers/hashutil.py,sha256=FYvcb-a01tdL1amcj2ugk6Ki-vhOasvcGdWLn81wRNc,3481
49
- dissect/target/helpers/keychain.py,sha256=tL7B7gqwG2oWE1c3RHCbIfs_jV4OcThk1uaUD_K6HAc,3310
49
+ dissect/target/helpers/fsutil.py,sha256=jGinb11-w6TvbzH7z-9F6J09X5CY3_yxBoNsKxsFAXE,18637
50
+ dissect/target/helpers/hashutil.py,sha256=SD24rcV_y0sBEl7M9T-isjm-VzJvCiTN2BoWMqAOAVI,2160
51
+ dissect/target/helpers/keychain.py,sha256=R-PTfm9XPhCz3K7kqA1OiKUw31PNnBARZGRfoJfoAgk,3497
50
52
  dissect/target/helpers/lazy.py,sha256=823VtmdWsbJyVZvNWopDhQdqq2i1xtj6b8IKfveboKw,1771
51
- dissect/target/helpers/loaderutil.py,sha256=8a-72AuUWdF1fSv9D1DZ_b-a5XQqeopkTQy6EZfl25Y,2444
53
+ dissect/target/helpers/loaderutil.py,sha256=YHaIgTY_NhJ76TpNaTvXnEDaXU9XXs8F6UCiqq7LVTQ,2465
52
54
  dissect/target/helpers/localeutil.py,sha256=Y4Fh4jDSGfm5356xSLMriUCN8SZP_FAHg_iodkAxNq4,1504
53
- dissect/target/helpers/mount.py,sha256=712VdKyfIkmY7lf8ynj7ROpunp-18lPgnTNsM1qFG1E,2794
55
+ dissect/target/helpers/mount.py,sha256=JxhUYyEbDnHfzPpfuWy4nV9OwCJPoDSGdHHNiyvd_l0,3949
54
56
  dissect/target/helpers/network_managers.py,sha256=tjqkVWn7i3PpBPkYnKUU0XxhqTTJlIjOc7Y2jpzdzA4,24525
57
+ dissect/target/helpers/polypath.py,sha256=h8p7m_OCNiQljGwoZh5Aflr9H2ot6CZr6WKq1OSw58o,2175
55
58
  dissect/target/helpers/record.py,sha256=lWl7k2Mp9Axllm0tXzPGJx2zj2zONsyY_p5g424T0Lc,4826
59
+ dissect/target/helpers/record_modifier.py,sha256=BiZ_gtqVxuByLWrga1lfglk3X-TcMrJC0quxPpXoIRo,3138
56
60
  dissect/target/helpers/regutil.py,sha256=kX-sSZbW8Qkg29Dn_9zYbaQrwLumrr4Y8zJ1EhHXIAM,27337
57
61
  dissect/target/helpers/shell_folder_ids.py,sha256=Behhb8oh0kMxrEk6YYKYigCDZe8Hw5QS6iK_d2hTs2Y,24978
58
62
  dissect/target/helpers/ssh.py,sha256=LPssHXyfL8QYmLi2vpa3wElsGboLG_A1Y8kvOehpUr4,6338
59
63
  dissect/target/helpers/targetd.py,sha256=ELhUulzQ4OgXgHsWhsLgM14vut8Wm6btr7qTynlwKaE,1812
60
64
  dissect/target/helpers/utils.py,sha256=r36Bn0UL0E6Z8ajmQrHzC6RyUxTRdwJ1PNsd904Lmzs,4027
65
+ dissect/target/helpers/compat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
+ dissect/target/helpers/compat/path_310.py,sha256=PsLDIodlp3Hv5u-w7GDl6_LnTtchBYcRjz2MicX1egg,16982
67
+ dissect/target/helpers/compat/path_311.py,sha256=2aydxCMWu1pN8PTBCo8HUbHRMC1xO-hj013j4QxaogE,18182
68
+ dissect/target/helpers/compat/path_312.py,sha256=oYa9SzcUI6FZmayQSy-HHPiIdPk5FX0XAQjnjGLsjCc,15223
69
+ dissect/target/helpers/compat/path_39.py,sha256=FIyZ3sb-XQhJnm02jVdOc6ncjCWa9OVxlCb_yap8A1o,18638
70
+ dissect/target/helpers/compat/path_common.py,sha256=HY00SfF5zrlUybTVMBRBM_mpLyK8e4C8_1HRQM65A7U,7355
61
71
  dissect/target/helpers/data/windowsZones.xml,sha256=4OijeR7oxI0ZwPTSwCkmtcofOsUCjSnbZ4dQxVOM_4o,50005
62
72
  dissect/target/loaders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
73
  dissect/target/loaders/ad1.py,sha256=1_VmPZckDzXVvNF-HNtoUZqabnhCKBLUD3vVaitHQ00,571
64
- dissect/target/loaders/asdf.py,sha256=ORAlIu2umATiSyxjKB1sr9F3mcn-JjhTgAG0rrgkQ-M,940
74
+ dissect/target/loaders/asdf.py,sha256=dvPPDBrnz2JPXpCbqsu-NgQWIdVGMOit2KAdhIO1iiQ,972
65
75
  dissect/target/loaders/cb.py,sha256=EGhdytBKBdofTd89juavDZZbmupEZmMBadeUXvVIK20,6612
76
+ dissect/target/loaders/cyber.py,sha256=4dxXltOxlykFvYl2izg7Y-MajFLw8owOWm67xJcqTLA,1339
66
77
  dissect/target/loaders/dir.py,sha256=nEJepNGI4EEP7MX3X15xysH9agKDmlKjfyd1DDulieU,4968
67
78
  dissect/target/loaders/hyperv.py,sha256=_IOUJEO0BXaCBZ6sjIX0DZTkG9UNW5Vs9VcNHYv073w,5928
68
79
  dissect/target/loaders/itunes.py,sha256=69aMTQiiGYpmD_EYSmf9mO1re8C3jAZIEStmwlMxdAk,13146
69
80
  dissect/target/loaders/kape.py,sha256=t5TfrGLqPeIpUUpXzIl6aHsqXMEGDqJ5YwDCs07DiBA,1237
70
81
  dissect/target/loaders/local.py,sha256=Ul-LCd_fY7SyWOVR6nH-NqbkuNpxoZVmffwrkvQElU8,16453
71
- dissect/target/loaders/log.py,sha256=2u02JfBjJaEVRBP_i1uU3Mgd_aUhrMexLdJwxPxccW8,1277
82
+ dissect/target/loaders/log.py,sha256=cCkDIRS4aPlX3U-n_jUKaI2FPSV3BDpfqKceaU7rBbo,1507
72
83
  dissect/target/loaders/multiraw.py,sha256=4a3ZST0NwjnfPDxHkcEfAcX2ddUlT_C-rcrMHNg1wp4,1046
73
84
  dissect/target/loaders/ova.py,sha256=6h4O-7i87J394C6KgLsPkdXRAKNwtPubzLNS3vBGs7U,744
74
85
  dissect/target/loaders/ovf.py,sha256=ELMq6J2y6cPKbp7pjWAqMMnFYefWxXNqzIiAQdvGGXQ,1061
@@ -76,20 +87,20 @@ dissect/target/loaders/phobos.py,sha256=XtxF7FZXfZrXJruFUZUQzxlREyfc86dTxph7BNoN
76
87
  dissect/target/loaders/profile.py,sha256=5ylgmzEEGyBFW3izvb-BZ7dGByXN9OFyRnnggR98P9w,1667
77
88
  dissect/target/loaders/pvm.py,sha256=b-PvHNTbRVdOnf7-OR5dbikbDTCFlW85b-9Z8PEL2Cs,406
78
89
  dissect/target/loaders/pvs.py,sha256=dMqdYSBQtH9QLM3tdu0mokLBcn73edg_HUtYtqrdi6E,955
79
- dissect/target/loaders/raw.py,sha256=03OXVlvkqwR29XYu7WPg3pmGtYd_4QJEGnkAuvIrdPs,355
80
- dissect/target/loaders/remote.py,sha256=AoI7-RxH2UMjNWnuHbNaieZycApTY3YZmk4wkQAwFt0,8820
90
+ dissect/target/loaders/raw.py,sha256=wfi1qnmLritNfBOqJbyEjsb2C8RjAZHO8IJ9R3XaNjI,412
91
+ dissect/target/loaders/remote.py,sha256=4cGCQfBwuhh5vo0zgVCK8V3I0w9SSWX3AjbW9eebPRg,9512
81
92
  dissect/target/loaders/res.py,sha256=8b178x05t9K31wOeP8yGD1IdR3RpiMGz7wcvtHmmHjk,8819
82
93
  dissect/target/loaders/smb.py,sha256=qP8m4Jq7hvAvUCF9jB4yr2Zut7p_R02_vxziNN3R1to,13070
83
94
  dissect/target/loaders/tanium.py,sha256=P9euiQzvVaQQtMQlEmNe0V25w1BkQFRZBuS-0-ksHpY,1585
84
- dissect/target/loaders/tar.py,sha256=4-ouVKnNCmW1o3I0OhF4DUyjvpZ7qLIon848gmRWR1M,3103
95
+ dissect/target/loaders/tar.py,sha256=mfUZCZexjUeZVJFiPvW_OUutObjPGzJY9QOAXnFG70E,3562
85
96
  dissect/target/loaders/target.py,sha256=Bp3kcfW-ntkgDZ9IpYPMoR-4FDBPqcLD_W88Z9IU--o,692
86
- dissect/target/loaders/targetd.py,sha256=XcBkqerKb-WcJG7qtTdecDkh6R4DpNcBhQYne9mN8BY,8201
97
+ dissect/target/loaders/targetd.py,sha256=sfbn2_j3il2G-rPywAoNT5YPtD5KmKkmBv1zrPDRs6I,8250
87
98
  dissect/target/loaders/utm.py,sha256=e5x5ZI3HeL0STh4S-CaQb68Rnug4SVZR9zlmHaGFj0M,978
88
99
  dissect/target/loaders/vb.py,sha256=CnQcn7bAkMzIB1y-lWLtPPXdIVsyeDaT6hTZEurjkV4,2072
89
100
  dissect/target/loaders/vbox.py,sha256=8JD7D8iAY9JRvTHsrosp5ZMsZezuLhZ10Zt8sEL7KBI,732
90
- dissect/target/loaders/velociraptor.py,sha256=fck3qTHojtybu0mkgXehRAeTx56zwtnWPeysemNwBls,3655
101
+ dissect/target/loaders/velociraptor.py,sha256=tikJEVCUDloWJNd5J3jJjNcVkOp-OnEe1O79DY2WLWw,4372
91
102
  dissect/target/loaders/vma.py,sha256=AAY5-s-nz6wgvmcFkptJD7nNXhpkdf6SqEKVOrJaIKs,644
92
- dissect/target/loaders/vmwarevm.py,sha256=6szocggye2U8hO6CD-u2_MDmiEjVNQHfVwxNx0hDQS8,369
103
+ dissect/target/loaders/vmwarevm.py,sha256=1MlKoIuWSwpYmpuLxDuVacvaYHUhAGO1KgZxzrc4fyg,428
93
104
  dissect/target/loaders/vmx.py,sha256=o1rYYKu6ReleqqHf2aeRcNrmoRcngWZNhz1h7GlmggQ,962
94
105
  dissect/target/loaders/xva.py,sha256=WmqdM9qGrZcChx0PiiTLyMTSatJIy_ItGO9cPMALQSE,709
95
106
  dissect/target/plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -115,63 +126,67 @@ dissect/target/plugins/apps/remoteaccess/teamviewer.py,sha256=SiEH36HM2NvdPuCjfL
115
126
  dissect/target/plugins/apps/shell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
116
127
  dissect/target/plugins/apps/shell/powershell.py,sha256=biPSMRWxPI6kRqP0-75yMtrw0Ti2Bzfl_xI3xbmmF48,2641
117
128
  dissect/target/plugins/apps/ssh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
118
- dissect/target/plugins/apps/ssh/openssh.py,sha256=ebHX6_uoOHZMgHYa_MiaYjvhitrceYNjl_R71JBY5Ow,8154
119
- dissect/target/plugins/apps/ssh/opensshd.py,sha256=FWhEkaKVMAADoOO7yI2H3uHK4jmQoC4v_eOaj_4jaeY,5453
129
+ dissect/target/plugins/apps/ssh/openssh.py,sha256=jDNP8aq9JHivosexPlxWRUgeJo1MHclb336dzO1zRJc,7086
130
+ dissect/target/plugins/apps/ssh/opensshd.py,sha256=DaXKdgGF3GYHHA4buEvphcm6FF4C8YFjgD96Dv6rRnM,5510
131
+ dissect/target/plugins/apps/ssh/putty.py,sha256=N8ssjutUVN50JNA5fEIVISbP5sJ7bGTFidRbX3uNG5Y,9404
132
+ dissect/target/plugins/apps/ssh/ssh.py,sha256=uCaoWlT2bgKLUHA1aL6XymJDWJ8JmLsN8PB1C66eidY,1409
120
133
  dissect/target/plugins/apps/vpn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
121
- dissect/target/plugins/apps/vpn/openvpn.py,sha256=OP2dUIlAdVpMAW9OQycWQpigmemF1AJKIEUVNgTB7HQ,6622
134
+ dissect/target/plugins/apps/vpn/openvpn.py,sha256=NZeFSFgGAifevGIQBusdbBRFOPxu0584Th8rKE-XSus,6875
122
135
  dissect/target/plugins/apps/vpn/wireguard.py,sha256=45WvCqQQGrG3DVDH5ghcsGpM_BomF4RcTLzcIvnyuNs,6554
123
136
  dissect/target/plugins/apps/webhosting/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
124
137
  dissect/target/plugins/apps/webhosting/cpanel.py,sha256=OeFQnu9GmpffIlFyK-AR2Qf8tjyMhazWEAUyccDU5y0,2979
125
138
  dissect/target/plugins/apps/webserver/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
126
- dissect/target/plugins/apps/webserver/apache.py,sha256=_dZVlQMo5bngVkuQorz6QgjWxDOSLgHm2bpUqVcD2js,7182
127
- dissect/target/plugins/apps/webserver/caddy.py,sha256=Ik0mXNUpYg3dMA5M_8n5zjaFhNd-tYhM7gRPaf9ASa0,6390
128
- dissect/target/plugins/apps/webserver/iis.py,sha256=NhInaJU2G5BPtabvGuwtq33Ylz3ix8v6_cUU5tj7D6A,14903
129
- dissect/target/plugins/apps/webserver/nginx.py,sha256=nO-YGx68Hw_meSqp2u_d8hQB7NKsx2d09b-H9ngrUKo,4097
130
- dissect/target/plugins/apps/webserver/webserver.py,sha256=_rkI0FRF4b3cUqSix_c00NoPYCfc6_GErt72sP2Jngk,2156
139
+ dissect/target/plugins/apps/webserver/apache.py,sha256=H38Zj41EkfS27x98gBTuPHJmTOmlhfMK73PX6zQ4YOY,14933
140
+ dissect/target/plugins/apps/webserver/caddy.py,sha256=qZsAK_tILGvroV4SWkDKc-Otwd41bUEtv9H9TuHmt-0,6422
141
+ dissect/target/plugins/apps/webserver/citrix.py,sha256=FEPdBteEJeeGg3B95W_27O9wLJVhenEc5A5fSLDmK18,3044
142
+ dissect/target/plugins/apps/webserver/iis.py,sha256=UwRVzLqnKScijdLoZFfpkSUzKTQosicZpn16q__4QBU,14669
143
+ dissect/target/plugins/apps/webserver/nginx.py,sha256=WA5soi1FU1c44oHRcyOoHK3gH8Jzc_Qi5uXcimDYukw,4129
144
+ dissect/target/plugins/apps/webserver/webserver.py,sha256=a7a2lLrhsa9c1AXnwiLP-tqVv-IUbmaVaSZI5S0fKa8,1500
131
145
  dissect/target/plugins/child/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
132
146
  dissect/target/plugins/child/esxi.py,sha256=GfgQzxntcHcyxAE2QjMJ-TrFhklweSXLbYh0uuv-klg,693
133
147
  dissect/target/plugins/child/hyperv.py,sha256=R2qVeu4p_9V53jO-65znN0LwX9v3FVA-9jbbtOQcEz8,2236
134
148
  dissect/target/plugins/child/virtuozzo.py,sha256=Mx4ZxEl21g7IYkzraw4FBZup5EfrkFDv4WuTE3hxguw,1206
135
149
  dissect/target/plugins/child/vmware_workstation.py,sha256=8wkA_tSufvBUyp4XQHzRzFETf5ROlyyO_MVS3TExyfw,1570
136
- dissect/target/plugins/child/wsl.py,sha256=1opdsZdR6p3-8nhvKRaKgQTFLDL_a_-y-HwwNUjFCfE,2485
150
+ dissect/target/plugins/child/wsl.py,sha256=IssQgYET1T-XR5ZX2lGlNFJ_u_3QECpMF_7kXu09HTE,2469
137
151
  dissect/target/plugins/filesystem/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
138
152
  dissect/target/plugins/filesystem/acquire_handles.py,sha256=-pX_akH5GrYe0HofXOa2Il75knZH6ZKgru4BFcrElkM,1731
139
153
  dissect/target/plugins/filesystem/acquire_hash.py,sha256=OVxI19-Bl1tdqCiFMscFMLmyoiBOsuAjL-Q8aQpEwl0,1441
140
154
  dissect/target/plugins/filesystem/icat.py,sha256=bOMi04IlljnKwxTWTZJKtK7RxKnabFu3WcXyUwzkE-4,4090
141
- dissect/target/plugins/filesystem/resolver.py,sha256=_Sn-qTtvEoiDAap1ltBiWR0wzEr8dtrQ4RrFkPDocX8,4676
155
+ dissect/target/plugins/filesystem/resolver.py,sha256=HfyASUFV4F9uD-yFXilFpPTORAsRDvdmTvuYHgOaOWg,4776
142
156
  dissect/target/plugins/filesystem/walkfs.py,sha256=aCEBmT3uoQdMdSGUshMOsKpcjrzAFg3HzeYW24PJZwk,2296
143
157
  dissect/target/plugins/filesystem/yara.py,sha256=q_pbrQArNaWP4ILRzK7VQhukIw16LhUvntoviHmZ38Q,2241
144
158
  dissect/target/plugins/filesystem/ntfs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
145
- dissect/target/plugins/filesystem/ntfs/mft.py,sha256=O5OHo2WDVhvflsQq8DcUaDRgDeWPcJs_1C_bqfm1PO0,8806
146
- dissect/target/plugins/filesystem/ntfs/mft_timeline.py,sha256=EJr_SFNkCrGx0VKIQFu-0zhNYuNv_7PpaXsYjE6UzE4,6033
147
- dissect/target/plugins/filesystem/ntfs/usnjrnl.py,sha256=2n64bhiBOuhVv9GsgFQcfMSE9CQ-RRfu2b3i9E2wzeQ,2938
148
- dissect/target/plugins/filesystem/ntfs/utils.py,sha256=9oRkmrByR1JPiIM0n_evORcK6NDQuDqrmiVIolupeck,2316
159
+ dissect/target/plugins/filesystem/ntfs/mft.py,sha256=Za-fsTcKlAlhm9ugJlMdwsJVf2Osrh4PrEGSFuv-Eeo,9564
160
+ dissect/target/plugins/filesystem/ntfs/mft_timeline.py,sha256=vvNFAZbr7s3X2OTYf4ES_L6-XsouTXcTymfxnHfZ1Rw,6791
161
+ dissect/target/plugins/filesystem/ntfs/usnjrnl.py,sha256=uiT1ipmcAo__6VIUi8R_vvIu22vdnjMACKwLSAbzYjs,3704
162
+ dissect/target/plugins/filesystem/ntfs/utils.py,sha256=xG7Lgw9NX4tDDrZVRm0vycFVJTOM7j-HrjqzDh0f4uA,3136
149
163
  dissect/target/plugins/filesystem/unix/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
150
164
  dissect/target/plugins/filesystem/unix/capability.py,sha256=oTJVEr8Yszejd-FxU0D8J49ATxNrJOcUnBFIc96k8kg,5920
151
165
  dissect/target/plugins/filesystem/unix/suid.py,sha256=Q0Y5CyPm34REruyZYP5siFAka4i7QEOOxZ9K2L-SxPY,1290
152
166
  dissect/target/plugins/general/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
153
167
  dissect/target/plugins/general/config.py,sha256=Mdy9uhWn4OJ96zfXpLgjVifV5SrViqHnpSnKhC1mjZE,3432
154
- dissect/target/plugins/general/default.py,sha256=wlMr-_4JespLKpzGMjXaWbcHr61PB83EUPEJ1wbPQHc,1446
155
- dissect/target/plugins/general/example.py,sha256=RiuLm-Lww_M6k-J6SAu8gBpHhr5bepB4WyQNcjlvoK4,6054
156
- dissect/target/plugins/general/loaders.py,sha256=AAjyozpey5FwBzYMq8BchExBD58oEi4TMvw_Ka38GGI,917
168
+ dissect/target/plugins/general/default.py,sha256=8W_9JV3jKEeETlyTrB25sACoIIFmmO8wlVU5Zoi51W0,1425
169
+ dissect/target/plugins/general/example.py,sha256=6B_YOqajRBLNWBEOfIL_HnLaEANBF8KKoc0mweihiug,6034
170
+ dissect/target/plugins/general/loaders.py,sha256=6iUxhlSAgo7qSE8_XFxgiihK8sdMiP-s4k0W5Iv8m9k,879
157
171
  dissect/target/plugins/general/osinfo.py,sha256=RdK5mw3-H9H3sGXz8yP8U_p3wUG1Ww7_HBKZpFdsbTE,1358
158
172
  dissect/target/plugins/general/plugins.py,sha256=4URjS6DN1Ey6Cqlbyx6NfFGgQZpWDrqxl8KLcZFODGE,4479
159
173
  dissect/target/plugins/general/scrape.py,sha256=Fz7BNXflvuxlnVulyyDhLpyU8D_hJdH6vWVtER9vjTg,6651
160
174
  dissect/target/plugins/general/users.py,sha256=IOqopQ9Y7CKGkALRUr16y8DwxsidYC5tcPErGZCXxyA,2845
161
175
  dissect/target/plugins/os/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
162
176
  dissect/target/plugins/os/unix/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
163
- dissect/target/plugins/os/unix/_os.py,sha256=hAb0Ta0fWSABb5cTa-VQaCSH5k0byjSL_JdpGdEGAtY,13371
177
+ dissect/target/plugins/os/unix/_os.py,sha256=MdSnIc-1Tb3VVjJdy6JilnJuFtHr6aREgLfVTlia63M,13384
164
178
  dissect/target/plugins/os/unix/cronjobs.py,sha256=2ssj97UVJueyATVl7NMJmqd9uHflQ2tXUqdOCFIEje8,3182
165
179
  dissect/target/plugins/os/unix/datetime.py,sha256=gKfBdPyUirt3qmVYfOJ1oZXRPn8wRzssbZxR_ARrtk8,1518
166
180
  dissect/target/plugins/os/unix/etc.py,sha256=HoPEC1hxqurSnAXQAK-jf_HxdBIDe-1z_qSw_n-ViI4,258
167
- dissect/target/plugins/os/unix/generic.py,sha256=g9g-7qbUluaT3os7TB05iTcyCAppI6YbgjpoMMkAJCw,2017
181
+ dissect/target/plugins/os/unix/generic.py,sha256=6_MJrV1LbIxNQJwAZR0HEQljoxwF5BPQC1SfCTcaSHg,2127
168
182
  dissect/target/plugins/os/unix/history.py,sha256=1o6ZLQTDimo9FSm9h_8QpCWlg8_qTb8ewDMgDqdAeV8,6619
169
183
  dissect/target/plugins/os/unix/locale.py,sha256=V3R7mEyrH3f-h7SGAucByaYYDA2SIil9Qb-s3dPmDEA,3961
170
184
  dissect/target/plugins/os/unix/packagemanager.py,sha256=Wm2AAJOD_B3FAcZNXgWtSm_YwbvrHBYOP8bPmOXNjG4,2427
171
185
  dissect/target/plugins/os/unix/shadow.py,sha256=TvN04uzFnUttNMZAa6_1XdXSP-8V6ztbZNoetDvfD0w,3535
172
186
  dissect/target/plugins/os/unix/bsd/_os.py,sha256=e5rttTOFOmd7e2HqP9ZZFMEiPLBr-8rfH0XH1IIeroQ,1372
173
187
  dissect/target/plugins/os/unix/bsd/citrix/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
174
- dissect/target/plugins/os/unix/bsd/citrix/_os.py,sha256=Y5kTpOJLyko0Q8Tx6DQ5t0tngzpg8ISNer210JoG0pg,5172
188
+ dissect/target/plugins/os/unix/bsd/citrix/_os.py,sha256=u9agLXoMt_k-nARtSJ78_-ScJae4clZhkqFiEVsB9b8,7910
189
+ dissect/target/plugins/os/unix/bsd/citrix/history.py,sha256=cXMA4rZQBsOMwd_aLbXjW_CAEzNnsr2bUZB9cPufnQo,4498
175
190
  dissect/target/plugins/os/unix/bsd/freebsd/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
176
191
  dissect/target/plugins/os/unix/bsd/freebsd/_os.py,sha256=Vqiyn08kv1IioNUwpgtBJ9SToCFhLCsJdpVhl5E7COM,789
177
192
  dissect/target/plugins/os/unix/bsd/ios/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -202,8 +217,10 @@ dissect/target/plugins/os/unix/linux/debian/apt.py,sha256=dkTfLrS-MS8wfrXILFLHDo
202
217
  dissect/target/plugins/os/unix/linux/debian/dpkg.py,sha256=DPBLQiHAF7ZS8IorRsGAiBj4HhvwuJbmkMEHOuTZisw,5735
203
218
  dissect/target/plugins/os/unix/linux/debian/vyos/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
204
219
  dissect/target/plugins/os/unix/linux/debian/vyos/_os.py,sha256=q8qG2FLJhUbpjfwlNCmWAhFdTWMzSWUh7s7H8m4x7Fw,1741
205
- dissect/target/plugins/os/unix/linux/fortigate/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
206
- dissect/target/plugins/os/unix/linux/fortigate/_os.py,sha256=uMqTYkKWK_Qxdys8oFIoUg6ThIyGKF86qSip-RYKJDc,4513
220
+ dissect/target/plugins/os/unix/linux/fortios/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
221
+ dissect/target/plugins/os/unix/linux/fortios/_os.py,sha256=mYwmGAeY1GQdPdFbGxwNhlRuMD2hTuL1nlEAaXhao4o,19091
222
+ dissect/target/plugins/os/unix/linux/fortios/generic.py,sha256=tT4-lE0Z_DeDIN3zHrQbE8JB3cRJop1_TiEst-Au0bs,1230
223
+ dissect/target/plugins/os/unix/linux/fortios/locale.py,sha256=VDdk60sqe2JTfftssO05C667-_BpI3kcqKOTVzO3ueU,5209
207
224
  dissect/target/plugins/os/unix/linux/redhat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
208
225
  dissect/target/plugins/os/unix/linux/redhat/_os.py,sha256=l_SygO1WMBTvaLvAvhe08yPHLBpUZ9wizW28a9_JhJE,578
209
226
  dissect/target/plugins/os/unix/linux/redhat/yum.py,sha256=kEvB-C2CNoqxSbgGRZiuo6CMPBo_hMWy2KQIE4SNkdQ,2134
@@ -235,13 +252,13 @@ dissect/target/plugins/os/windows/locale.py,sha256=yXVdclpUqss9h8Nq7N4kg3OHwWGDf
235
252
  dissect/target/plugins/os/windows/notifications.py,sha256=64xHHueHwtJCc8RTAF70oa0RxvqfCu_DBPWRSZBnYZc,17386
236
253
  dissect/target/plugins/os/windows/prefetch.py,sha256=5hRxdIP9sIV5Q9TAScMjLbl_mImZ37abvdE_pAd6rh4,10398
237
254
  dissect/target/plugins/os/windows/recyclebin.py,sha256=4GSj0Q3YvONufnqANbnG0ffiMQyToCiL5s35Wmu4JOQ,4898
238
- dissect/target/plugins/os/windows/registry.py,sha256=HqO8Yw2TDKhhkR7fOochzinJN_nQ4qKKx7fJ34qh7tw,12770
239
- dissect/target/plugins/os/windows/sam.py,sha256=kLOxOCF5Wt_6SZ9z3Uh0c7DRE0_Waa30H1M-cRZotTs,15226
255
+ dissect/target/plugins/os/windows/registry.py,sha256=IBRqltJ_4fZpVuwMVCAH_nS8JUaNVjsC1jh9AZSNHL4,12788
256
+ dissect/target/plugins/os/windows/sam.py,sha256=Es_8ROQ6R6-akuTtegCdsJHXzZJNhzgoFuS8y9xNN8E,15267
240
257
  dissect/target/plugins/os/windows/services.py,sha256=_6YkuoZD8LUxk72R3n1p1bOBab3A1wszdB1NuPavIGM,6037
241
- dissect/target/plugins/os/windows/sru.py,sha256=uE0DDguyTvbolfg1323tdYyOKlWgaqyPI2A0tr2pnqU,16836
258
+ dissect/target/plugins/os/windows/sru.py,sha256=sOM7CyMkW8XIXzI75GL69WoqUrSK2X99TFIfdQR2D64,17767
242
259
  dissect/target/plugins/os/windows/startupinfo.py,sha256=kl8Y7M4nVfmJ71I33VCegtbHj-ZOeEsYAdlNbgwtUOA,3406
243
260
  dissect/target/plugins/os/windows/syscache.py,sha256=WBDx6rixaVnCRsJHLLN_9YWoTDbzkKGbTnk3XmHSSUM,3443
244
- dissect/target/plugins/os/windows/tasks.py,sha256=j2OUXC6eY72F1MuvEwL5psaoBaHwQOLRdGnxgD8c53A,5684
261
+ dissect/target/plugins/os/windows/tasks.py,sha256=8DRsIAuIJPaH_G18l8RYfnK_WkEqVx2xDJ1FnIc_i0g,5716
245
262
  dissect/target/plugins/os/windows/thumbcache.py,sha256=23YjOjTNoE7BYITmg8s9Zs8Wih2e73BkJJEaKlfotcI,4133
246
263
  dissect/target/plugins/os/windows/ual.py,sha256=TYF-R46klEa_HHb86UJd6mPrXwHlAMOUTzC0pZ8uiq0,9787
247
264
  dissect/target/plugins/os/windows/wer.py,sha256=OId9gnqU-z2D_Xl51J9THWTIegre06QsftWnGz7IQb4,7563
@@ -255,9 +272,10 @@ dissect/target/plugins/os/windows/exchange/exchange.py,sha256=ofoapuDQXefIX4sTzw
255
272
  dissect/target/plugins/os/windows/log/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
256
273
  dissect/target/plugins/os/windows/log/amcache.py,sha256=TabtjNx9Ve-u-Fn0K95A0v_SLGzn2YeNPHrcQvjVKJc,5877
257
274
  dissect/target/plugins/os/windows/log/etl.py,sha256=9skhXdKvgmdKE1f3P9MhxvLprKvIGBv5RhOHq-XK91U,6966
258
- dissect/target/plugins/os/windows/log/evt.py,sha256=F93Kw_gzYbiiMKQPsjrax_fiuKY50miPqrCC-Yd7pSg,7065
275
+ dissect/target/plugins/os/windows/log/evt.py,sha256=vK9XHc-hOxf6BbLKMNzGNlbCRWN2nlksQoCLdHqPgnw,7049
259
276
  dissect/target/plugins/os/windows/log/evtx.py,sha256=Ue-6uX-vMfzmmSN5bQgEXks0E42Yx-zPl3Gy1TCa6Cg,6038
260
277
  dissect/target/plugins/os/windows/log/pfro.py,sha256=BCjg3OZzkIP4-HzRa1b1dPkDv_B4sbd78fl40obUVkM,2706
278
+ dissect/target/plugins/os/windows/log/schedlgu.py,sha256=vzMOcCSrGRTMNQUZzvyQorZzbTNgs1UJiPe0zeOOupQ,5515
261
279
  dissect/target/plugins/os/windows/regf/7zip.py,sha256=Vc336zhS6R8W98GGlLtPJ_OR0vEP014QnBtYwbx_HUo,3217
262
280
  dissect/target/plugins/os/windows/regf/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
263
281
  dissect/target/plugins/os/windows/regf/appxdebugkeys.py,sha256=2GlbBZITBDhu3JKHgsGCd_6umHFgDw6OQA4g4rHg63E,3935
@@ -265,7 +283,7 @@ dissect/target/plugins/os/windows/regf/auditpol.py,sha256=62WMlZwSzBb-99ujaeGkkO
265
283
  dissect/target/plugins/os/windows/regf/bam.py,sha256=W46KjD2bQC52qSajc2lNX36lkjzylKzH7xulnhEKrL8,2053
266
284
  dissect/target/plugins/os/windows/regf/cit.py,sha256=vErcoGfslyuZsaZiGbSGm6KxnJmUjobMwoy03jb6774,38244
267
285
  dissect/target/plugins/os/windows/regf/clsid.py,sha256=OvvA7Rwm29c1wXarXWXOMkqspA44oOQrQ_0rAJGYAU0,3601
268
- dissect/target/plugins/os/windows/regf/firewall.py,sha256=aC7AG6GexD6o4g06GyDohCv638wfXOmwxmrDIUmO6zM,3140
286
+ dissect/target/plugins/os/windows/regf/firewall.py,sha256=cDUj-dY6myWtPenI4Vrzp1u_1ndq0EtGDs78RoqSA0Y,3141
269
287
  dissect/target/plugins/os/windows/regf/mru.py,sha256=HYg4UnbsjvzZKS9qcqxkocUeIGQieMLXPjkjgZ1qbTY,13560
270
288
  dissect/target/plugins/os/windows/regf/muicache.py,sha256=qoA7S8SiZakIreQqxc_QH1av6Lnlprf5SGr4s55b-8E,3707
271
289
  dissect/target/plugins/os/windows/regf/nethist.py,sha256=QHbG9fmZNmjSVhrgqMvMo12YBaQedzeToS7ZD9eIJ28,3111
@@ -273,8 +291,8 @@ dissect/target/plugins/os/windows/regf/recentfilecache.py,sha256=Wr6u7SajA9BtUiy
273
291
  dissect/target/plugins/os/windows/regf/regf.py,sha256=IbLnOurtlprXAo12iYRdw6fv5J45SuMAqt-mXVYaZi4,3357
274
292
  dissect/target/plugins/os/windows/regf/runkeys.py,sha256=qX-6xOrgBq7_B00C1BoQtI0Ovzou6Sx3XemV0Ra4JMs,4178
275
293
  dissect/target/plugins/os/windows/regf/shellbags.py,sha256=EKBWBjxvSfxc7WFKmICZs8QUJnjhsCKesjl_NHEnSUo,25621
276
- dissect/target/plugins/os/windows/regf/shimcache.py,sha256=kgxs7NkP6uP0-RbpkQeBUGGIDPdqhZDx08oLhqsLlfQ,9993
277
- dissect/target/plugins/os/windows/regf/trusteddocs.py,sha256=V8S6YjRaP4edVd7ntuZ1ppBOfn-PADLeRjishvHahnc,3690
294
+ dissect/target/plugins/os/windows/regf/shimcache.py,sha256=4SHtwh-ajhgcyR2-vsBbjnsyBtEVPwlgk5j8e1TQkWM,9972
295
+ dissect/target/plugins/os/windows/regf/trusteddocs.py,sha256=4g4m1FYljOpYqGG-7NGyj738Tfnz0uEaN2is2YzkMgg,3669
278
296
  dissect/target/plugins/os/windows/regf/usb.py,sha256=mfMQPKUct7fqpxJgquySrorPf5KWBzwWCLVKa9qSatc,7182
279
297
  dissect/target/plugins/os/windows/regf/userassist.py,sha256=kEthM9oDDBA6UbGxunbyTfXX320Z_2YlTMYoUQyxZyY,5469
280
298
  dissect/target/plugins/os/windows/task_helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -283,31 +301,31 @@ dissect/target/plugins/os/windows/task_helpers/tasks_records.py,sha256=vpCyKqLQS
283
301
  dissect/target/plugins/os/windows/task_helpers/tasks_xml.py,sha256=oOsYse2-BrliVQRXlHD1-89hsmNrJqg42DJy681AW0U,15268
284
302
  dissect/target/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
285
303
  dissect/target/tools/build_pluginlist.py,sha256=5fomcuMwsVzcnYx5Htf5f9lSwsLeUUvomLUXNA4t7m4,849
286
- dissect/target/tools/dd.py,sha256=Nlh2CFOCV0ksxyedFp7BuyoQ3tBFi6rK6UO0_k5GR_8,1758
287
- dissect/target/tools/fs.py,sha256=IL71ntXA_oS92l0NPpqyOVrHOZ-bf3qag1amZzAaeHc,3548
288
- dissect/target/tools/info.py,sha256=wgLBn8Vj-In8HtqBDOQYD4FXThKkrEVXudopMHuY3KI,5231
304
+ dissect/target/tools/dd.py,sha256=rTM-lgXxrYBpVAtJqFqAatDz45bLoD8-mFt_59Q3Lio,1928
305
+ dissect/target/tools/fs.py,sha256=cizCrW8rqdpT1irA8g6mslkaXX7CynWVQ7fvRUrcxNU,3719
306
+ dissect/target/tools/info.py,sha256=3smHr8I71yj3kCjsQ5nXkOHI9T_N8UwvkVa1CNOxB-s,5461
289
307
  dissect/target/tools/logging.py,sha256=5ZnumtMWLyslxfrUGZ4ntRyf3obOOhmn8SBjKfdLcEg,4174
290
- dissect/target/tools/mount.py,sha256=m6Ise8H82jgIW2FN0hXKO4l9t3emKiOi55O4LyEqvxk,2581
291
- dissect/target/tools/query.py,sha256=qbQI2kAeFP0_1CxT3UbTIZZ1EZIhotD0rRNXqihZcy4,14926
292
- dissect/target/tools/reg.py,sha256=ZB5WDmKfiDvs988kHZVyzF-RIoDLXcXuvdLjuEYvDi4,2181
293
- dissect/target/tools/shell.py,sha256=5VfI8JiB549Nj4LuCcL4osMywPzpKw4Aw_yGHi8WFSo,42281
294
- dissect/target/tools/utils.py,sha256=IdHaqcWT89Kh8VwhpUQoQrRdjqhl5yQj0P-Vx6TVpf4,9588
308
+ dissect/target/tools/mount.py,sha256=L_0tSmiBdW4aSaF0vXjB0bAkTC0kmT2N1hrbW6s5Jow,3254
309
+ dissect/target/tools/query.py,sha256=1LbvUKSmXOCMb4xqP3t86JkOgFzKlc7mLCqcczfLht8,16018
310
+ dissect/target/tools/reg.py,sha256=tII0MLqJ-3lOt7jE-zHUDqYrk0P4euPjiSS_99FT6LE,2378
311
+ dissect/target/tools/shell.py,sha256=EBRNKiIV3ljaXKAXraA6DmrIw8Cy5h9irAuwlblP3zo,43251
312
+ dissect/target/tools/utils.py,sha256=bhVZ3-8YynpHkBl4m1T4IpSpCArAXnEjjYwAFGW5JPg,10595
295
313
  dissect/target/tools/dump/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
296
314
  dissect/target/tools/dump/run.py,sha256=yHn9xl_VjasgiuLpjtZdnLW32QCbkwHfnnTPY6Ck_aw,9689
297
315
  dissect/target/tools/dump/state.py,sha256=ZBNz4ou2Xk20K1H8R83S1gq6qcqPvPPVAaPWzpKpX34,9123
298
316
  dissect/target/tools/dump/utils.py,sha256=nYcLQvPpDgzckM62hokGBh4z32DNH6d6oA8KelvoPMU,7564
299
317
  dissect/target/volumes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
300
- dissect/target/volumes/bde.py,sha256=wdg7GUmR9MTCcKat3C5JOZG69tWVH4EzpDlwuSjgqS0,3659
318
+ dissect/target/volumes/bde.py,sha256=8kazEzIIlpvBueOwJ6UI-WW3nit4INzKdyeNW5GUmng,3939
301
319
  dissect/target/volumes/ddf.py,sha256=X0yBIFbG7Z_CJDVqxEBLDynM_NoSwIWEKVsQFOS-Tn4,1749
302
320
  dissect/target/volumes/disk.py,sha256=6KN6FtW7TQ1yN1wSmGqbLQFjBP-aqld-lY3oSvkibz4,991
303
- dissect/target/volumes/luks.py,sha256=v_mHW05KM5iG8JDe47i2V4Q9O0r4rnAMA9m_qc9cYwc,4110
321
+ dissect/target/volumes/luks.py,sha256=OmCMsw6rCUXG1_plnLVLTpsvE1n_6WtoRUGQbpmu1zA,4414
304
322
  dissect/target/volumes/lvm.py,sha256=wwQVR9I3G9YzmY6UxFsH2Y4MXGBcKL9aayWGCDTiWMU,2269
305
323
  dissect/target/volumes/md.py,sha256=j1K1iKmspl0C_OJFc7-Q1BMWN2OCC5EVANIgVlJ_fIE,1673
306
324
  dissect/target/volumes/vmfs.py,sha256=-LoUbn9WNwTtLi_4K34uV_-wDw2W5hgaqxZNj4UmqAQ,1730
307
- dissect.target-3.14.dev29.dist-info/COPYRIGHT,sha256=m-9ih2RVhMiXHI2bf_oNSSgHgkeIvaYRVfKTwFbnJPA,301
308
- dissect.target-3.14.dev29.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
309
- dissect.target-3.14.dev29.dist-info/METADATA,sha256=voAo7GoNpWcWz_TOyOTGMpXfBxmfz01D5V6yhobeGZ4,11042
310
- dissect.target-3.14.dev29.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
311
- dissect.target-3.14.dev29.dist-info/entry_points.txt,sha256=tvFPa-Ap-gakjaPwRc6Fl6mxHzxEZ_arAVU-IUYeo_s,447
312
- dissect.target-3.14.dev29.dist-info/top_level.txt,sha256=Mn-CQzEYsAbkxrUI0TnplHuXnGVKzxpDw_po_sXpvv4,8
313
- dissect.target-3.14.dev29.dist-info/RECORD,,
325
+ dissect.target-3.15.dist-info/COPYRIGHT,sha256=m-9ih2RVhMiXHI2bf_oNSSgHgkeIvaYRVfKTwFbnJPA,301
326
+ dissect.target-3.15.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
327
+ dissect.target-3.15.dist-info/METADATA,sha256=BvTH2UUruQcHfNYXMWPo6SHAgz7UpvaXcUplDQYBKxI,11107
328
+ dissect.target-3.15.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
329
+ dissect.target-3.15.dist-info/entry_points.txt,sha256=tvFPa-Ap-gakjaPwRc6Fl6mxHzxEZ_arAVU-IUYeo_s,447
330
+ dissect.target-3.15.dist-info/top_level.txt,sha256=Mn-CQzEYsAbkxrUI0TnplHuXnGVKzxpDw_po_sXpvv4,8
331
+ dissect.target-3.15.dist-info/RECORD,,
@@ -1,175 +0,0 @@
1
- from __future__ import annotations
2
-
3
- import gzip
4
- import os
5
- import socket
6
- from typing import BinaryIO, Iterator, Optional
7
-
8
- from dissect.target.filesystem import Filesystem
9
- from dissect.target.helpers.record import UnixUserRecord
10
- from dissect.target.plugin import OperatingSystem, export
11
- from dissect.target.plugins.os.unix.linux._os import LinuxPlugin
12
- from dissect.target.target import Target
13
-
14
-
15
- def netmask_to_bits(netmask):
16
- socket.inet_aton(netmask)
17
-
18
-
19
- def parselines(fp):
20
- parts = []
21
- string = None
22
-
23
- for line in fp:
24
- line = line.strip()
25
-
26
- for parsed_line in line.split(" "):
27
- if parsed_line.startswith('"'):
28
- if parsed_line.endswith('"'):
29
- parts.append(parsed_line[1:-1])
30
- else:
31
- string = [parsed_line[1:]]
32
- elif parsed_line.endswith('"') and parsed_line[-2] != "\\":
33
- string.append(parsed_line[:-1])
34
- parts.append(" ".join(string))
35
- string = None
36
- elif string:
37
- string.append(parsed_line)
38
- else:
39
- parts.append(parsed_line)
40
-
41
- if string:
42
- string.append("\n")
43
-
44
- if parts and not string:
45
- yield parts
46
- parts = []
47
-
48
-
49
- class ConfigNode:
50
- children = None
51
-
52
- def __init__(self):
53
- self.children = {}
54
-
55
- def set(self, path, value):
56
- n = self
57
-
58
- for part in path[:-1]:
59
- if part not in n.children:
60
- n.children[part] = ConfigNode()
61
- n = n.children[part]
62
-
63
- n.children[path[-1]] = value
64
-
65
- def __contains__(self, attr):
66
- return attr in self.children
67
-
68
- def __getattr__(self, attr):
69
- return self.children[attr]
70
-
71
- def __getitem__(self, index):
72
- return self.children[index]
73
-
74
- def items(self):
75
- return self.children.items()
76
-
77
-
78
- class FortigateConfig:
79
- def __init__(self, fp):
80
- self.config = ConfigNode()
81
-
82
- stack = []
83
-
84
- for p in parselines(fp):
85
- # print stack
86
- cmd = p[0]
87
- # print p
88
-
89
- if cmd == "config":
90
- if p[1] == "vdom" and stack == [["vdom"]]:
91
- continue
92
-
93
- stack.append(p[1:])
94
-
95
- elif cmd == "edit":
96
- stack.append(p[1:])
97
-
98
- elif cmd == "end":
99
- stack.pop()
100
-
101
- elif cmd == "next":
102
- stack.pop()
103
-
104
- elif cmd == "set":
105
- path = []
106
- for part in stack:
107
- path += part
108
-
109
- path.append(p[1])
110
- self.config.set(path, p[2:])
111
-
112
-
113
- class FortigatePlugin(LinuxPlugin):
114
- def __init__(self, target: Target):
115
- super().__init__(target)
116
- self.target = target
117
-
118
- fp = self.open_config()
119
- self.config = FortigateConfig(fp)
120
- fp.close()
121
-
122
- @export(record=UnixUserRecord)
123
- def users(self) -> Iterator[UnixUserRecord]:
124
- raise NotImplementedError()
125
-
126
- @export(property=True)
127
- def os(self) -> str:
128
- return OperatingSystem.FORTIGATE.value
129
-
130
- def open_config(self) -> BinaryIO:
131
- fs = self.target.filesystems[0]
132
- if fs.exists("system.conf"):
133
- fp = fs.open("system.conf")
134
- elif fs.exists("config/sys_global.conf.gz"):
135
- entry = fs.get("config/sys_global.conf.gz")
136
- if entry.is_symlink():
137
- entry = fs.get("config/" + os.path.basename(entry.readlink()))
138
-
139
- fp = entry.open()
140
- fp = gzip.GzipFile(fileobj=fp)
141
-
142
- return fp
143
-
144
- @classmethod
145
- def detect(cls, target: Target) -> Optional[Filesystem]:
146
- for fs in target.filesystems:
147
- if fs.exists("/config") and fs.exists("/rootfs.gz"):
148
- return fs
149
-
150
- return None
151
-
152
- @classmethod
153
- def create(cls, target: Target, sysvol: Filesystem) -> FortigatePlugin:
154
- target.fs.mount("/", sysvol)
155
- return cls(target)
156
-
157
- @export(property=True)
158
- def hostname(self) -> str:
159
- return self.config.config.system["global"].hostname[0]
160
-
161
- @export(property=True)
162
- def ips(self) -> list[str]:
163
- r = []
164
- for _, conf in self.config.config.system.interface.children.items():
165
- if "ip" in conf:
166
- r.append(conf.ip[0])
167
- return r
168
-
169
- @export(property=True)
170
- def version(self) -> str:
171
- fp = self.open_config()
172
- r = fp.readline().split("=")[1].rsplit("-", 1)[0]
173
- fp.close()
174
-
175
- return "Fortigate " + r