dissect.target 3.20.dev35__tar.gz → 3.20.dev38__tar.gz

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.
Files changed (649) hide show
  1. {dissect_target-3.20.dev35/dissect.target.egg-info → dissect_target-3.20.dev38}/PKG-INFO +1 -1
  2. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/filesystems/config.py +1 -1
  3. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/helpers/compat/path_common.py +5 -5
  4. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/helpers/configutil.py +31 -29
  5. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/helpers/cyber.py +2 -0
  6. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/helpers/docs.py +1 -1
  7. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/helpers/keychain.py +2 -0
  8. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/helpers/mount.py +2 -1
  9. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugin.py +15 -13
  10. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/av/mcafee.py +2 -0
  11. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/av/sophos.py +2 -0
  12. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/av/trendmicro.py +2 -0
  13. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/browser/chromium.py +27 -6
  14. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/shell/powershell.py +6 -2
  15. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/shell/wget.py +1 -1
  16. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/ssh/openssh.py +2 -0
  17. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/ssh/opensshd.py +2 -0
  18. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/vpn/wireguard.py +9 -9
  19. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/webhosting/cpanel.py +2 -0
  20. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/webserver/caddy.py +2 -0
  21. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/webserver/nginx.py +2 -0
  22. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/child/esxi.py +3 -1
  23. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/child/virtuozzo.py +12 -8
  24. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/filesystem/acquire_hash.py +2 -1
  25. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/filesystem/icat.py +15 -11
  26. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/filesystem/ntfs/mft.py +2 -0
  27. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/filesystem/ntfs/mft_timeline.py +3 -1
  28. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/filesystem/ntfs/usnjrnl.py +2 -0
  29. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/filesystem/ntfs/utils.py +3 -1
  30. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/filesystem/unix/suid.py +4 -1
  31. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/filesystem/walkfs.py +2 -0
  32. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/general/example.py +2 -2
  33. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/general/loaders.py +1 -1
  34. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/general/network.py +7 -0
  35. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/general/osinfo.py +1 -0
  36. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/general/plugins.py +4 -0
  37. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/_os.py +2 -1
  38. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/bsd/citrix/history.py +2 -0
  39. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/bsd/osx/network.py +2 -0
  40. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/bsd/osx/user.py +4 -0
  41. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/cronjobs.py +8 -4
  42. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/etc/etc.py +4 -0
  43. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/generic.py +2 -0
  44. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/history.py +27 -25
  45. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/linux/cmdline.py +2 -0
  46. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/linux/debian/apt.py +4 -1
  47. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/linux/debian/dpkg.py +3 -3
  48. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/linux/environ.py +2 -0
  49. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/linux/fortios/generic.py +2 -0
  50. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/linux/fortios/locale.py +2 -0
  51. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/linux/modules.py +2 -0
  52. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/linux/netstat.py +2 -0
  53. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/linux/processes.py +2 -0
  54. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/linux/redhat/yum.py +4 -1
  55. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/linux/services.py +5 -3
  56. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/linux/sockets.py +2 -0
  57. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/linux/suse/zypper.py +4 -1
  58. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/locale.py +2 -0
  59. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/locate/gnulocate.py +4 -2
  60. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/locate/mlocate.py +2 -0
  61. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/locate/plocate.py +3 -1
  62. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/log/atop.py +2 -0
  63. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/log/audit.py +3 -1
  64. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/log/auth.py +4 -2
  65. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/log/lastlog.py +5 -3
  66. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/log/messages.py +2 -0
  67. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/log/utmp.py +4 -2
  68. dissect_target-3.20.dev38/dissect/target/plugins/os/unix/packagemanager.py +48 -0
  69. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/shadow.py +3 -1
  70. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/trash.py +1 -1
  71. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/activitiescache.py +9 -4
  72. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/adpolicy.py +2 -1
  73. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/amcache.py +16 -13
  74. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/defender.py +3 -3
  75. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/dpapi/keyprovider/credhist.py +3 -0
  76. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/dpapi/keyprovider/empty.py +3 -0
  77. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/dpapi/keyprovider/keychain.py +3 -0
  78. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/dpapi/keyprovider/lsa.py +3 -0
  79. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/env.py +1 -2
  80. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/exchange/exchange.py +6 -4
  81. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/generic.py +20 -18
  82. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/lnk.py +2 -0
  83. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/locale.py +9 -3
  84. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/log/etl.py +5 -4
  85. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/log/evt.py +12 -8
  86. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/log/evtx.py +9 -7
  87. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/log/pfro.py +2 -1
  88. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/network.py +2 -0
  89. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/notifications.py +6 -4
  90. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/prefetch.py +7 -2
  91. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/regf/7zip.py +9 -1
  92. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/regf/auditpol.py +2 -1
  93. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/regf/bam.py +3 -1
  94. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/regf/cit.py +14 -12
  95. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/regf/clsid.py +6 -3
  96. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/regf/firewall.py +2 -1
  97. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/regf/mru.py +9 -8
  98. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/regf/nethist.py +6 -3
  99. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/regf/recentfilecache.py +3 -1
  100. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/regf/regf.py +5 -1
  101. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/regf/shimcache.py +1 -1
  102. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/regf/usb.py +2 -1
  103. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/regf/userassist.py +2 -1
  104. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/registry.py +11 -0
  105. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/services.py +3 -2
  106. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/startupinfo.py +7 -2
  107. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/syscache.py +3 -1
  108. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/tasks.py +1 -1
  109. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/thumbcache.py +11 -5
  110. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/ual.py +12 -9
  111. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/wua_history.py +0 -1
  112. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/tools/dump/utils.py +4 -0
  113. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/tools/shell.py +2 -1
  114. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38/dissect.target.egg-info}/PKG-INFO +1 -1
  115. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect.target.egg-info/SOURCES.txt +1 -1
  116. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/_docs/Makefile +1 -1
  117. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/_docs/conf.py +5 -0
  118. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/general/test_plugins.py +4 -4
  119. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/regf/test_cit.py +2 -0
  120. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/test_registry.py +11 -6
  121. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/test_plugin.py +69 -0
  122. dissect_target-3.20.dev38/tests/volumes/__init__.py +0 -0
  123. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tox.ini +2 -1
  124. dissect_target-3.20.dev35/dissect/target/plugins/os/unix/etc.py +0 -9
  125. dissect_target-3.20.dev35/dissect/target/plugins/os/unix/packagemanager.py +0 -81
  126. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/COPYRIGHT +0 -0
  127. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/LICENSE +0 -0
  128. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/MANIFEST.in +0 -0
  129. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/README.md +0 -0
  130. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/__init__.py +0 -0
  131. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/container.py +0 -0
  132. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/containers/__init__.py +0 -0
  133. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/containers/asdf.py +0 -0
  134. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/containers/ewf.py +0 -0
  135. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/containers/fortifw.py +0 -0
  136. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/containers/hdd.py +0 -0
  137. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/containers/hds.py +0 -0
  138. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/containers/qcow2.py +0 -0
  139. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/containers/raw.py +0 -0
  140. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/containers/split.py +0 -0
  141. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/containers/vdi.py +0 -0
  142. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/containers/vhd.py +0 -0
  143. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/containers/vhdx.py +0 -0
  144. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/containers/vmdk.py +0 -0
  145. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/data/autocompletion/target_bash_completion.sh +0 -0
  146. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/exceptions.py +0 -0
  147. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/filesystem.py +0 -0
  148. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/filesystems/__init__.py +0 -0
  149. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/filesystems/ad1.py +0 -0
  150. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/filesystems/btrfs.py +0 -0
  151. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/filesystems/cb.py +0 -0
  152. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/filesystems/cpio.py +0 -0
  153. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/filesystems/dir.py +0 -0
  154. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/filesystems/exfat.py +0 -0
  155. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/filesystems/extfs.py +0 -0
  156. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/filesystems/fat.py +0 -0
  157. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/filesystems/ffs.py +0 -0
  158. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/filesystems/itunes.py +0 -0
  159. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/filesystems/jffs.py +0 -0
  160. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/filesystems/ntfs.py +0 -0
  161. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/filesystems/overlay.py +0 -0
  162. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/filesystems/smb.py +0 -0
  163. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/filesystems/squashfs.py +0 -0
  164. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/filesystems/tar.py +0 -0
  165. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/filesystems/vmfs.py +0 -0
  166. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/filesystems/vmtar.py +0 -0
  167. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/filesystems/xfs.py +0 -0
  168. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/filesystems/zip.py +0 -0
  169. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/helpers/__init__.py +0 -0
  170. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/helpers/cache.py +0 -0
  171. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/helpers/compat/__init__.py +0 -0
  172. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/helpers/compat/path_310.py +0 -0
  173. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/helpers/compat/path_311.py +0 -0
  174. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/helpers/compat/path_312.py +0 -0
  175. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/helpers/compat/path_39.py +0 -0
  176. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/helpers/config.py +0 -0
  177. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/helpers/data/windowsZones.xml +0 -0
  178. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/helpers/descriptor_extensions.py +0 -0
  179. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/helpers/fsutil.py +0 -0
  180. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/helpers/hashutil.py +0 -0
  181. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/helpers/lazy.py +0 -0
  182. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/helpers/loaderutil.py +0 -0
  183. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/helpers/localeutil.py +0 -0
  184. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/helpers/mui.py +0 -0
  185. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/helpers/polypath.py +0 -0
  186. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/helpers/protobuf.py +0 -0
  187. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/helpers/record.py +0 -0
  188. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/helpers/record_modifier.py +0 -0
  189. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/helpers/regutil.py +0 -0
  190. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/helpers/shell_application_ids.py +0 -0
  191. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/helpers/shell_folder_ids.py +0 -0
  192. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/helpers/utils.py +0 -0
  193. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loader.py +0 -0
  194. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/__init__.py +0 -0
  195. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/ab.py +0 -0
  196. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/ad1.py +0 -0
  197. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/asdf.py +0 -0
  198. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/cb.py +0 -0
  199. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/cyber.py +0 -0
  200. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/dir.py +0 -0
  201. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/hyperv.py +0 -0
  202. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/itunes.py +0 -0
  203. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/kape.py +0 -0
  204. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/libvirt.py +0 -0
  205. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/local.py +0 -0
  206. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/log.py +0 -0
  207. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/mqtt.py +0 -0
  208. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/multiraw.py +0 -0
  209. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/ova.py +0 -0
  210. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/overlay.py +0 -0
  211. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/ovf.py +0 -0
  212. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/phobos.py +0 -0
  213. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/profile.py +0 -0
  214. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/pvm.py +0 -0
  215. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/pvs.py +0 -0
  216. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/raw.py +0 -0
  217. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/remote.py +0 -0
  218. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/res.py +0 -0
  219. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/smb.py +0 -0
  220. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/tanium.py +0 -0
  221. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/tar.py +0 -0
  222. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/target.py +0 -0
  223. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/utm.py +0 -0
  224. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/vb.py +0 -0
  225. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/vbox.py +0 -0
  226. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/velociraptor.py +0 -0
  227. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/vma.py +0 -0
  228. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/vmwarevm.py +0 -0
  229. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/vmx.py +0 -0
  230. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/loaders/xva.py +0 -0
  231. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/__init__.py +0 -0
  232. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/__init__.py +0 -0
  233. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/av/__init__.py +0 -0
  234. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/av/symantec.py +0 -0
  235. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/browser/__init__.py +0 -0
  236. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/browser/brave.py +0 -0
  237. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/browser/browser.py +0 -0
  238. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/browser/chrome.py +0 -0
  239. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/browser/edge.py +0 -0
  240. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/browser/firefox.py +0 -0
  241. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/browser/iexplore.py +0 -0
  242. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/container/__init__.py +0 -0
  243. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/container/docker.py +0 -0
  244. {dissect_target-3.20.dev35/dissect/target/plugins/apps/remoteaccess → dissect_target-3.20.dev38/dissect/target/plugins/apps/other}/__init__.py +0 -0
  245. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/other/env.py +0 -0
  246. {dissect_target-3.20.dev35/dissect/target/plugins/apps/shell → dissect_target-3.20.dev38/dissect/target/plugins/apps/remoteaccess}/__init__.py +0 -0
  247. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/remoteaccess/anydesk.py +0 -0
  248. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/remoteaccess/remoteaccess.py +0 -0
  249. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/remoteaccess/teamviewer.py +0 -0
  250. {dissect_target-3.20.dev35/dissect/target/plugins/apps/ssh → dissect_target-3.20.dev38/dissect/target/plugins/apps/shell}/__init__.py +0 -0
  251. {dissect_target-3.20.dev35/dissect/target/plugins/apps/texteditor → dissect_target-3.20.dev38/dissect/target/plugins/apps/ssh}/__init__.py +0 -0
  252. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/ssh/putty.py +0 -0
  253. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/ssh/ssh.py +0 -0
  254. {dissect_target-3.20.dev35/dissect/target/plugins/apps/virtualization → dissect_target-3.20.dev38/dissect/target/plugins/apps/texteditor}/__init__.py +0 -0
  255. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/texteditor/texteditor.py +0 -0
  256. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/texteditor/windowsnotepad.py +0 -0
  257. {dissect_target-3.20.dev35/dissect/target/plugins/apps/vpn → dissect_target-3.20.dev38/dissect/target/plugins/apps/virtualization}/__init__.py +0 -0
  258. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/virtualization/vmware_workstation.py +0 -0
  259. {dissect_target-3.20.dev35/dissect/target/plugins/apps/webhosting → dissect_target-3.20.dev38/dissect/target/plugins/apps/vpn}/__init__.py +0 -0
  260. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/vpn/openvpn.py +0 -0
  261. {dissect_target-3.20.dev35/dissect/target/plugins/apps/webserver → dissect_target-3.20.dev38/dissect/target/plugins/apps/webhosting}/__init__.py +0 -0
  262. {dissect_target-3.20.dev35/dissect/target/plugins/child → dissect_target-3.20.dev38/dissect/target/plugins/apps/webserver}/__init__.py +0 -0
  263. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/webserver/apache.py +0 -0
  264. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/webserver/citrix.py +0 -0
  265. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/webserver/iis.py +0 -0
  266. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/apps/webserver/webserver.py +0 -0
  267. {dissect_target-3.20.dev35/dissect/target/plugins/filesystem → dissect_target-3.20.dev38/dissect/target/plugins/child}/__init__.py +0 -0
  268. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/child/docker.py +0 -0
  269. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/child/hyperv.py +0 -0
  270. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/child/parallels.py +0 -0
  271. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/child/qemu.py +0 -0
  272. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/child/vmware_workstation.py +0 -0
  273. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/child/wsl.py +0 -0
  274. {dissect_target-3.20.dev35/dissect/target/plugins/filesystem/ntfs → dissect_target-3.20.dev38/dissect/target/plugins/filesystem}/__init__.py +0 -0
  275. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/filesystem/acquire_handles.py +0 -0
  276. {dissect_target-3.20.dev35/dissect/target/plugins/filesystem/unix → dissect_target-3.20.dev38/dissect/target/plugins/filesystem/ntfs}/__init__.py +0 -0
  277. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/filesystem/resolver.py +0 -0
  278. {dissect_target-3.20.dev35/dissect/target/plugins/general → dissect_target-3.20.dev38/dissect/target/plugins/filesystem/unix}/__init__.py +0 -0
  279. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/filesystem/unix/capability.py +0 -0
  280. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/filesystem/yara.py +0 -0
  281. {dissect_target-3.20.dev35/dissect/target/plugins/os → dissect_target-3.20.dev38/dissect/target/plugins/general}/__init__.py +0 -0
  282. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/general/config.py +0 -0
  283. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/general/default.py +0 -0
  284. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/general/scrape.py +0 -0
  285. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/general/users.py +0 -0
  286. {dissect_target-3.20.dev35/dissect/target/plugins/os/unix → dissect_target-3.20.dev38/dissect/target/plugins/os}/__init__.py +0 -0
  287. {dissect_target-3.20.dev35/dissect/target/plugins/os/unix/bsd → dissect_target-3.20.dev38/dissect/target/plugins/os/unix}/__init__.py +0 -0
  288. {dissect_target-3.20.dev35/dissect/target/plugins/os/unix/bsd/citrix → dissect_target-3.20.dev38/dissect/target/plugins/os/unix/bsd}/__init__.py +0 -0
  289. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/bsd/_os.py +0 -0
  290. {dissect_target-3.20.dev35/dissect/target/plugins/os/unix/bsd/freebsd → dissect_target-3.20.dev38/dissect/target/plugins/os/unix/bsd/citrix}/__init__.py +0 -0
  291. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/bsd/citrix/_os.py +0 -0
  292. {dissect_target-3.20.dev35/dissect/target/plugins/os/unix/bsd/ios → dissect_target-3.20.dev38/dissect/target/plugins/os/unix/bsd/freebsd}/__init__.py +0 -0
  293. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/bsd/freebsd/_os.py +0 -0
  294. {dissect_target-3.20.dev35/dissect/target/plugins/os/unix/bsd/openbsd → dissect_target-3.20.dev38/dissect/target/plugins/os/unix/bsd/ios}/__init__.py +0 -0
  295. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/bsd/ios/_os.py +0 -0
  296. {dissect_target-3.20.dev35/dissect/target/plugins/os/unix/bsd/osx → dissect_target-3.20.dev38/dissect/target/plugins/os/unix/bsd/openbsd}/__init__.py +0 -0
  297. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/bsd/openbsd/_os.py +0 -0
  298. {dissect_target-3.20.dev35/dissect/target/plugins/os/unix/esxi → dissect_target-3.20.dev38/dissect/target/plugins/os/unix/bsd/osx}/__init__.py +0 -0
  299. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/bsd/osx/_os.py +0 -0
  300. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/datetime.py +0 -0
  301. {dissect_target-3.20.dev35/dissect/target/plugins/os/unix/etc → dissect_target-3.20.dev38/dissect/target/plugins/os/unix/esxi}/__init__.py +0 -0
  302. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/esxi/_os.py +0 -0
  303. {dissect_target-3.20.dev35/dissect/target/plugins/os/unix/linux → dissect_target-3.20.dev38/dissect/target/plugins/os/unix/etc}/__init__.py +0 -0
  304. {dissect_target-3.20.dev35/dissect/target/plugins/os/unix/linux/android → dissect_target-3.20.dev38/dissect/target/plugins/os/unix/linux}/__init__.py +0 -0
  305. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/linux/_os.py +0 -0
  306. {dissect_target-3.20.dev35/dissect/target/plugins/os/unix/linux/debian → dissect_target-3.20.dev38/dissect/target/plugins/os/unix/linux/android}/__init__.py +0 -0
  307. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/linux/android/_os.py +0 -0
  308. {dissect_target-3.20.dev35/dissect/target/plugins/os/unix/linux/debian/vyos → dissect_target-3.20.dev38/dissect/target/plugins/os/unix/linux/debian}/__init__.py +0 -0
  309. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/linux/debian/_os.py +0 -0
  310. {dissect_target-3.20.dev35/dissect/target/plugins/os/unix/linux/fortios → dissect_target-3.20.dev38/dissect/target/plugins/os/unix/linux/debian/vyos}/__init__.py +0 -0
  311. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/linux/debian/vyos/_os.py +0 -0
  312. {dissect_target-3.20.dev35/dissect/target/plugins/os/unix/linux/redhat → dissect_target-3.20.dev38/dissect/target/plugins/os/unix/linux/fortios}/__init__.py +0 -0
  313. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/linux/fortios/_keys.py +0 -0
  314. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/linux/fortios/_os.py +0 -0
  315. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/linux/iptables.py +0 -0
  316. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/linux/network_managers.py +0 -0
  317. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/linux/proc.py +0 -0
  318. {dissect_target-3.20.dev35/dissect/target/plugins/os/unix/linux/suse → dissect_target-3.20.dev38/dissect/target/plugins/os/unix/linux/redhat}/__init__.py +0 -0
  319. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/linux/redhat/_os.py +0 -0
  320. {dissect_target-3.20.dev35/dissect/target/plugins/os/unix/locate → dissect_target-3.20.dev38/dissect/target/plugins/os/unix/linux/suse}/__init__.py +0 -0
  321. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/linux/suse/_os.py +0 -0
  322. {dissect_target-3.20.dev35/dissect/target/plugins/os/unix/log → dissect_target-3.20.dev38/dissect/target/plugins/os/unix/locate}/__init__.py +0 -0
  323. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/locate/locate.py +0 -0
  324. {dissect_target-3.20.dev35/dissect/target/plugins/os/windows → dissect_target-3.20.dev38/dissect/target/plugins/os/unix/log}/__init__.py +0 -0
  325. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/unix/log/journal.py +0 -0
  326. {dissect_target-3.20.dev35/dissect/target/plugins/os/windows/credential → dissect_target-3.20.dev38/dissect/target/plugins/os/windows}/__init__.py +0 -0
  327. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/_os.py +0 -0
  328. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/catroot.py +0 -0
  329. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/cim.py +0 -0
  330. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/clfs.py +0 -0
  331. {dissect_target-3.20.dev35/dissect/target/plugins/os/windows/defender_helpers → dissect_target-3.20.dev38/dissect/target/plugins/os/windows/credential}/__init__.py +0 -0
  332. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/credential/credhist.py +0 -0
  333. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/credential/lsa.py +0 -0
  334. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/credential/sam.py +0 -0
  335. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/datetime.py +0 -0
  336. {dissect_target-3.20.dev35/dissect/target/plugins/os/windows/dpapi → dissect_target-3.20.dev38/dissect/target/plugins/os/windows/defender_helpers}/__init__.py +0 -0
  337. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/defender_helpers/defender_patterns.py +0 -0
  338. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/defender_helpers/defender_records.py +0 -0
  339. {dissect_target-3.20.dev35/dissect/target/plugins/os/windows/dpapi/keyprovider → dissect_target-3.20.dev38/dissect/target/plugins/os/windows/dpapi}/__init__.py +0 -0
  340. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/dpapi/blob.py +0 -0
  341. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/dpapi/crypto.py +0 -0
  342. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/dpapi/dpapi.py +0 -0
  343. {dissect_target-3.20.dev35/dissect/target/plugins/os/windows/exchange → dissect_target-3.20.dev38/dissect/target/plugins/os/windows/dpapi/keyprovider}/__init__.py +0 -0
  344. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/dpapi/keyprovider/keyprovider.py +0 -0
  345. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/dpapi/master_key.py +0 -0
  346. {dissect_target-3.20.dev35/dissect/target/plugins/os/windows/log → dissect_target-3.20.dev38/dissect/target/plugins/os/windows/exchange}/__init__.py +0 -0
  347. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/jumplist.py +0 -0
  348. {dissect_target-3.20.dev35/dissect/target/plugins/os/windows/regf → dissect_target-3.20.dev38/dissect/target/plugins/os/windows/log}/__init__.py +0 -0
  349. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/log/amcache.py +0 -0
  350. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/log/schedlgu.py +0 -0
  351. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/recyclebin.py +0 -0
  352. {dissect_target-3.20.dev35/dissect/target/plugins/os/windows/task_helpers → dissect_target-3.20.dev38/dissect/target/plugins/os/windows/regf}/__init__.py +0 -0
  353. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/regf/appxdebugkeys.py +0 -0
  354. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/regf/muicache.py +0 -0
  355. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/regf/runkeys.py +0 -0
  356. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/regf/shellbags.py +0 -0
  357. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/regf/trusteddocs.py +0 -0
  358. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/sru.py +0 -0
  359. {dissect_target-3.20.dev35/dissect/target/tools → dissect_target-3.20.dev38/dissect/target/plugins/os/windows/task_helpers}/__init__.py +0 -0
  360. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/task_helpers/tasks_job.py +0 -0
  361. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/task_helpers/tasks_records.py +0 -0
  362. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/task_helpers/tasks_xml.py +0 -0
  363. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/plugins/os/windows/wer.py +0 -0
  364. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/report.py +0 -0
  365. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/target.py +0 -0
  366. {dissect_target-3.20.dev35/dissect/target/tools/dump → dissect_target-3.20.dev38/dissect/target/tools}/__init__.py +0 -0
  367. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/tools/build_pluginlist.py +0 -0
  368. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/tools/dd.py +0 -0
  369. {dissect_target-3.20.dev35/dissect/target/volumes → dissect_target-3.20.dev38/dissect/target/tools/dump}/__init__.py +0 -0
  370. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/tools/dump/run.py +0 -0
  371. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/tools/dump/state.py +0 -0
  372. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/tools/fs.py +0 -0
  373. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/tools/fsutils.py +0 -0
  374. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/tools/info.py +0 -0
  375. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/tools/logging.py +0 -0
  376. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/tools/mount.py +0 -0
  377. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/tools/query.py +0 -0
  378. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/tools/reg.py +0 -0
  379. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/tools/utils.py +0 -0
  380. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/tools/yara.py +0 -0
  381. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/volume.py +0 -0
  382. {dissect_target-3.20.dev35/tests → dissect_target-3.20.dev38/dissect/target/volumes}/__init__.py +0 -0
  383. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/volumes/bde.py +0 -0
  384. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/volumes/ddf.py +0 -0
  385. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/volumes/disk.py +0 -0
  386. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/volumes/luks.py +0 -0
  387. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/volumes/lvm.py +0 -0
  388. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/volumes/md.py +0 -0
  389. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect/target/volumes/vmfs.py +0 -0
  390. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect.target.egg-info/dependency_links.txt +0 -0
  391. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect.target.egg-info/entry_points.txt +0 -0
  392. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect.target.egg-info/requires.txt +0 -0
  393. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/dissect.target.egg-info/top_level.txt +0 -0
  394. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/pyproject.toml +0 -0
  395. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/setup.cfg +0 -0
  396. {dissect_target-3.20.dev35/tests/containers → dissect_target-3.20.dev38/tests}/__init__.py +0 -0
  397. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/_docs/index.rst +0 -0
  398. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/_utils.py +0 -0
  399. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/conftest.py +0 -0
  400. {dissect_target-3.20.dev35/tests/filesystems → dissect_target-3.20.dev38/tests/containers}/__init__.py +0 -0
  401. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/containers/test_fortifw.py +0 -0
  402. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/containers/test_split.py +0 -0
  403. {dissect_target-3.20.dev35/tests/helpers → dissect_target-3.20.dev38/tests/filesystems}/__init__.py +0 -0
  404. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/filesystems/test_btrfs.py +0 -0
  405. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/filesystems/test_cb.py +0 -0
  406. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/filesystems/test_config.py +0 -0
  407. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/filesystems/test_cpio.py +0 -0
  408. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/filesystems/test_dir.py +0 -0
  409. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/filesystems/test_exfat.py +0 -0
  410. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/filesystems/test_extfs.py +0 -0
  411. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/filesystems/test_fat.py +0 -0
  412. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/filesystems/test_jffs2.py +0 -0
  413. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/filesystems/test_ntfs.py +0 -0
  414. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/filesystems/test_overlay.py +0 -0
  415. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/filesystems/test_smb.py +0 -0
  416. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/filesystems/test_tar.py +0 -0
  417. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/filesystems/test_vmtar.py +0 -0
  418. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/filesystems/test_xfs.py +0 -0
  419. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/filesystems/test_zip.py +0 -0
  420. {dissect_target-3.20.dev35/tests/loaders → dissect_target-3.20.dev38/tests/helpers}/__init__.py +0 -0
  421. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/helpers/test_cache.py +0 -0
  422. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/helpers/test_config.py +0 -0
  423. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/helpers/test_configutil.py +0 -0
  424. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/helpers/test_docs.py +0 -0
  425. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/helpers/test_fsutil.py +0 -0
  426. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/helpers/test_hashutil.py +0 -0
  427. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/helpers/test_keychain.py +0 -0
  428. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/helpers/test_loaderutil.py +0 -0
  429. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/helpers/test_localeutil.py +0 -0
  430. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/helpers/test_modifier.py +0 -0
  431. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/helpers/test_protobuf.py +0 -0
  432. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/helpers/test_record.py +0 -0
  433. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/helpers/test_regutil.py +0 -0
  434. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/helpers/test_utils.py +0 -0
  435. {dissect_target-3.20.dev35/tests/plugins → dissect_target-3.20.dev38/tests/loaders}/__init__.py +0 -0
  436. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/loaders/test_ab.py +0 -0
  437. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/loaders/test_asdf.py +0 -0
  438. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/loaders/test_cb.py +0 -0
  439. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/loaders/test_dir.py +0 -0
  440. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/loaders/test_hyperv.py +0 -0
  441. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/loaders/test_kape.py +0 -0
  442. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/loaders/test_libvirt.py +0 -0
  443. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/loaders/test_local.py +0 -0
  444. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/loaders/test_log.py +0 -0
  445. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/loaders/test_mqtt.py +0 -0
  446. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/loaders/test_multiraw.py +0 -0
  447. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/loaders/test_ova.py +0 -0
  448. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/loaders/test_overlay.py +0 -0
  449. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/loaders/test_ovf.py +0 -0
  450. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/loaders/test_phobos.py +0 -0
  451. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/loaders/test_pvm.py +0 -0
  452. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/loaders/test_pvs.py +0 -0
  453. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/loaders/test_remote.py +0 -0
  454. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/loaders/test_smb.py +0 -0
  455. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/loaders/test_tanium.py +0 -0
  456. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/loaders/test_tar.py +0 -0
  457. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/loaders/test_utm.py +0 -0
  458. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/loaders/test_vbox.py +0 -0
  459. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/loaders/test_velociraptor.py +0 -0
  460. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/loaders/test_vmwarevm.py +0 -0
  461. {dissect_target-3.20.dev35/tests/plugins/apps → dissect_target-3.20.dev38/tests/plugins}/__init__.py +0 -0
  462. {dissect_target-3.20.dev35/tests/plugins/apps/av → dissect_target-3.20.dev38/tests/plugins/apps}/__init__.py +0 -0
  463. {dissect_target-3.20.dev35/tests/plugins/apps/browser → dissect_target-3.20.dev38/tests/plugins/apps/av}/__init__.py +0 -0
  464. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/apps/av/test_mcafee.py +0 -0
  465. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/apps/av/test_sophos.py +0 -0
  466. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/apps/av/test_symantec.py +0 -0
  467. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/apps/av/test_trendmicro.py +0 -0
  468. {dissect_target-3.20.dev35/tests/plugins/apps/container → dissect_target-3.20.dev38/tests/plugins/apps/browser}/__init__.py +0 -0
  469. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/apps/browser/test_brave.py +0 -0
  470. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/apps/browser/test_chrome.py +0 -0
  471. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/apps/browser/test_chromium.py +0 -0
  472. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/apps/browser/test_edge.py +0 -0
  473. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/apps/browser/test_firefox.py +0 -0
  474. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/apps/browser/test_iexplore.py +0 -0
  475. {dissect_target-3.20.dev35/tests/plugins/apps/other → dissect_target-3.20.dev38/tests/plugins/apps/container}/__init__.py +0 -0
  476. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/apps/container/test_docker.py +0 -0
  477. {dissect_target-3.20.dev35/tests/plugins/apps/remoteaccess → dissect_target-3.20.dev38/tests/plugins/apps/other}/__init__.py +0 -0
  478. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/apps/other/test_envfile.py +0 -0
  479. {dissect_target-3.20.dev35/tests/plugins/apps/shell → dissect_target-3.20.dev38/tests/plugins/apps/remoteaccess}/__init__.py +0 -0
  480. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/apps/remoteaccess/test_anydesk.py +0 -0
  481. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/apps/remoteaccess/test_teamviewer.py +0 -0
  482. {dissect_target-3.20.dev35/tests/plugins/apps/ssh → dissect_target-3.20.dev38/tests/plugins/apps/shell}/__init__.py +0 -0
  483. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/apps/shell/test_powershell.py +0 -0
  484. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/apps/shell/test_wget.py +0 -0
  485. {dissect_target-3.20.dev35/tests/plugins/apps/texteditor → dissect_target-3.20.dev38/tests/plugins/apps/ssh}/__init__.py +0 -0
  486. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/apps/ssh/test_openssh.py +0 -0
  487. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/apps/ssh/test_opensshd.py +0 -0
  488. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/apps/ssh/test_putty.py +0 -0
  489. {dissect_target-3.20.dev35/tests/plugins/apps/virtualization → dissect_target-3.20.dev38/tests/plugins/apps/texteditor}/__init__.py +0 -0
  490. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/apps/texteditor/test_texteditor.py +0 -0
  491. {dissect_target-3.20.dev35/tests/plugins/apps/vpn → dissect_target-3.20.dev38/tests/plugins/apps/virtualization}/__init__.py +0 -0
  492. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/apps/virtualization/test_vmware_workstation.py +0 -0
  493. {dissect_target-3.20.dev35/tests/plugins/apps/webhosting → dissect_target-3.20.dev38/tests/plugins/apps/vpn}/__init__.py +0 -0
  494. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/apps/vpn/test_openvpn.py +0 -0
  495. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/apps/vpn/test_wireguard.py +0 -0
  496. {dissect_target-3.20.dev35/tests/plugins/apps/webserver → dissect_target-3.20.dev38/tests/plugins/apps/webhosting}/__init__.py +0 -0
  497. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/apps/webhosting/test_cpanel.py +0 -0
  498. {dissect_target-3.20.dev35/tests/plugins/child → dissect_target-3.20.dev38/tests/plugins/apps/webserver}/__init__.py +0 -0
  499. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/apps/webserver/test_apache.py +0 -0
  500. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/apps/webserver/test_caddy.py +0 -0
  501. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/apps/webserver/test_citrix.py +0 -0
  502. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/apps/webserver/test_iis.py +0 -0
  503. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/apps/webserver/test_nginx.py +0 -0
  504. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/apps/webserver/test_webserver.py +0 -0
  505. {dissect_target-3.20.dev35/tests/plugins/filesystem → dissect_target-3.20.dev38/tests/plugins/child}/__init__.py +0 -0
  506. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/child/test_docker.py +0 -0
  507. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/child/test_hyperv.py +0 -0
  508. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/child/test_parallels.py +0 -0
  509. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/child/test_qemu.py +0 -0
  510. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/child/test_virtuozzo.py +0 -0
  511. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/child/test_vmware_workstation.py +0 -0
  512. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/child/test_wsl.py +0 -0
  513. {dissect_target-3.20.dev35/tests/plugins/filesystem/ntfs → dissect_target-3.20.dev38/tests/plugins/filesystem}/__init__.py +0 -0
  514. {dissect_target-3.20.dev35/tests/plugins/filesystem/unix → dissect_target-3.20.dev38/tests/plugins/filesystem/ntfs}/__init__.py +0 -0
  515. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/filesystem/ntfs/test_mft.py +0 -0
  516. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/filesystem/ntfs/test_usnjrnl.py +0 -0
  517. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/filesystem/test_acquire_handles.py +0 -0
  518. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/filesystem/test_acquire_hash.py +0 -0
  519. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/filesystem/test_icat.py +0 -0
  520. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/filesystem/test_resolver.py +0 -0
  521. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/filesystem/test_walkfs.py +0 -0
  522. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/filesystem/test_yara.py +0 -0
  523. {dissect_target-3.20.dev35/tests/plugins/general → dissect_target-3.20.dev38/tests/plugins/filesystem/unix}/__init__.py +0 -0
  524. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/filesystem/unix/test_capability.py +0 -0
  525. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/filesystem/unix/test_suid.py +0 -0
  526. {dissect_target-3.20.dev35/tests/plugins/os → dissect_target-3.20.dev38/tests/plugins/general}/__init__.py +0 -0
  527. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/general/test_config.py +0 -0
  528. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/general/test_default.py +0 -0
  529. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/general/test_network.py +0 -0
  530. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/general/test_scrape.py +0 -0
  531. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/general/test_users.py +0 -0
  532. {dissect_target-3.20.dev35/tests/plugins/os/unix → dissect_target-3.20.dev38/tests/plugins/os}/__init__.py +0 -0
  533. {dissect_target-3.20.dev35/tests/plugins/os/unix/bsd → dissect_target-3.20.dev38/tests/plugins/os/unix}/__init__.py +0 -0
  534. {dissect_target-3.20.dev35/tests/plugins/os/unix/bsd/citrix → dissect_target-3.20.dev38/tests/plugins/os/unix/bsd}/__init__.py +0 -0
  535. {dissect_target-3.20.dev35/tests/plugins/os/unix/bsd/osx → dissect_target-3.20.dev38/tests/plugins/os/unix/bsd/citrix}/__init__.py +0 -0
  536. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/bsd/citrix/test__os.py +0 -0
  537. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/bsd/citrix/test_history.py +0 -0
  538. {dissect_target-3.20.dev35/tests/plugins/os/unix/esxi → dissect_target-3.20.dev38/tests/plugins/os/unix/bsd/osx}/__init__.py +0 -0
  539. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/bsd/osx/test__os.py +0 -0
  540. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/bsd/osx/test_network.py +0 -0
  541. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/bsd/osx/test_user.py +0 -0
  542. {dissect_target-3.20.dev35/tests/plugins/os/unix/linux → dissect_target-3.20.dev38/tests/plugins/os/unix/esxi}/__init__.py +0 -0
  543. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/esxi/test__os.py +0 -0
  544. {dissect_target-3.20.dev35/tests/plugins/os/unix/linux/android → dissect_target-3.20.dev38/tests/plugins/os/unix/linux}/__init__.py +0 -0
  545. {dissect_target-3.20.dev35/tests/plugins/os/unix/linux/debian → dissect_target-3.20.dev38/tests/plugins/os/unix/linux/android}/__init__.py +0 -0
  546. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/linux/android/test__os.py +0 -0
  547. {dissect_target-3.20.dev35/tests/plugins/os/unix/linux/redhat → dissect_target-3.20.dev38/tests/plugins/os/unix/linux/debian}/__init__.py +0 -0
  548. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/linux/debian/test_apt.py +0 -0
  549. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/linux/debian/test_dpkg.py +0 -0
  550. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/linux/fortios/test_keys.py +0 -0
  551. {dissect_target-3.20.dev35/tests/plugins/os/unix/linux/suse → dissect_target-3.20.dev38/tests/plugins/os/unix/linux/redhat}/__init__.py +0 -0
  552. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/linux/redhat/test_yum.py +0 -0
  553. {dissect_target-3.20.dev35/tests/plugins/os/unix/locate → dissect_target-3.20.dev38/tests/plugins/os/unix/linux/suse}/__init__.py +0 -0
  554. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/linux/suse/test_zypper.py +0 -0
  555. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/linux/test__os.py +0 -0
  556. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/linux/test_cmdline.py +0 -0
  557. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/linux/test_environ.py +0 -0
  558. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/linux/test_iptables.py +0 -0
  559. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/linux/test_modules.py +0 -0
  560. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/linux/test_netstat.py +0 -0
  561. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/linux/test_proc.py +0 -0
  562. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/linux/test_processes.py +0 -0
  563. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/linux/test_services.py +0 -0
  564. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/linux/test_sockets.py +0 -0
  565. {dissect_target-3.20.dev35/tests/plugins/os/unix/log → dissect_target-3.20.dev38/tests/plugins/os/unix/locate}/__init__.py +0 -0
  566. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/locate/test_gnulocate.py +0 -0
  567. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/locate/test_mlocate.py +0 -0
  568. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/locate/test_plocate.py +0 -0
  569. {dissect_target-3.20.dev35/tests/plugins/os/windows → dissect_target-3.20.dev38/tests/plugins/os/unix/log}/__init__.py +0 -0
  570. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/log/test_atop.py +0 -0
  571. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/log/test_audit.py +0 -0
  572. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/log/test_auth.py +0 -0
  573. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/log/test_journal.py +0 -0
  574. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/log/test_lastlog.py +0 -0
  575. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/log/test_messages.py +0 -0
  576. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/log/test_utmp.py +0 -0
  577. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/test__os.py +0 -0
  578. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/test_generic.py +0 -0
  579. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/test_history.py +0 -0
  580. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/test_ips.py +0 -0
  581. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/test_locale.py +0 -0
  582. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/test_packagemanager.py +0 -0
  583. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/test_shadow.py +0 -0
  584. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/test_trash.py +0 -0
  585. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/test_users.py +0 -0
  586. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/unix/test_version.py +0 -0
  587. {dissect_target-3.20.dev35/tests/plugins/os/windows/credential → dissect_target-3.20.dev38/tests/plugins/os/windows}/__init__.py +0 -0
  588. {dissect_target-3.20.dev35/tests/plugins/os/windows/regf → dissect_target-3.20.dev38/tests/plugins/os/windows/credential}/__init__.py +0 -0
  589. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/credential/test_credhist.py +0 -0
  590. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/credential/test_lsa.py +0 -0
  591. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/credential/test_sam.py +0 -0
  592. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/log/test_etl.py +0 -0
  593. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/log/test_evt.py +0 -0
  594. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/log/test_evtx.py +0 -0
  595. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/log/test_schedlgu.py +0 -0
  596. {dissect_target-3.20.dev35/tests/tools → dissect_target-3.20.dev38/tests/plugins/os/windows/regf}/__init__.py +0 -0
  597. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/regf/test_appxdebugkeys.py +0 -0
  598. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/regf/test_clsid.py +0 -0
  599. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/regf/test_muicache.py +0 -0
  600. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/regf/test_shellbags.py +0 -0
  601. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/regf/test_trusteddocs.py +0 -0
  602. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/regf/test_usb.py +0 -0
  603. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/regf/test_userassist.py +0 -0
  604. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/test__os.py +0 -0
  605. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/test_adpolicy.py +0 -0
  606. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/test_amcache.py +0 -0
  607. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/test_catroot.py +0 -0
  608. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/test_clfs.py +0 -0
  609. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/test_datetime.py +0 -0
  610. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/test_defender.py +0 -0
  611. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/test_dpapi.py +0 -0
  612. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/test_env.py +0 -0
  613. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/test_generic.py +0 -0
  614. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/test_jumplist.py +0 -0
  615. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/test_lnk.py +0 -0
  616. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/test_locale.py +0 -0
  617. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/test_mru.py +0 -0
  618. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/test_network.py +0 -0
  619. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/test_notifications.py +0 -0
  620. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/test_prefetch.py +0 -0
  621. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/test_recyclebin.py +0 -0
  622. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/test_shimcache.py +0 -0
  623. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/test_sru.py +0 -0
  624. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/test_syscache.py +0 -0
  625. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/test_tasks.py +0 -0
  626. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/test_thumbcache.py +0 -0
  627. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/test_ual.py +0 -0
  628. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/test_wer.py +0 -0
  629. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/plugins/os/windows/test_wua_history.py +0 -0
  630. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/test_container.py +0 -0
  631. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/test_filesystem.py +0 -0
  632. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/test_registration.py +0 -0
  633. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/test_report.py +0 -0
  634. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/test_target.py +0 -0
  635. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/test_tests.py +0 -0
  636. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/test_volume.py +0 -0
  637. {dissect_target-3.20.dev35/tests/volumes → dissect_target-3.20.dev38/tests/tools}/__init__.py +0 -0
  638. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/tools/test_dump.py +0 -0
  639. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/tools/test_fs.py +0 -0
  640. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/tools/test_fsutils.py +0 -0
  641. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/tools/test_info.py +0 -0
  642. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/tools/test_mount.py +0 -0
  643. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/tools/test_query.py +0 -0
  644. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/tools/test_reg.py +0 -0
  645. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/tools/test_shell.py +0 -0
  646. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/tools/test_utils.py +0 -0
  647. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/tools/test_yara.py +0 -0
  648. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/volumes/test_bde.py +0 -0
  649. {dissect_target-3.20.dev35 → dissect_target-3.20.dev38}/tests/volumes/test_md.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dissect.target
3
- Version: 3.20.dev35
3
+ Version: 3.20.dev38
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
@@ -133,7 +133,7 @@ class ConfigurationEntry(FilesystemEntry):
133
133
  Behaves like a ``directory`` when :attr:`parser_items` is a :class:`.ConfigurationParser` or a ``dict``.
134
134
  Behaves like a ``file`` otherwise.
135
135
 
136
- Attributes:
136
+ Args:
137
137
  parser_items: A dict-like object containing all configuration entries and values.
138
138
  In most cases this is either a :class:`.ConfigurationParser` or ``dict``.
139
139
  Otherwise, its the entry's value
@@ -56,11 +56,11 @@ class _DissectScandirIterator:
56
56
 
57
57
  The _DissectScandirIterator provides a context manager, so scandir can be called as:
58
58
 
59
- ```
60
- with scandir(path) as it:
61
- for entry in it
62
- print(entry.name)
63
- ```
59
+ .. code-block:: python
60
+
61
+ with scandir(path) as it:
62
+ for entry in it
63
+ print(entry.name)
64
64
 
65
65
  similar to os.scandir() behaviour since Python 3.6.
66
66
  """
@@ -69,9 +69,7 @@ def _update_dictionary(current: dict[str, Any], key: str, value: Any) -> None:
69
69
 
70
70
 
71
71
  class PeekableIterator:
72
- """Source gotten from:
73
- https://more-itertools.readthedocs.io/en/stable/_modules/more_itertools/more.html#peekable
74
- """
72
+ # https://more-itertools.readthedocs.io/en/stable/_modules/more_itertools/more.html#peekable
75
73
 
76
74
  def __init__(self, iterable):
77
75
  self._iterator = iter(iterable)
@@ -98,9 +96,6 @@ class PeekableIterator:
98
96
  class ConfigurationParser:
99
97
  """A configuration parser where you can configure certain aspects of the parsing mechanism.
100
98
 
101
- Attributes:
102
- parsed_data: The resulting dictionary after parsing.
103
-
104
99
  Args:
105
100
  collapse: A ``bool`` or an ``Iterator``:
106
101
  If ``True``: it will collapse all the resulting dictionary values.
@@ -195,6 +190,8 @@ class Default(ConfigurationParser):
195
190
 
196
191
  This parser splits only on the first ``separator`` it finds:
197
192
 
193
+ .. code-block::
194
+
198
195
  key<separator>value -> {"key": "value"}
199
196
 
200
197
  key<separator>value\n
@@ -316,7 +313,7 @@ class Bin(ConfigurationParser):
316
313
 
317
314
 
318
315
  class Xml(ConfigurationParser):
319
- """Parses an XML file. Ignores any constructor parameters passed from ``ConfigurationParser`."""
316
+ """Parses an XML file. Ignores any constructor parameters passed from ``ConfigurationParser``."""
320
317
 
321
318
  def _tree(self, tree: ElementTree, root: bool = False) -> dict:
322
319
  """Very simple but robust xml -> dict implementation, see comments."""
@@ -395,8 +392,9 @@ class ListUnwrapper:
395
392
  def unwrap(data: Union[dict, list]) -> Union[dict, list]:
396
393
  """Transforms a list with dictionaries to a dictionary.
397
394
 
398
- The order of the list is preserved. If no dictionary is found,
399
- the list remains untouched:
395
+ The order of the list is preserved. If no dictionary is found, the list remains untouched:
396
+
397
+ .. code-block::
400
398
 
401
399
  ["value1", "value2"] -> ["value1", "value2"]
402
400
 
@@ -622,6 +620,8 @@ class Indentation(Default):
622
620
 
623
621
  The parser parses this as the following:
624
622
 
623
+ .. code-block::
624
+
625
625
  key value
626
626
  key2 value2
627
627
  -> {"key value": {"key2": "value2"}}
@@ -644,7 +644,7 @@ class Indentation(Default):
644
644
  Args:
645
645
  manager: A :class:`ScopeManager` that contains the logic to ``push`` and ``pop`` scopes. And keeps state.
646
646
  line: The line to be parsed.
647
- key: The key that should be updated during a :method:`ScopeManager.push``.
647
+ key: The key that should be updated during a :method:`ScopeManager.push`.
648
648
  next_line: The next line to be parsed.
649
649
 
650
650
  Returns:
@@ -694,26 +694,28 @@ class SystemD(Indentation):
694
694
  """A :class:`ConfigurationParser` that specifically parses systemd configuration files.
695
695
 
696
696
  Examples:
697
- >>> systemd_data = textwrap.dedent(
698
- '''
699
- [Section1]
700
- Key=Value
701
- [Section2]
702
- Key2=Value 2\\
703
- Value 2 continued
704
- '''
705
- )
706
- >>> parser = SystemD(io.StringIO(systemd_data))
707
- >>> parser.parser_items
708
- {
709
- "Section1": {
710
- "Key": "Value
711
- },
712
- "Section2": {
713
- "Key2": "Value2 Value 2 continued
714
- }
715
- }
716
697
 
698
+ .. code-block::
699
+
700
+ >>> systemd_data = textwrap.dedent(
701
+ '''
702
+ [Section1]
703
+ Key=Value
704
+ [Section2]
705
+ Key2=Value 2\\
706
+ Value 2 continued
707
+ '''
708
+ )
709
+ >>> parser = SystemD(io.StringIO(systemd_data))
710
+ >>> parser.parser_items
711
+ {
712
+ "Section1": {
713
+ "Key": "Value
714
+ },
715
+ "Section2": {
716
+ "Key2": "Value2 Value 2 continued
717
+ }
718
+ }
717
719
  """
718
720
 
719
721
  def _change_scope(
@@ -52,6 +52,8 @@ MATRIX_REVEAL_SECONDS = 4
52
52
 
53
53
 
54
54
  class Color(Enum):
55
+ """Cyber colors."""
56
+
55
57
  BLACK = 30
56
58
  RED = 31
57
59
  GREEN = 32
@@ -46,7 +46,7 @@ def get_real_func_obj(func: Callable) -> Tuple[Type, Callable]:
46
46
  return (klass, func)
47
47
 
48
48
 
49
- def get_docstring(obj: Any, placeholder=NO_DOCS) -> str:
49
+ def get_docstring(obj: Any, placeholder: str = NO_DOCS) -> str:
50
50
  """Get object's docstring or a placeholder if no docstring found"""
51
51
  # Use of `inspect.cleandoc()` is preferred to `textwrap.dedent()` here
52
52
  # because many multi-line docstrings in the codebase
@@ -8,6 +8,8 @@ log = logging.getLogger(__name__)
8
8
 
9
9
 
10
10
  class KeyType(Enum):
11
+ """Valid key types."""
12
+
11
13
  RAW = "raw"
12
14
  PASSPHRASE = "passphrase"
13
15
  RECOVERY_KEY = "recovery_key"
@@ -8,7 +8,6 @@ from dissect.util.feature import Feature, feature_enabled
8
8
 
9
9
  from dissect.target.filesystem import Filesystem, FilesystemEntry
10
10
 
11
- HAS_FUSE3 = False
12
11
  if feature_enabled(Feature.BETA):
13
12
  from fuse3 import FuseOSError, Operations
14
13
  from fuse3.c_fuse import fuse_config_p, fuse_conn_info_p
@@ -20,6 +19,8 @@ else:
20
19
  fuse_config_p = c_void_p
21
20
  fuse_conn_info_p = c_void_p
22
21
 
22
+ HAS_FUSE3 = False
23
+
23
24
 
24
25
  log = logging.getLogger(__name__)
25
26
 
@@ -1,6 +1,6 @@
1
1
  """Dissect plugin system.
2
2
 
3
- See dissect/target/plugins/general/example.py for an example plugin.
3
+ See ``dissect/target/plugins/general/example.py`` for an example plugin.
4
4
  """
5
5
 
6
6
  from __future__ import annotations
@@ -76,18 +76,19 @@ def export(*args, **kwargs) -> Callable:
76
76
  Supported keyword arguments:
77
77
  property (bool): Whether this export should be regarded as a property.
78
78
  Properties are implicitly cached.
79
+
79
80
  cache (bool): Whether the result of this function should be cached.
81
+
80
82
  record (RecordDescriptor): The :class:`flow.record.RecordDescriptor` for the records that this function yields.
81
83
  If the records are dynamically made, use DynamicRecord instead.
82
- output (str): The output type of this function. Can be one of:
83
84
 
85
+ output (str): The output type of this function. Must be one of:
84
86
  - default: Single return value
85
87
  - record: Yields records. Implicit when record argument is given.
86
88
  - yield: Yields printable values.
87
89
  - none: No return value. Plugin is responsible for output formatting and should return ``None``.
88
90
 
89
91
  The ``export`` decorator adds some additional private attributes to an exported method or property:
90
-
91
92
  - ``__output__``: The output type to expect for this function, this is the same as ``output``.
92
93
  - ``__record__``: The type of record to expect, this value is the same as ``record``.
93
94
  - ``__exported__``: set to ``True`` to indicate the method or property is exported.
@@ -173,7 +174,7 @@ class Plugin:
173
174
  class attribute. Namespacing results in your plugin needing to be prefixed
174
175
  with this namespace when being called. For example, if your plugin has
175
176
  specified ``test`` as namespace and a function called ``example``, you must
176
- call your plugin with ``test.example``::
177
+ call your plugin with ``test.example``.
177
178
 
178
179
  A ``Plugin`` class has the following private class attributes:
179
180
 
@@ -430,15 +431,13 @@ def register(plugincls: Type[Plugin]) -> None:
430
431
  """Register a plugin, and put related data inside :attr:`PLUGINS`.
431
432
 
432
433
  This function uses the following private attributes that are set using decorators:
433
-
434
- - ``__exported__``: Set in :func:`export`.
435
- - ``__internal__``: Set in :func:`internal`.
434
+ - ``__exported__``: Set in :func:`export`.
435
+ - ``__internal__``: Set in :func:`internal`.
436
436
 
437
437
  Additionally, ``register`` sets the following private attributes on the `plugincls`:
438
-
439
- - ``__plugin__``: Always set to ``True``.
440
- - ``__functions__``: A list of all the methods and properties that are ``__internal__`` or ``__exported__``.
441
- - ``__exports__``: A list of all the methods or properties that were explicitly exported.
438
+ - ``__plugin__``: Always set to ``True``.
439
+ - ``__functions__``: A list of all the methods and properties that are ``__internal__`` or ``__exported__``.
440
+ - ``__exports__``: A list of all the methods or properties that were explicitly exported.
442
441
 
443
442
  Args:
444
443
  plugincls: A plugin class to register.
@@ -1138,6 +1137,9 @@ class PluginFunction:
1138
1137
  method_name: str
1139
1138
  plugin_desc: PluginDescriptor = field(hash=False)
1140
1139
 
1140
+ def __repr__(self) -> str:
1141
+ return self.path
1142
+
1141
1143
 
1142
1144
  def plugin_function_index(target: Optional[Target]) -> tuple[dict[str, PluginDescriptor], set[str]]:
1143
1145
  """Returns an index-list for plugins.
@@ -1292,7 +1294,7 @@ def find_plugin_functions(
1292
1294
  path=index_name,
1293
1295
  class_object=loaded_plugin_object,
1294
1296
  method_name=method_name,
1295
- output_type=getattr(fobject, "__output__", "text"),
1297
+ output_type=getattr(fobject, "__output__", "none"),
1296
1298
  plugin_desc=func,
1297
1299
  )
1298
1300
  )
@@ -1337,7 +1339,7 @@ def find_plugin_functions(
1337
1339
  path=f"{description['module']}.{funcname}",
1338
1340
  class_object=loaded_plugin_object,
1339
1341
  method_name=funcname,
1340
- output_type=getattr(fobject, "__output__", "text"),
1342
+ output_type=getattr(fobject, "__output__", "none"),
1341
1343
  plugin_desc=description,
1342
1344
  )
1343
1345
  )
@@ -40,6 +40,8 @@ re_strip_tags = re.compile(r"<[^!][^>]*>")
40
40
 
41
41
 
42
42
  class McAfeePlugin(Plugin):
43
+ """McAfee antivirus plugin."""
44
+
43
45
  __namespace__ = "mcafee"
44
46
 
45
47
  DIRS = [
@@ -30,6 +30,8 @@ SophosLogRecord = TargetRecordDescriptor(
30
30
 
31
31
 
32
32
  class SophosPlugin(Plugin):
33
+ """Sophos antivirus plugin."""
34
+
33
35
  __namespace__ = "sophos"
34
36
 
35
37
  LOG_SOPHOS_HOME = "sysvol/ProgramData/Sophos/Clean/Logs/Clean.log"
@@ -51,6 +51,8 @@ c_pfwlog = cstruct().load(pfwlog_def)
51
51
 
52
52
 
53
53
  class TrendMicroPlugin(Plugin):
54
+ """TrendMicro antivirus plugin."""
55
+
54
56
  __namespace__ = "trendmicro"
55
57
 
56
58
  LOG_FOLDER = "sysvol/Program Files (x86)/Trend Micro/Security Agent"
@@ -608,6 +608,15 @@ def remove_padding(decrypted: bytes) -> bytes:
608
608
 
609
609
 
610
610
  def decrypt_v10(encrypted_password: bytes) -> str:
611
+ """Decrypt a version 10 encrypted password.
612
+
613
+ Args:
614
+ encrypted_password: The encrypted password bytes.
615
+
616
+ Returns:
617
+ Decrypted password string.
618
+ """
619
+
611
620
  if not HAS_CRYPTO:
612
621
  raise ValueError("Missing pycryptodome dependency for AES operation")
613
622
 
@@ -625,12 +634,24 @@ def decrypt_v10(encrypted_password: bytes) -> str:
625
634
 
626
635
 
627
636
  def decrypt_v10_2(encrypted_password: bytes, key: bytes) -> str:
628
- """
629
- struct chrome_pass {
630
- byte signature[3] = 'v10';
631
- byte iv[12];
632
- byte ciphertext[EOF];
633
- }
637
+ """Decrypt a version 10 type 2 password.
638
+
639
+ References:
640
+
641
+ .. code-block::
642
+
643
+ struct chrome_pass {
644
+ byte signature[3] = 'v10';
645
+ byte iv[12];
646
+ byte ciphertext[EOF];
647
+ }
648
+
649
+ Args:
650
+ encrypted_password: The encrypted password bytes.
651
+ key: The encryption key.
652
+
653
+ Returns:
654
+ Decrypted password string.
634
655
  """
635
656
 
636
657
  if not HAS_CRYPTO:
@@ -1,3 +1,5 @@
1
+ from typing import Iterator
2
+
1
3
  from dissect.target.exceptions import UnsupportedPluginError
2
4
  from dissect.target.helpers.descriptor_extensions import UserRecordDescriptorExtension
3
5
  from dissect.target.helpers.record import create_extended_descriptor
@@ -14,6 +16,8 @@ ConsoleHostHistoryRecord = create_extended_descriptor([UserRecordDescriptorExten
14
16
 
15
17
 
16
18
  class PowerShellHistoryPlugin(Plugin):
19
+ """Windows PowerShell history plugin."""
20
+
17
21
  PATHS = [
18
22
  "AppData/Roaming/Microsoft/Windows/PowerShell/psreadline",
19
23
  ".local/share/powershell/PSReadLine",
@@ -35,10 +39,10 @@ class PowerShellHistoryPlugin(Plugin):
35
39
  raise UnsupportedPluginError("No ConsoleHost_history.txt files found")
36
40
 
37
41
  @export(record=ConsoleHostHistoryRecord)
38
- def powershell_history(self):
42
+ def powershell_history(self) -> Iterator[ConsoleHostHistoryRecord]:
39
43
  """Return PowerShell command history for all users.
40
44
 
41
- The PowerShell ConsoleHost_history.txt file contains information about the commands executed with PowerShell in
45
+ The PowerShell ``ConsoleHost_history.txt`` file contains information about the commands executed with PowerShell in
42
46
  a terminal. No data is recorded from terminal-less PowerShell sessions. Commands are saved to disk after the process has completed.
43
47
  PSReadLine does not save commands containing 'password', 'asplaintext', 'token', 'apikey' or 'secret'.
44
48
 
@@ -52,7 +52,7 @@ class WgetPlugin(Plugin):
52
52
  - https://gitlab.com/gnuwget/wget/-/blob/master/src/hsts.c
53
53
  - https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security
54
54
 
55
- Yields ``WgetHstsRecord``s with the following fields:
55
+ Yields ``WgetHstsRecord`` records with the following fields:
56
56
 
57
57
  .. code-block:: text
58
58
 
@@ -31,6 +31,8 @@ def find_sshd_directory(target: Target) -> TargetPath:
31
31
 
32
32
 
33
33
  class OpenSSHPlugin(SSHPlugin):
34
+ """OpenSSH plugin."""
35
+
34
36
  __namespace__ = "openssh"
35
37
 
36
38
  SSHD_DIRECTORIES = ["/sysvol/ProgramData/ssh", "/etc/ssh"]
@@ -74,6 +74,8 @@ SSHD_MULTIPLE_DEFINITIONS_ALLOWED_FIELDS = (
74
74
 
75
75
 
76
76
  class SSHServerPlugin(SSHPlugin):
77
+ """OpenSSHd server plugin."""
78
+
77
79
  __namespace__ = "opensshd"
78
80
 
79
81
  def __init__(self, target: Target):
@@ -52,15 +52,13 @@ class WireGuardPlugin(Plugin):
52
52
 
53
53
  __namespace__ = "wireguard"
54
54
 
55
- """
56
- TODO: NetworkManager uses a different stanza format
57
- "/etc/NetworkManager/system-connections/Wireguard*",
58
- TODO: systemd uses a different stanza format
59
- "/etc/systemd/network/wg*.netdev",
60
- "/etc/systemd/network/*wg*.netdev",
61
- TODO: other locations such as $HOME/.config/wireguard
62
- TODO: parse native network manager formats from MacOS, Ubuntu and Windows.
63
- """
55
+ # TODO: NetworkManager uses a different stanza format
56
+ # "/etc/NetworkManager/system-connections/Wireguard*",
57
+ # TODO: systemd uses a different stanza format
58
+ # "/etc/systemd/network/wg*.netdev",
59
+ # "/etc/systemd/network/*wg*.netdev",
60
+ # TODO: other locations such as $HOME/.config/wireguard
61
+ # TODO: parse native network manager formats from MacOS, Ubuntu and Windows.
64
62
 
65
63
  CONFIG_GLOBS = [
66
64
  # Linux
@@ -160,6 +158,8 @@ def _parse_config(content: str) -> ConfigParser:
160
158
 
161
159
 
162
160
  class MultiDict(OrderedDict):
161
+ """OrderedDict implementation which allows multiple values for the keys ``Peer`` and ``Interface``."""
162
+
163
163
  def __init__(self, *args, **kwargs):
164
164
  self._unique = 0
165
165
  super().__init__(*args, **kwargs)
@@ -23,6 +23,8 @@ CPANEL_LASTLOGIN_PATTERN = re.compile(
23
23
 
24
24
 
25
25
  class CPanelPlugin(Plugin):
26
+ """cPanel webhosting plugin."""
27
+
26
28
  # TODO: Parse other log files https://support.cartika.com/portal/en/kb/articles/whm-cpanel-log-files-and-locations
27
29
  __namespace__ = "cpanel"
28
30
 
@@ -22,6 +22,8 @@ LOG_REGEX = re.compile(
22
22
 
23
23
 
24
24
  class CaddyPlugin(WebserverPlugin):
25
+ """Caddy webserver plugin."""
26
+
25
27
  __namespace__ = "caddy"
26
28
 
27
29
  def __init__(self, target: Target):
@@ -18,6 +18,8 @@ LOG_REGEX = re.compile(
18
18
 
19
19
 
20
20
  class NginxPlugin(WebserverPlugin):
21
+ """Nginx webserver plugin."""
22
+
21
23
  __namespace__ = "nginx"
22
24
 
23
25
  def __init__(self, target: Target):
@@ -1,3 +1,5 @@
1
+ from typing import Iterator
2
+
1
3
  from dissect.target.exceptions import UnsupportedPluginError
2
4
  from dissect.target.helpers.record import ChildTargetRecord
3
5
  from dissect.target.plugin import ChildTargetPlugin
@@ -12,7 +14,7 @@ class ESXiChildTargetPlugin(ChildTargetPlugin):
12
14
  if self.target.os != "esxi":
13
15
  raise UnsupportedPluginError("Not an ESXi operating system")
14
16
 
15
- def list_children(self):
17
+ def list_children(self) -> Iterator[ChildTargetRecord]:
16
18
  for vm in self.target.vm_inventory():
17
19
  yield ChildTargetRecord(
18
20
  type=self.__type__,
@@ -1,3 +1,5 @@
1
+ from typing import Iterator
2
+
1
3
  from dissect.target.exceptions import UnsupportedPluginError
2
4
  from dissect.target.helpers.record import ChildTargetRecord
3
5
  from dissect.target.plugin import ChildTargetPlugin
@@ -9,13 +11,15 @@ class VirtuozzoChildTargetPlugin(ChildTargetPlugin):
9
11
  Virtuozzo conatiners are by default registered in the folder ``vz/root/$VEID``,
10
12
  where VEID will be substituted with the actual container UUID.
11
13
 
12
- /
13
- etc/
14
- var/
15
- vz/
16
- root/
17
- <container-uuid>/
18
- <container-uuid>/
14
+ .. code-block::
15
+
16
+ /
17
+ etc/
18
+ var/
19
+ vz/
20
+ root/
21
+ <container-uuid>/
22
+ <container-uuid>/
19
23
 
20
24
  References:
21
25
  - https://docs.virtuozzo.com/virtuozzo_hybrid_server_7_command_line_reference/managing-system/configuration-files.html
@@ -29,7 +33,7 @@ class VirtuozzoChildTargetPlugin(ChildTargetPlugin):
29
33
  if not self.target.fs.path(self.PATH).exists():
30
34
  raise UnsupportedPluginError("No Virtuozzo path found")
31
35
 
32
- def list_children(self):
36
+ def list_children(self) -> Iterator[ChildTargetRecord]:
33
37
  for container in self.target.fs.path(self.PATH).iterdir():
34
38
  yield ChildTargetRecord(
35
39
  type=self.__type__,
@@ -1,5 +1,6 @@
1
1
  import csv
2
2
  import gzip
3
+ from typing import Iterator
3
4
 
4
5
  from dissect.target.exceptions import UnsupportedPluginError
5
6
  from dissect.target.helpers.record import TargetRecordDescriptor
@@ -27,7 +28,7 @@ class AcquireHashPlugin(Plugin):
27
28
  raise UnsupportedPluginError("No hash file found")
28
29
 
29
30
  @export(record=AcquireHashRecord)
30
- def acquire_hashes(self):
31
+ def acquire_hashes(self) -> Iterator[AcquireHashRecord]:
31
32
  """Return file hashes collected by Acquire.
32
33
 
33
34
  An Acquire file container contains a file hashes csv when the hashes module was used. The content of this csv
@@ -1,3 +1,5 @@
1
+ from __future__ import annotations
2
+
1
3
  import shutil
2
4
  import sys
3
5
 
@@ -27,24 +29,26 @@ class ICatPlugin(Plugin):
27
29
  )
28
30
  @arg("--ads", type=str, default="", help="Alternate Data Stream name")
29
31
  @export(output="none")
30
- def icat(self, inum, fs, ads):
32
+ def icat(self, inum: int, fs: int | None, ads: str) -> None:
31
33
  """Output the contents of a file based on its MFT segment or inode number. Supports Alternate Data Streams
32
34
 
33
35
  Example:
34
- # outputs contents of segment defaults to 'sysvol'
35
- target-query <TARGET> -f icat --segment 96997
36
+ .. code-block::
37
+
38
+ # outputs contents of segment defaults to 'sysvol'
39
+ target-query <TARGET> -f icat --segment 96997
36
40
 
37
- # outputs contents of inode defaults to '/'
38
- target-query <TARGET> -f icat --inode 50947
41
+ # outputs contents of inode defaults to '/'
42
+ target-query <TARGET> -f icat --inode 50947
39
43
 
40
- # outputs contents of segment's ADS
41
- target-query <TARGET> -f icat --segment 96997 --ads Zone.Identifier
44
+ # outputs contents of segment's ADS
45
+ target-query <TARGET> -f icat --segment 96997 --ads Zone.Identifier
42
46
 
43
- # outputs contents of segment in filesystem 3 of target
44
- target-query <TARGET> -f icat --fs 3 --segment 96997
47
+ # outputs contents of segment in filesystem 3 of target
48
+ target-query <TARGET> -f icat --fs 3 --segment 96997
45
49
 
46
- # outputs contents of inode in filesystem 2 of target
47
- target-query <TARGET> -f icat --fs 2 --inode 50947
50
+ # outputs contents of inode in filesystem 2 of target
51
+ target-query <TARGET> -f icat --fs 2 --inode 50947
48
52
  """
49
53
 
50
54
  open_as = None
@@ -123,6 +123,8 @@ COMPACT_RECORD_TYPES = {
123
123
 
124
124
 
125
125
  class MftPlugin(Plugin):
126
+ """NTFS MFT plugin."""
127
+
126
128
  def __init__(self, target):
127
129
  super().__init__(target)
128
130
  self.ntfs_filesystems = {index: fs for index, fs in enumerate(self.target.filesystems) if fs.__type__ == "ntfs"}
@@ -93,6 +93,8 @@ def format_info(
93
93
 
94
94
 
95
95
  class MftTimelinePlugin(Plugin):
96
+ """NTFS MFT timeline plugin."""
97
+
96
98
  def check_compatible(self) -> None:
97
99
  ntfs_filesystems = [fs for fs in self.target.filesystems if fs.__type__ == "ntfs"]
98
100
  if not len(ntfs_filesystems):
@@ -100,7 +102,7 @@ class MftTimelinePlugin(Plugin):
100
102
 
101
103
  @export(output="yield")
102
104
  @arg("--ignore-dos", action="store_true", help="ignore DOS file names")
103
- def mft_timeline(self, ignore_dos: bool = False):
105
+ def mft_timeline(self, ignore_dos: bool = False) -> Iterator[str]:
104
106
  """Return the MFT records of all NTFS filesystems in a human readable format (unsorted).
105
107
 
106
108
  The Master File Table (MFT) contains metadata about every file and folder on a NFTS filesystem.
@@ -24,6 +24,8 @@ UsnjrnlRecord = TargetRecordDescriptor(
24
24
 
25
25
 
26
26
  class UsnjrnlPlugin(Plugin):
27
+ """NFTS UsnJrnl plugin."""
28
+
27
29
  def check_compatible(self) -> None:
28
30
  pass
29
31
 
@@ -13,12 +13,14 @@ DRIVE_LETTER_RE = re.compile(r"[a-zA-Z]:")
13
13
 
14
14
 
15
15
  class InformationType(Enum):
16
+ """Valid information types"""
17
+
16
18
  STANDARD_INFORMATION = auto()
17
19
  FILE_INFORMATION = auto()
18
20
  ALTERNATE_DATA_STREAM = auto()
19
21
 
20
22
 
21
- def get_drive_letter(target: Target, filesystem: NtfsFilesystem):
23
+ def get_drive_letter(target: Target, filesystem: NtfsFilesystem) -> str:
22
24
  """Retrieve the drive letter from the loaded mounts
23
25
 
24
26
  When the drive letter is not available for that filesystem it returns empty.