dissect.target 3.9.dev11__py3-none-any.whl → 3.9.dev13__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.
- dissect/target/loaders/targetd.py +1 -0
- dissect/target/plugins/apps/shell/__init__.py +0 -0
- dissect/target/plugins/{os/windows → apps/shell}/powershell.py +26 -16
- {dissect.target-3.9.dev11.dist-info → dissect.target-3.9.dev13.dist-info}/METADATA +1 -1
- {dissect.target-3.9.dev11.dist-info → dissect.target-3.9.dev13.dist-info}/RECORD +10 -9
- {dissect.target-3.9.dev11.dist-info → dissect.target-3.9.dev13.dist-info}/COPYRIGHT +0 -0
- {dissect.target-3.9.dev11.dist-info → dissect.target-3.9.dev13.dist-info}/LICENSE +0 -0
- {dissect.target-3.9.dev11.dist-info → dissect.target-3.9.dev13.dist-info}/WHEEL +0 -0
- {dissect.target-3.9.dev11.dist-info → dissect.target-3.9.dev13.dist-info}/entry_points.txt +0 -0
- {dissect.target-3.9.dev11.dist-info → dissect.target-3.9.dev13.dist-info}/top_level.txt +0 -0
| 
            File without changes
         | 
| @@ -1,30 +1,34 @@ | |
| 1 | 
            -
            from flow.record.fieldtypes import uri
         | 
| 2 | 
            -
             | 
| 3 1 | 
             
            from dissect.target.exceptions import UnsupportedPluginError
         | 
| 4 2 | 
             
            from dissect.target.helpers.descriptor_extensions import UserRecordDescriptorExtension
         | 
| 5 3 | 
             
            from dissect.target.helpers.record import create_extended_descriptor
         | 
| 6 4 | 
             
            from dissect.target.plugin import Plugin, export
         | 
| 7 5 |  | 
| 8 6 | 
             
            ConsoleHostHistoryRecord = create_extended_descriptor([UserRecordDescriptorExtension])(
         | 
| 9 | 
            -
                " | 
| 7 | 
            +
                "powershell/history",
         | 
| 10 8 | 
             
                [
         | 
| 11 | 
            -
                    ("datetime", " | 
| 9 | 
            +
                    ("datetime", "mtime"),
         | 
| 12 10 | 
             
                    ("string", "command"),
         | 
| 13 | 
            -
                    (" | 
| 11 | 
            +
                    ("path", "source"),
         | 
| 14 12 | 
             
                ],
         | 
| 15 13 | 
             
            )
         | 
| 16 14 |  | 
| 17 15 |  | 
| 18 16 | 
             
            class PowerShellHistoryPlugin(Plugin):
         | 
| 17 | 
            +
                PATHS = [
         | 
| 18 | 
            +
                    "AppData/Roaming/Microsoft/Windows/PowerShell/psreadline",
         | 
| 19 | 
            +
                    ".local/share/powershell/PSReadLine",
         | 
| 20 | 
            +
                ]
         | 
| 21 | 
            +
             | 
| 19 22 | 
             
                def __init__(self, target):
         | 
| 20 23 | 
             
                    super().__init__(target)
         | 
| 24 | 
            +
             | 
| 21 25 | 
             
                    self._history = []
         | 
| 26 | 
            +
             | 
| 22 27 | 
             
                    for user_details in target.user_details.all_with_home():
         | 
| 23 | 
            -
                         | 
| 24 | 
            -
                             | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 | 
            -
                            self._history.append((user_details.user, history_path))
         | 
| 28 | 
            +
                        for ps_path in self.PATHS:
         | 
| 29 | 
            +
                            history_path = user_details.home_path.joinpath(ps_path)
         | 
| 30 | 
            +
                            for history_file in history_path.glob("*_history.txt"):
         | 
| 31 | 
            +
                                self._history.append((user_details.user, history_file))
         | 
| 28 32 |  | 
| 29 33 | 
             
                def check_compatible(self):
         | 
| 30 34 | 
             
                    if not self._history:
         | 
| @@ -35,21 +39,27 @@ class PowerShellHistoryPlugin(Plugin): | |
| 35 39 | 
             
                    """Return PowerShell command history for all users.
         | 
| 36 40 |  | 
| 37 41 | 
             
                    The PowerShell ConsoleHost_history.txt file contains information about the commands executed with PowerShell in
         | 
| 38 | 
            -
                    a terminal. No data is recorded from terminal-less PowerShell sessions.
         | 
| 42 | 
            +
                    a terminal. No data is recorded from terminal-less PowerShell sessions. Commands are saved to disk after the process has completed.
         | 
| 43 | 
            +
                    PSReadLine does not save commands containing 'password', 'asplaintext', 'token', 'apikey' or 'secret'.
         | 
| 39 44 |  | 
| 40 45 | 
             
                    References:
         | 
| 41 46 | 
             
                        - https://0xdf.gitlab.io/2018/11/08/powershell-history-file.html
         | 
| 42 | 
            -
             | 
| 43 | 
            -
             | 
| 44 | 
            -
             | 
| 47 | 
            +
                        - https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_history?view=powershell-7.3#order-of-commands-in-the-history
         | 
| 48 | 
            +
                        - https://learn.microsoft.com/en-us/powershell/module/psreadline/about/about_psreadline?view=powershell-7.3#command-history
         | 
| 49 | 
            +
                    """  # noqa E501
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                    for user, _path in self._history:
         | 
| 52 | 
            +
                        file_mtime = _path.stat().st_mtime
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                        for line in _path.open("r"):
         | 
| 45 55 | 
             
                            line = line.strip()
         | 
| 46 56 | 
             
                            if not line:
         | 
| 47 57 | 
             
                                continue
         | 
| 48 58 |  | 
| 49 59 | 
             
                            yield ConsoleHostHistoryRecord(
         | 
| 50 | 
            -
                                 | 
| 60 | 
            +
                                mtime=file_mtime,
         | 
| 51 61 | 
             
                                command=line,
         | 
| 52 | 
            -
                                 | 
| 62 | 
            +
                                source=_path,
         | 
| 53 63 | 
             
                                _target=self.target,
         | 
| 54 64 | 
             
                                _user=user,
         | 
| 55 65 | 
             
                            )
         | 
| @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            Metadata-Version: 2.1
         | 
| 2 2 | 
             
            Name: dissect.target
         | 
| 3 | 
            -
            Version: 3.9. | 
| 3 | 
            +
            Version: 3.9.dev13
         | 
| 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
         | 
| @@ -70,7 +70,7 @@ dissect/target/loaders/res.py,sha256=2IAm-f83fvMUeK5J0g5jNVy2-24k8qKYijimcFvZ47I | |
| 70 70 | 
             
            dissect/target/loaders/tanium.py,sha256=L_OH9bhjbzoGgYwRsQNGJzg9h2JCnfor4e5Ftg_nPVk,1533
         | 
| 71 71 | 
             
            dissect/target/loaders/tar.py,sha256=55chcbh9CDTczSmSPJ3O1FrfpXaZTTPL28Oqih8rPOA,2998
         | 
| 72 72 | 
             
            dissect/target/loaders/target.py,sha256=mfkNz586eHb1PuzbwrvRPf9CcoPDLm5wPGFT1_rMH5s,662
         | 
| 73 | 
            -
            dissect/target/loaders/targetd.py,sha256= | 
| 73 | 
            +
            dissect/target/loaders/targetd.py,sha256=SD3AvzvHHcsoishoLaTBfFiMUliJjmfQeCrXzhWucD4,4431
         | 
| 74 74 | 
             
            dissect/target/loaders/vb.py,sha256=CnQcn7bAkMzIB1y-lWLtPPXdIVsyeDaT6hTZEurjkV4,2072
         | 
| 75 75 | 
             
            dissect/target/loaders/vbox.py,sha256=bOxsUiJ0IKx2GETs12FJkYChXBVatSkvWdLmhR5XPZc,691
         | 
| 76 76 | 
             
            dissect/target/loaders/velociraptor.py,sha256=X-nks-V1QpuEfzDgI0_MPu_Fi--a4BEL6g8dDn_3lHU,2555
         | 
| @@ -88,6 +88,8 @@ dissect/target/plugins/apps/remoteaccess/__init__.py,sha256=47DEQpj8HBSa-_TImW-5 | |
| 88 88 | 
             
            dissect/target/plugins/apps/remoteaccess/anydesk.py,sha256=eifgJ308gosLSh7cQhjJFuoubI0Z6fNDryFg7u-0ZAM,2518
         | 
| 89 89 | 
             
            dissect/target/plugins/apps/remoteaccess/remoteaccess.py,sha256=hC77FCcsfYkHi50mQPDI9pfKpDslMA_sM5AeIOqdaQo,2482
         | 
| 90 90 | 
             
            dissect/target/plugins/apps/remoteaccess/teamviewer.py,sha256=pdk-ELQtR1xpIw38FXm_DZOiald5w1gZznx8ngR-7gk,2571
         | 
| 91 | 
            +
            dissect/target/plugins/apps/shell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| 92 | 
            +
            dissect/target/plugins/apps/shell/powershell.py,sha256=qLWlKC6qpbVVLM-uuevzdowEeWmLnuEF04pJw0Ukwxk,2633
         | 
| 91 93 | 
             
            dissect/target/plugins/apps/vpns/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| 92 94 | 
             
            dissect/target/plugins/apps/vpns/wireguard.py,sha256=LpGwbABhrViMVUJ-QWS1leLHyjwVtIMIp-dzkvarE0c,5773
         | 
| 93 95 | 
             
            dissect/target/plugins/apps/webservers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| @@ -196,7 +198,6 @@ dissect/target/plugins/os/windows/generic.py,sha256=qkTzP5cvzDKUASbVlUU5vb3b102m | |
| 196 198 | 
             
            dissect/target/plugins/os/windows/lnk.py,sha256=AMP_SiJnNzBmosjKMCstQcn2ah0w7MyXeEm_L8YBc4g,7802
         | 
| 197 199 | 
             
            dissect/target/plugins/os/windows/locale.py,sha256=YlRqFteHGSE-A21flbCKP1jXUTgyXKzaqBEiiQVLFUs,2191
         | 
| 198 200 | 
             
            dissect/target/plugins/os/windows/notifications.py,sha256=tBgZKnDCXWFtz7chHIo5cKQf2swcTTB3MMcecfTZ-4w,4773
         | 
| 199 | 
            -
            dissect/target/plugins/os/windows/powershell.py,sha256=dsaFb-_vsMZ4aWCUyMKSnUqMmyXaPh0IrOeCxpgehcg,2086
         | 
| 200 201 | 
             
            dissect/target/plugins/os/windows/prefetch.py,sha256=favUyI5Pywi8Ho8fUye3gnXcM9BqEIMhFcSa1idQQBg,10304
         | 
| 201 202 | 
             
            dissect/target/plugins/os/windows/recyclebin.py,sha256=aqp1kc8A6k5UTt6ebycuejPd0QJwNIX1xIu21M0CUGU,4926
         | 
| 202 203 | 
             
            dissect/target/plugins/os/windows/registry.py,sha256=gIKbUTejfcCVz-5vcOrCPbYRLuieNV5BMo891_4_X3A,10034
         | 
| @@ -255,10 +256,10 @@ dissect/target/volumes/bde.py,sha256=gYGg5yF9MNARwNzEkrEfZmKkxyZW4rhLkpdnPJCbhGk | |
| 255 256 | 
             
            dissect/target/volumes/disk.py,sha256=95grSsPt1BLVpKwTclwQYzPFGKTkFFqapIk0RoGWf38,968
         | 
| 256 257 | 
             
            dissect/target/volumes/lvm.py,sha256=zXAfszxNR6tOGrKAtAa_E-JhjI-sXQyR4VYLXD-kqCw,1616
         | 
| 257 258 | 
             
            dissect/target/volumes/vmfs.py,sha256=mlAJ8278tYaoRjk1u6tFFlCaDQUrVu5ZZE4ikiFvxi8,1707
         | 
| 258 | 
            -
            dissect.target-3.9. | 
| 259 | 
            -
            dissect.target-3.9. | 
| 260 | 
            -
            dissect.target-3.9. | 
| 261 | 
            -
            dissect.target-3.9. | 
| 262 | 
            -
            dissect.target-3.9. | 
| 263 | 
            -
            dissect.target-3.9. | 
| 264 | 
            -
            dissect.target-3.9. | 
| 259 | 
            +
            dissect.target-3.9.dev13.dist-info/COPYRIGHT,sha256=m-9ih2RVhMiXHI2bf_oNSSgHgkeIvaYRVfKTwFbnJPA,301
         | 
| 260 | 
            +
            dissect.target-3.9.dev13.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
         | 
| 261 | 
            +
            dissect.target-3.9.dev13.dist-info/METADATA,sha256=tRKFN5yNQjNPNEcQHlXh4GKIky9TOwb8So9tgbPAHOU,9752
         | 
| 262 | 
            +
            dissect.target-3.9.dev13.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
         | 
| 263 | 
            +
            dissect.target-3.9.dev13.dist-info/entry_points.txt,sha256=tvFPa-Ap-gakjaPwRc6Fl6mxHzxEZ_arAVU-IUYeo_s,447
         | 
| 264 | 
            +
            dissect.target-3.9.dev13.dist-info/top_level.txt,sha256=Mn-CQzEYsAbkxrUI0TnplHuXnGVKzxpDw_po_sXpvv4,8
         | 
| 265 | 
            +
            dissect.target-3.9.dev13.dist-info/RECORD,,
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         |