Skip to main content

Windows

These functions can be used to pull data related to Windows artifacts.

getAmcache() -> Amcache[] | WindowsError

Parse Amcache Registry file on the systemdrive.

getAltAmcache(path) -> Amcache[] | WindowsError

Parse Amcache.hve Registry file from provided path.

ParamTypeDescription
pathstringFull path to Amcache.hve file

getBits(carve) -> Bits | WindowsError

Parse Windows BITS data. Supports carving deleted entries.

ParamTypeDescription
carvebooleanAttempt to carve deleted BITS entries

getBitsPath(path, carve) -> Amcache[] | WindowsError

Parse Windows BITS data at provided path. Supports carving deleted entries.

ParamTypeDescription
pathstringPath to Windows BITS file
carvebooleanAttempt to carve deleted BITS entries

getEventlogs(path) -> EventLogRecord[] | WindowsError

Parse Windows EventLog file at provided path.

ParamTypeDescription
pathstringPath to Windows EventLog file

getJumplists() -> Jumplists[] | WindowsError

Get all JumpLists for all users at default systemdrive.

getJumplistPath(path) -> Jumplists[] | WindowsError

Parse JumpLists file at provided path.

ParamTypeDescription
pathstringPath to Jumplist file

readRawFile(path) -> Uint8Array | WindowsError

Read a file at provided path by parsing the NTFS. You can read locked files with this function.

ParamTypeDescription
pathstringPath to file read

readAdsData(path, ads_name) -> Uint8Array | WindowsError

Read an Alternative Data Stream at provided file path.

ParamTypeDescription
pathstringPath to file read
ads_namestringADS data to read

getPe(path) -> PeInfo | WindowsError

Parse PE file at provided path.

ParamTypeDescription
pathstringPath to PE file

getPrefetch() -> Prefetch[] | WindowsError

Parse all Prefetch files at default systemdrive.

getPrefetchPath(path) -> Prefetch[] | WindowsError

Parse Prefetch files at provided directory.

ParamTypeDescription
pathstringPath to Prefetch directory

getRecycleBin() -> RecycleBin[] | WindowsError

Parse all RecycleBin files default systemdrive.

getRecycleBinFile(path) -> RecycleBin[] | WindowsError

Parse RecycleBin file at provided path.

ParamTypeDescription
pathstringPath to RecycleBin file.

getRegistry(path) -> RegistryData | WindowsError

Parse Registry file at provided path.

ParamTypeDescription
pathstringPath to Registry file.

getSearch(path) -> SearchEntry[] | WindowsError

Parse Windows Search database at provided path.

ParamTypeDescription
pathstringPath to Windows Search database.

getServices() -> Services[] | WindowsError

Parse Windows Services at default systemdrive.

getServiceFile(path) -> Services[] | Error

Parse Windows Services (SYSTEM Registry) file at provided path.

ParamTypeDescription
pathstringPath to Windows SYSTEM Registry file

getShellbags() -> Shellbags[] | WindowsError

Parse Windows Shellbags at default systemdrive.

getAltShellbags(path) -> Shellbags[] | WindowsError

Parse Windows Shellbags from provided Registry file. Should be either NTUSER.DAT or UsrClass.dat

ParamTypeDescription
pathstringFull path to either NTUSER.DAT or UsrClass.dat file

getShimcache() -> Shimcache[] | WindowsError

Parse Windows Shimcache at default systemdrive.

getAltShimcache(path) -> Shimcache[] | WindowsError

Parse Windows Shimcache at provided SYSTEM Registry path.

ParamTypeDescription
pathstringFull path to the SYSTEM Registry file

getShimdb() -> Shimdb[] | WindowsError

Parse Windows ShimDB files at default systemdrive.

getCustomShimdb(path) -> Shimdb[] | WindowsError

Parse Windows ShimDB file at provided path.

ParamTypeDescription
pathstringPath to Windows ShimDB file

getLnkFile(path) -> Shortcut | WindowsError

Parse Windows Shortcut file at provided path.

ParamTypeDescription
pathstringPath to Windows Shortcut file

getSrumApplicationInfo(path) -> ApplicationInfo[] | WindowsError

Parse Application info from Windows SRUM.

ParamTypeDescription
pathstringPath to Windows SRUM file

getSrumApplicationTimeline(path) -> ApplicationTimeline[] | WindowsError

Parse Application Timeline info from Windows SRUM.

ParamTypeDescription
pathstringPath to Windows SRUM file

getSrumApplicationVfu(path) -> AppVfu[] | WindowsError

Parse Application VFU info from Windows SRUM.

ParamTypeDescription
pathstringPath to Windows SRUM file

getSrumEnergyInfo(path) -> EnergyInfo[] | WindowsError

Parse Energy info from Windows SRUM.

ParamTypeDescription
pathstringPath to Windows SRUM file

getSrumEnergyUsage(path) -> EnergyUsage[] | WindowsError

Parse Energy usage from Windows SRUM.

ParamTypeDescription
pathstringPath to Windows SRUM file

getSrumNetworkInfo(path) -> NetworkInfo[] | WindowsError

Parse Network info from Windows SRUM.

ParamTypeDescription
pathstringPath to Windows SRUM file

getSrumNetworkConnectivity(path) -> NetworkConnectivityInfo[] | WindowsError

Parse Network connectivity info from Windows SRUM.

ParamTypeDescription
pathstringPath to Windows SRUM file

getSrumNotifications(path) -> NotificationInfo[] | WindowsError

Parse notification info from Windows SRUM.

ParamTypeDescription
pathstringPath to Windows SRUM file

getTasks() -> TaskData | WindowsError

Parse Windows Schedule Tasks at default systemdrive.

getTaskFile(path) -> TaskXml | TaskJob | WindowsError

Parse Windows Schedule Task file at provided path. Supports XML and older binary Job files.

ParamTypeDescription
pathstringPath to Windows Schedule Task file. Can be either XML or Job

getUserassist() -> UserAssist[] | WindowsError

Parse Windows Userassist entries at default systemdrive.

getAltUserassist(path) -> UserAssist[] | WindowsError

Parse Windows Userassist entries at path to NTUSER.DAT.

ParamTypeDescription
pathstringFull path to NTUSER.DAT file

getUsersWin() -> UserInfo[] | WindowsError

Get local Windows User accounts from SAM Registry file. Uses default systemdrive letter.

getAltUsersWin(path) -> UserInfo[] | WindowsError

Get local Windows User accounts from provided SAM Registry path.

ParamTypeDescription
pathstringFull path to SAM Registry file

getUsnjrnl() -> UsnJrnl[] | WindowsError

Parses Windows UsnJrnl data. Uses default systemdrive letter.

getAltUsnjrnl(drive) -> UsnJrnl[] | WindowsError

Parses Windows UsnJrnl data from alternative drive letter.

ParamTypeDescription
drivestringDrive letter to get Windows UsnJrnl

logons(path) -> Logons[] | WindowsError

Parse the Windows Security.evtx and try to correlate Logon and Logoff events.

ParamTypeDescription
pathstringPath to Windows Security.evtx file

lookupSecurityKey(path, offset) -> SecurityKey | WindowsError

Parse Security Key data from Registry at provided Security Key offset. The offset must be a postive number greater than 0. You can use getRegistry(path) to pull a list of keys which contain Security Key offset data.

It is not recommended to bulk lookup Security Key info due the amount of data. Security Keys contain information about Registry key permissions and ACLs. Its not super useful.

ParamTypeDescription
pathstringPath to Windows Registry file
offsetnumberOffset to Security Key

ESE Database Class

A basic class to help interact and extract data from ESE databases

catalogInfo() -> Catalog[] | WindowsError

Dump the Catalog metadata associated with an ESE database. Returns an array of Catalog entries or WindowsError

tableInfo(catalog, table_name) -> TableInfo

Extract table metadata from parsed Catalog entries based on provided table name

ParamTypeDescription
catalogCatalog[]Array of Catalog entries
table_namestringName of table to extract

getPages(first_page) -> number[] | WindowsError

Get an array of all pages associated with a table starting at the first page provided. First page can be found in the TableInfo object.

ParamTypeDescription
first_pagenumberFirst page of a table

getRows(pages, info) -> Record<string, EseTable[][]> | WindowsError

Get rows associated with provided TableInfo object and number of pages. A returns a Record<string, EseTable[][]> or WindowsError.

The table name is the Record string key.

EseTable is an array of rows and columns representing ESE data.

ParamTypeDescription
pagesnumber[]Array of pages
infoTableInfoTableInfo object

getFilteredRows(pages, info, column_name, column_data) -> Record<string, EseTable[][]> | WindowsError

Get rows and filter based on provided column_name and column_data. This function can be useful if you want to get data from a table thats shares data with another table. For example, if you call getRows() to get data associated with TableA and now you want to get data from TableB and both tables share a unique key.

Its a little similar to "select * from tableB where columnX = Y" where Y is a unique key

ParamTypeDescription
pagesnumber[]Array of pages
infoTableInfoTableInfo object
column_namestringColumn name that you want to filter on
column_dataRecord<string, boolean>HashMap of column values to filter on. Only the key is used to filter the data

dumpTableColumns(pages, info, column_names) -> Record<string, EseTable[][]> | WindowsError

Get rows based on specific columns names. This function is the same as getRows() except it will only return column names that included in column_names.

ParamTypeDescription
pagesnumber[]Array of pages
infoTableInfoTableInfo object
column_namestring[]Array of column names to get data from

getChocolateyInfo(alt_base) -> ChocolateyInfo[] | WindowsError

Return a list of installed Chocolatey packages. Will use the ChocolateyInstall ENV value by default (C:\ProgramData\chocolatey).

An optional alternative base path can also be provided

ParamTypeDescription
alt_basestringOptional base path for Chocolatey

Updates class

A simple class to help dump the contents of the Windows DataStore.edb database. This class extends the EseDatabase class.

updateHistory(pages) -> UpdateHistory[] | WindowsError

Return a list of Windows Updates by parsing the Windows DataStore.edb database.

ParamTypeDescription
pagesnumber[]Array of pages to get data from

powershellHistory(alt_path) -> History[] | History | WindowsError

Return PowerShell history entries for all users. Uses the systemdrive by default.

An optional alternative path to ConsoleHost_history.txt can also be provided instead.

ParamTypeDescription
alt_pathstringOptional full path to ConsoleHost_history.txt

parseMru(ntuser_path) -> Mru[] | WindowsError

Parse common Most Recently Used (MRU) locations in the Registry. Currently parses: OpenSave, LastVisited, and RecentDocs MRU keys

ParamTypeDescription
ntuser_pathstringFull path to NTUSER.DAT file

getShellItem(data) -> JsShellItem | WindowsError

Parse raw bytes that contain a ShellItem. Returns a JsShellItem that contains ShellItem and any remaining bytes. This function can be used to parse multiple shellitems.

ParamTypeDescription
dataUint8ArrayRaw bytes of shellitem

UserAccessLogging class

A simple class to help extract data from the Windows User Access Log database. This class extends the EseDatabase class

getRoleIds(pages) -> RoleIds[] | WindowsError

Return an array of RoleIds associated with UAL database. This function expects the UserAccessLogging class to be initialized with the SystemIdentity.mdb database otherwise it will return no results.

ParamTypeDescription
pagesnumber[]Array of pages to get data from

getUserAccessLog(pages, roles_ual, role_page_chunk) -> UserAccessLog[] | WindowsError

Parse the User Access Log (UAL) database on Windows Servers. This database contains logon information for users on the system.
It is not related to M365 UAL (Unified Audit Logging)!

This function expects the UserAccessLogging class to be initialized with the Current.mdb or {GUID}.mdb database otherwise it will return no results.

You may provide an optional UserAccessLogging associated with SystemIdentity.mdb to perform RoleID lookups. Otherwise this table will parse the Current.mdb or {GUID}.mdb database. You may also customize the number of pages that should be used when doing RoleID lookups, by default 30 pages will used.

ParamTypeDescription
pagesnumber[]Array of pages to get data from
roles_ualUserAccessLoggingOptional UserAccessLogging object that was initialized with the file SystemIdentity.mdb. Can be used to perform RoleID lookups
role_page_chunknumberNumber of pages that should be submitted when doing RoleID lookups. By default 30 page chunks will be used to do lookup

userAccessLog(alt_dir) -> UserAccessLog[] | WindowsError

Parse the User Access Log (UAL) database on Windows Servers. This database contains logon information for users on the system.
It is not related to M365 UAL (Unified Audit Logging)!

By default it will parse the databases at %SYSTEMROOT%\System32\LogFiles\Sum. However, you may provided an optional alternative path if you want.

ParamTypeDescription
alt_dirstringAlternative directory containing the UAL log databases

getWmiPersist() -> WmiPersist[] | WindowsError

Parse the WMI Repository and extract persistence information.

getWmiPersistPath(path) -> WmiPersist[] | WindowsError

Parse the WMI Repository and extract persistence information at provided path. The directory must contain:

  • MAPPING*.MAP
  • OBJECTS.DATA
  • INDEX.BTR
ParamTypeDescription
pathstringPath to WMI Repository

listUsbDevices(alt_file) -> UsbDevices[] | WindowsError

Parse SYSTEM Registry to get list of USB devices that have been connected

ParamTypeDescription
alt_filestringAlternative path to the SYSTEM Registry file

serviceInstalls(path) -> ServiceInstalls[] | WindowsError

Parse Windows System.evtx file to extract Service Install events.

ParamTypeDescription
pathstringPath to the System.evtx file