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
| Flag | Default | Description |
|---|---|---|
-b, --browser | all | Target browser key for this OS, or all |
-c, --category | all | Data categories (comma-separated), or all |
-f, --format | json | Output format: json, csv, or cookie-editor |
-d, --dir | results | Output 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-stdin | false | Read the macOS login password from the first line of stdin |
--zip | false | Pack 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
# 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,dumpexports passwords, cookies, and credit cards along with everything else. Scope it down with--categoryif 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:
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| Result | Meaning |
|---|---|
ok | Every record was exported. |
partial | Records were exported, but some values could not be decrypted. Those fields are left empty; Detail counts the values not recovered. |
absent | The profile has no data for this category. |
unsupported | HackBrowserData does not extract this category from that browser — for example, credit cards and session storage from Firefox or Safari. |
error | The 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.