The credentials found on a machine, one page at a time
Every credential linked to the machine that has a card (site, user, dates), cut and counted in the database, with no cap. Paginated, in the order the sheet sorts them (host, user, hash); total_pages is at least 1, past the last page items is empty. Same access rule, anchor (hash, optional) and masking as the sheet GET /machines/{machine_hash}; the generated_at of a rubric read from the cached sheet is the build of that sheet, and two calls that answer the same one answer the same page. on_your_domains and root_is_yours keep the credentials that are, or are not, on the client's domains (the latter: the site's own root domain is the client's); host keeps one site. A credential on the client's domains shows its password fingerprint only, never the password. Never returns a secret (a cookie value, a Windows password, a card number), never the source of a log for an API key, and never a password of a third party. Every call is written to the access journal as machine.read. An API key's call is counted against the daily and monthly quota of its workspace, refusals included.
Authorization
ApiKeyAuth API key for authentication
In: header
Path Parameters
The machine: any of its logs, as machine_hash of the list says (32 hex characters, any case).
^[0-9a-fA-F]{32}$Query Parameters
Optional: a credential of the tenant that is on this machine (32 hex characters, any case). Without it the server takes the smallest credential of the tenant on the machine itself and checks it exactly the same way; the machine is then open to the same people. With it, that credential is checked instead and anchors the machine: a credential that is not in the perimeter, or not on this machine, is refused (404) with no fallback to another.
Page number, from 1. Past the last page items is empty.
11 <= value <= 1000000Rows per page, 200 at most.
501 <= value <= 200True: only the client's own; False: only the others.
True: only those whose site's own root domain is the client's; False: the others.
Exact site, case-insensitive.
Response Body
application/json
curl -X GET "https://api.stealed.io/api/v1/machines/string/credentials"{
"total": 0,
"page": 0,
"page_size": 0,
"total_pages": 0,
"generated_at": "string",
"items": [
{
"host": "string",
"root_domain": "string",
"username": "string",
"types": [],
"first_seen": "string",
"last_seen": "string",
"on_your_domains": true,
"root_is_yours": true,
"hash": "string",
"password_fp": "",
"origin": false,
"copies": 0
}
]
}The sheet of one stolen machine: a summary, rubrics on demand GET
One machine: the union, deduplicated by natural key, of ALL the copies (logs) of the machine linked to its anchor credential (the 10 most recent, `copies_total` counts them all). By default a summary: the profile (of the most complete copy), the copies with the rows each holds, the figures (`kpis`), and for each rubric its `total`. Ask for rows with `include` (`credentials`, `cookies`, `tokens`, `windows_credentials`, `cards`, `software`, `processes`, `environment`, or `all`) and bound them with `limit`; each rubric is `{included, total, truncated, items}` and `truncated` is `total > limit`. A rubric's own route (`/credentials`, `/cookies`...) pages through all of it. `limit` is 10 by default and 200 at most for an API key (422 above, never a silent cut); a session may ask up to 10 000. Environment variables come with their value for a few benign Windows variables only: every other one is listed by name with `value` null and `masked` true. Without `hash` the server resolves the machine's anchor credential itself; with it, that credential is checked and anchors the machine (another anchor can give another group of copies). Answers 404 when the machine is not in the perimeter of the client looked at, or the credential is not on it. A credential on the client's domains shows its password fingerprint only. `source` of a copy is null unless the organisation has the `source_reveal` feature, and always for an API key. `credentials` also has `undetailed`: the credentials linked to the machine that are not in the registry, which cannot be listed (no site, no user); `total` counts the listed ones only. A credential says `on_your_domains` when its site, its e-mail domain or a routed pair is the client's, and `root_is_yours` when its site's own root domain is. Never returns a secret (a cookie value, a Windows password, a card number), never the source of a log for an API key, and never a password of a third party. Every call is written to the access journal as `machine.read`. An API key's call is counted against the daily and monthly quota of its workspace, refusals included.
The session cookies stolen from a machine, one page at a time GET
Every cookie of the machine, deduplicated, cut and counted in the database, with no cap (a log can hold more than a million). Paginated, in the order the sheet sorts them (host, name, browser); `total_pages` is at least 1, past the last page `items` is empty. Same access rule, anchor (`hash`, optional) and masking as the sheet `GET /machines/{machine_hash}`; the `generated_at` of a rubric read from the cached sheet is the build of that sheet, and two calls that answer the same one answer the same page. `live` keeps the cookies with a known expiry still to come at the instant of the call (the sheet's `kpis.cookies.live`), or the others; `session` the cookies a browser keeps for the session only, or the others; `domain` one root domain; `host` one cookie host (exact, e.g. `.example.com`). A cookie's value is never returned: `has_secret` and an opaque `secret_id` only. Never returns a secret (a cookie value, a Windows password, a card number), never the source of a log for an API key, and never a password of a third party. Every call is written to the access journal as `machine.read`. An API key's call is counted against the daily and monthly quota of its workspace, refusals included.