dissect.target 3.8.dev32__py3-none-any.whl → 3.8.dev34__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/velociraptor.py +9 -5
- dissect/target/tools/shell.py +32 -0
- {dissect.target-3.8.dev32.dist-info → dissect.target-3.8.dev34.dist-info}/METADATA +1 -1
- {dissect.target-3.8.dev32.dist-info → dissect.target-3.8.dev34.dist-info}/RECORD +9 -9
- {dissect.target-3.8.dev32.dist-info → dissect.target-3.8.dev34.dist-info}/COPYRIGHT +0 -0
- {dissect.target-3.8.dev32.dist-info → dissect.target-3.8.dev34.dist-info}/LICENSE +0 -0
- {dissect.target-3.8.dev32.dist-info → dissect.target-3.8.dev34.dist-info}/WHEEL +0 -0
- {dissect.target-3.8.dev32.dist-info → dissect.target-3.8.dev34.dist-info}/entry_points.txt +0 -0
- {dissect.target-3.8.dev32.dist-info → dissect.target-3.8.dev34.dist-info}/top_level.txt +0 -0
@@ -14,17 +14,21 @@ FILESYSTEMS_ROOT = "uploads"
|
|
14
14
|
|
15
15
|
def find_fs_directories(path: Path) -> tuple[Optional[OperatingSystem], Optional[list[Path]]]:
|
16
16
|
# As of Velociraptor version 0.6.7 the structure of the Velociraptor Offline Collector varies by operating system
|
17
|
-
# Generic.Collectors.File (
|
17
|
+
# Generic.Collectors.File (Linux and OS-X) root filesystem is 'uploads/file/'
|
18
18
|
# Generic.Collectors.File (Windows) and Windows.KapeFiles.Targets (Windows) root filesystem is
|
19
19
|
# 'uploads/<file-accessor>/<drive-name>/'
|
20
20
|
fs_root = path.joinpath(FILESYSTEMS_ROOT)
|
21
|
-
|
22
|
-
|
23
|
-
|
21
|
+
|
22
|
+
# Linux and OS-X
|
23
|
+
file_root = fs_root.joinpath("file")
|
24
|
+
if file_root.exists():
|
25
|
+
os_type, dirs = find_dirs(file_root)
|
26
|
+
if os_type in [OperatingSystem.LINUX, OperatingSystem.OSX]:
|
27
|
+
return os_type, [dirs[0]]
|
24
28
|
|
25
29
|
# This suppports usage of the ntfs accessor 'uploads/mft/%5C%5C.%5CC%3A' not the accessors lazy_ntfs or auto
|
26
30
|
mft_root = fs_root.joinpath("mft")
|
27
|
-
if
|
31
|
+
if mft_root.exists():
|
28
32
|
# If the `mft` directory exists, assume all the subdirectories are volumes
|
29
33
|
return OperatingSystem.WINDOWS, list(mft_root.iterdir())
|
30
34
|
|
dissect/target/tools/shell.py
CHANGED
@@ -143,6 +143,15 @@ class TargetCmd(cmd.Cmd):
|
|
143
143
|
|
144
144
|
return cmd.Cmd.default(self, line)
|
145
145
|
|
146
|
+
def emptyline(self):
|
147
|
+
"""This function forces Python's cmd.Cmd module to behave like a regular shell.
|
148
|
+
|
149
|
+
When entering an empty command, the cmd module will by default repeat the previous command.
|
150
|
+
By defining an empty ``emptyline`` function we make sure no command is executed instead.
|
151
|
+
See https://stackoverflow.com/a/16479030
|
152
|
+
"""
|
153
|
+
pass
|
154
|
+
|
146
155
|
def _exec(self, func, command_args_str):
|
147
156
|
"""
|
148
157
|
Command execution helper that chains initial command and piped
|
@@ -720,6 +729,20 @@ class TargetCli(TargetCmd):
|
|
720
729
|
shutil.copyfileobj(fh, stdout)
|
721
730
|
stdout.flush()
|
722
731
|
|
732
|
+
@arg("path")
|
733
|
+
def cmd_zcat(self, args, stdout):
|
734
|
+
"""print file content from compressed files"""
|
735
|
+
paths = self.resolveglobpath(args.path)
|
736
|
+
stdout = stdout.buffer
|
737
|
+
for path in paths:
|
738
|
+
path = self.checkfile(path)
|
739
|
+
if not path:
|
740
|
+
continue
|
741
|
+
|
742
|
+
fh = fsutil.open_decompress(path)
|
743
|
+
shutil.copyfileobj(fh, stdout)
|
744
|
+
stdout.flush()
|
745
|
+
|
723
746
|
@arg("path")
|
724
747
|
def cmd_hexdump(self, args, stdout):
|
725
748
|
"""print a hexdump of the first X bytes"""
|
@@ -748,6 +771,15 @@ class TargetCli(TargetCmd):
|
|
748
771
|
|
749
772
|
pydoc.pager(path.open("rt", errors="ignore").read(10 * 1024 * 1024))
|
750
773
|
|
774
|
+
@arg("path")
|
775
|
+
def cmd_zless(self, args, stdout):
|
776
|
+
"""open the first 10 MB of a compressed file with zless"""
|
777
|
+
path = self.checkfile(args.path)
|
778
|
+
if not path:
|
779
|
+
return
|
780
|
+
|
781
|
+
pydoc.pager(fsutil.open_decompress(path, "rt").read(10 * 1024 * 1024))
|
782
|
+
|
751
783
|
@arg("path", nargs="+")
|
752
784
|
def cmd_readlink(self, args, stdout):
|
753
785
|
"""print resolved symbolic links or canonical file names"""
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: dissect.target
|
3
|
-
Version: 3.8.
|
3
|
+
Version: 3.8.dev34
|
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
|
@@ -72,7 +72,7 @@ dissect/target/loaders/tar.py,sha256=55chcbh9CDTczSmSPJ3O1FrfpXaZTTPL28Oqih8rPOA
|
|
72
72
|
dissect/target/loaders/target.py,sha256=mfkNz586eHb1PuzbwrvRPf9CcoPDLm5wPGFT1_rMH5s,662
|
73
73
|
dissect/target/loaders/vb.py,sha256=CnQcn7bAkMzIB1y-lWLtPPXdIVsyeDaT6hTZEurjkV4,2072
|
74
74
|
dissect/target/loaders/vbox.py,sha256=bOxsUiJ0IKx2GETs12FJkYChXBVatSkvWdLmhR5XPZc,691
|
75
|
-
dissect/target/loaders/velociraptor.py,sha256=
|
75
|
+
dissect/target/loaders/velociraptor.py,sha256=rfZXTDm3eSgz29n1GOOswArdRsOf2ctJmSHb8RvCRQ0,2240
|
76
76
|
dissect/target/loaders/vma.py,sha256=sWjkQrdq3zAJyckInhvJVsVfihoU4wLM25RMT8L2KWo,519
|
77
77
|
dissect/target/loaders/vmx.py,sha256=By8AmbBmVd3U13oIZs9_0mVV3tpWNPoJBLmHZXqs1GE,740
|
78
78
|
dissect/target/loaders/xva.py,sha256=66rsZGPwrLOaHtzou5oicYuOdIWQOeKtvvXsGm89dqg,544
|
@@ -240,7 +240,7 @@ dissect/target/tools/logging.py,sha256=5ZnumtMWLyslxfrUGZ4ntRyf3obOOhmn8SBjKfdLc
|
|
240
240
|
dissect/target/tools/mount.py,sha256=oPjE954wRPnuhiXavoTSoZkMGKa5GpH9cMWZ3-piQd8,2320
|
241
241
|
dissect/target/tools/query.py,sha256=Btt_PMVAWIYHhPLg0b8u5e_TDdG8CG5xapxLu82dbSE,11466
|
242
242
|
dissect/target/tools/reg.py,sha256=37g_Xdb5ZbYAkMgQFmZNdKM_wWP9Bcw2Kk6quo1gwZ4,2147
|
243
|
-
dissect/target/tools/shell.py,sha256
|
243
|
+
dissect/target/tools/shell.py,sha256=HICeIN5kCZYyGmAm_riWO9xrGnQmOzSp-Oici4QeO6Y,36003
|
244
244
|
dissect/target/tools/utils.py,sha256=i9gHb-_IK73NEiA9sKVCPkeY80lRj_RYpGXnsy_4Ak8,6727
|
245
245
|
dissect/target/tools/dump/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
246
246
|
dissect/target/tools/dump/run.py,sha256=yHn9xl_VjasgiuLpjtZdnLW32QCbkwHfnnTPY6Ck_aw,9689
|
@@ -251,10 +251,10 @@ dissect/target/volumes/bde.py,sha256=gYGg5yF9MNARwNzEkrEfZmKkxyZW4rhLkpdnPJCbhGk
|
|
251
251
|
dissect/target/volumes/disk.py,sha256=95grSsPt1BLVpKwTclwQYzPFGKTkFFqapIk0RoGWf38,968
|
252
252
|
dissect/target/volumes/lvm.py,sha256=zXAfszxNR6tOGrKAtAa_E-JhjI-sXQyR4VYLXD-kqCw,1616
|
253
253
|
dissect/target/volumes/vmfs.py,sha256=mlAJ8278tYaoRjk1u6tFFlCaDQUrVu5ZZE4ikiFvxi8,1707
|
254
|
-
dissect.target-3.8.
|
255
|
-
dissect.target-3.8.
|
256
|
-
dissect.target-3.8.
|
257
|
-
dissect.target-3.8.
|
258
|
-
dissect.target-3.8.
|
259
|
-
dissect.target-3.8.
|
260
|
-
dissect.target-3.8.
|
254
|
+
dissect.target-3.8.dev34.dist-info/COPYRIGHT,sha256=m-9ih2RVhMiXHI2bf_oNSSgHgkeIvaYRVfKTwFbnJPA,301
|
255
|
+
dissect.target-3.8.dev34.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
256
|
+
dissect.target-3.8.dev34.dist-info/METADATA,sha256=w87iqHAzoUqr5rasT7zTj2DHOnBqHTJK0SFJctHj9l8,9752
|
257
|
+
dissect.target-3.8.dev34.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
|
258
|
+
dissect.target-3.8.dev34.dist-info/entry_points.txt,sha256=tvFPa-Ap-gakjaPwRc6Fl6mxHzxEZ_arAVU-IUYeo_s,447
|
259
|
+
dissect.target-3.8.dev34.dist-info/top_level.txt,sha256=Mn-CQzEYsAbkxrUI0TnplHuXnGVKzxpDw_po_sXpvv4,8
|
260
|
+
dissect.target-3.8.dev34.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|