HackBrowserData
On this page

dump

Extract and decrypt browser data — the default command.

dump extracts and decrypts data from detected browsers and writes it to disk. It is the default command, so hack-browser-data … is the same as hack-browser-data dump ….

Flags

FlagDefaultDescription
-b, --browserallTarget browser key for this OS, or all
-c, --categoryallData categories (comma-separated), or all
-f, --formatjsonOutput format: json, csv, or cookie-editor
-d, --dirresultsOutput directory, created if missing
-p, --profile-path(auto-discover)Custom profile directory — find it via chrome://version; needs a specific --browser
--keychain-pw(none)macOS login password, for non-interactive runs (visible in ps and shell history)
--keychain-pw-stdinfalseRead the macOS login password from the first line of stdin
--zipfalsePack the output into <dir>/<dir name>.zip (e.g. results/results.zip)

Categories: password, cookie, bookmark, history, download, creditcard, extension, localstorage, sessionstorage.

Output is one file per non-empty category in --dir — see Output & Data Formats for the file model and per-category schema. Run list to discover profiles, then use the canonical browser key from Supported Browsers.

--browser accepts only the keys of the OS you run on — --help lists them — and rejects any other name. For Chromium-based browsers, --profile-path takes either a profile directory (the Profile Path shown on chrome://version) or a whole user data directory; for Firefox, pass one profile directory (such as …/Profiles/abcd1234.default-release), not the Profiles folder; for Safari, a Safari directory such as ~/Library/Safari. It is ignored, with a warning, unless --browser names one browser. Invalid flags stop the run before any browser data is read (see Exit status).

Examples

bash
# Everything, from every detected browser (the default)
hack-browser-data dump --browser all

# Just Chrome history, as CSV
hack-browser-data dump --browser chrome --category history --format csv

# Several categories at once, into a custom directory
hack-browser-data dump --browser edge --category password,cookie --dir ./edge-export

# Point at a specific profile directory
hack-browser-data dump --browser chrome --profile-path "/path/to/User Data/Profile 1"

Warning

With the default --category all, dump exports passwords, cookies, and credit cards along with everything else. Scope it down with --category if you don’t need sensitive data.

Run summary

After the export, dump prints a summary table to stderr with one row per browser, profile, and category. Rows the tool could rule out before reading anything come first:

terminal
Browser  Profile    Category  Result   Records  Detail
chrome   Profile 1  cookie    absent   0
chrome   Default    password  ok       101
chrome   Default    cookie    partial  2817     12 not recovered
ResultMeaning
okEvery record was exported.
partialRecords were exported, but some values could not be decrypted. Those fields are left empty; Detail counts the values not recovered.
absentThe profile has no data for this category.
unsupportedHackBrowserData does not extract this category from that browser — for example, credit cards and session storage from Firefox or Safari.
errorThe extraction failed and Detail says why. A row with - for profile and category is about the whole browser — for example, its directory could not be read or its master key could not be retrieved.

The summary is for people, not scripts: it never changes the exit status, and its layout is not a stable interface. restore prints the same table.

macOS Keychain

On macOS, the tool asks for the current login password only when a selected browser needs the Keychain to decrypt; input is hidden. For scripts, prefer --keychain-pw-stdin, which reads the first line of stdin, over --keychain-pw, which is visible in ps and shell history — the two can’t be combined. With neither flag and no terminal to prompt on, the Keychain stays locked. Chromium-based browsers then show partial or error rows for whatever could not be decrypted; Safari passwords are exported as metadata only under an ok row, and the only sign is a [WRN] line ending in keychain-protected data is exported as metadata only. See the macOS FAQ.