HackBrowserData

Output & Data Formats

The output file model and the exact JSON/CSV/cookie-editor schema for every data category.

dump and restore write results as one file per non-empty category into the output directory (results by default), named <category>.<ext>. This page documents the file model and the exact field schema for each category and format.

The file model

  • One file per category. Each non-empty category becomes its own file: password.json, cookie.json, history.json, … Empty categories produce no file.
  • Aggregated across profiles. Every profile’s rows for a category are merged into that category’s single file, with leading browser and profile columns identifying each row’s origin.
  • Loose-file permissions. Output directories are requested as 0750 and category files as 0600, subject to platform filesystem behavior. ZIP files are currently created with the process umask rather than an explicit 0600; check and restrict their permissions before transfer.
  • Timestamps use RFC 3339 when present (for example 2026-01-31T14:05:00Z). CSV writes a zero time as an empty cell; JSON preserves Go’s zero timestamp as 0001-01-01T00:00:00Z.
  • --zip first writes the per-category files, then moves their contents into <dir>/<basename-of-dir>.zip and removes the loose files. With the default --dir results, the final path is results/results.zip.

localstorage and sessionstorage share one schema (below) but are written as two separate files, localstorage.json and sessionstorage.json.

Formats

Three formats are available via --format (default json):

FormatExtensionNotes
json (default).jsonPretty-printed (2-space), HTML escaping off so URLs stay readable. An array of objects, browser/profile first.
csv.csvA UTF-8 BOM is prepended for Excel; a header row, then one row per record.
cookie-editor.jsonThe cookie category is reshaped to the Cookie-Editor extension’s import schema; every other category falls back to plain JSON.

Note

cookie-editor changes only the cookie category, and the file is still cookie.json. Other categories (password.json, history.json, …) are identical to the json format.

Category schemas

Every json object and csv row begins with browser and profile, followed by the category’s own fields below. browser is the human-readable display name, such as Chrome or Microsoft Edge, rather than the CLI key.

password

FieldTypeNotes
urlstring
usernamestring
passwordstringDecrypted; blank if the master key was unavailable.
created_attime
FieldTypeNotes
hoststring
pathstring
namestring
valuestringDecrypted cookie value.
is_securebool
is_http_onlybool
has_expirebool
is_persistentbool
expire_attime
created_attime

bookmark

FieldTypeNotes
idint
namestring
typestringe.g. url, folder.
urlstring
folderstringParent folder path.
created_attime

history

FieldTypeNotes
urlstring
titlestring
visit_countint
last_visittime

download

FieldTypeNotes
urlstring
target_pathstring
mime_typestring
total_bytesint
start_timetime
end_timetime

creditcard

FieldTypeNotes
guidstring
namestringName on card.
numberstringDecrypted card number.
exp_monthstring
exp_yearstring
nick_namestring
addressstring
cvcstringYandex only; empty for Chromium.
commentstringYandex only; empty for Chromium.

extension

FieldTypeNotes
namestring
idstring
descriptionstring
versionstring
homepage_urlstring
enabledbool

localstorage / sessionstorage

FieldTypeNotes
is_metaboolMarks a WebKit metadata row rather than a value.
urlstringOrigin the entry belongs to.
keystring
valuestring

Examples

A json cookie file (cookie.json):

json
[
  {
    "browser": "Chrome",
    "profile": "Default",
    "host": "example.com",
    "path": "/",
    "name": "session",
    "value": "abc123",
    "is_secure": true,
    "is_http_only": true,
    "has_expire": true,
    "is_persistent": true,
    "expire_at": "2026-06-01T00:00:00Z",
    "created_at": "2026-01-15T09:30:00Z"
  }
]

The same data with --format cookie-editor (still written to cookie.json):

json
[
  {
    "domain": "example.com",
    "expirationDate": 1780272000,
    "httpOnly": true,
    "name": "session",
    "path": "/",
    "secure": true,
    "value": "abc123"
  }
]

The Cookie-Editor schema keeps only domain, expirationDate (Unix seconds, 0 when the cookie has no expiry), httpOnly, name, path, secure, and value.

Handle exports safely

Every format can contain credentials, authenticated sessions, personal history, and local filesystem paths. Store output on encrypted media, restrict access to the authorized engagement team, never attach real exports to public issues, and delete them according to your retention policy. A ZIP is packaging, not encryption.

See also