darkarp/chromepass

Chromepass - Hacking Chrome Saved Passwords

838
Stars
over 8 years
Age
0
Published reviews
0
Questions

Reliability breakdown

What drives the reliability score

Component scores measured daily from GitHub activity (2026-07-15).

Continuity30% of headline4

Activity on 0 of 90 tracked days in the last 90 and 0 of 30 in the last 30.

Closure30% of headline45

Merged 0 of 0 PRs opened and closed 0 of 0 issues opened over the last 90 tracked days — PR flow carries 55% of this component, issue flow 45%.

Shipping20% of headline0

0 releases in the last 180 days, 0 in the last 90 and 0 in the last 30 — a steady cadence scores highest.

Liveness10% of headline0

Last push 936 days ago — freshness decays as pushes age (roughly halves every 83 days without a push).

Support burden10% of headline88

Open-issue load isn't tracked for this repo yet.

Adoption confidence7

Modeled — how confidently teams are adopting this repo. Stargazers

Maintenance quality25

Modeled from PR/issue responsiveness and upkeep signals. Activity pulse

Risk score58

Modeled — lower is better; adoption and continuity risk. Repository

Stays active (30d)0%

Modeled chance the repo stays active over 30 days. Activity pulse

Stays active (90d)11%

Modeled chance the repo stays active over 90 days. Activity pulse

Release rhythm (180d)0

Regularity of releases over the last 180 days. Releases

Maintainer bus risk (90d)91%

Modeled — lower is better; concentration of commits in few maintainers. Contributors graph

Project Overview

Chromepass is an offensive-security utility whose job is narrow and blunt: pull saved passwords out of Google Chrome and decrypt them. If you do authorized red-team work, build detections, or just want to understand how much your browser trusts the local machine, this is the kind of tool you study.

Treat it as a demonstration of a credential-access technique, not a product you deploy. It targets Chrome's local credential store, reads the encrypted blobs, and uses the operating system's own key material to turn them back into plaintext. That is the whole point: Chrome's saved-password security model assumes the local user account is trusted, and Chromepass shows you exactly what an attacker (or you, with permission) can do once that assumption holds.

This is a focused, single-purpose project. It is not a framework, it does not manage engagements, and it will not hold your hand. Because it sits in the offensive-tooling space, expect the maintenance cadence and documentation depth to vary — check the commit history and open issues before you rely on it, since security tools like this break whenever Chrome changes its storage format.

Use it only against systems you own or are explicitly authorized to test. Extracting credentials from a machine you do not control is a crime in most jurisdictions, full stop.

Key Challenges Addressed

The real problem Chromepass illustrates is that "saved in the browser" is not the same as "safe." Specific challenges it targets:

  • **Local credential exposure.** Chrome stores passwords encrypted, but the decryption key lives on the same machine, protected by the OS user context. Chromepass demonstrates that any code running as that user can recover the plaintext. The defensive lesson: a compromised endpoint means compromised saved passwords.
  • **Detection and response testing.** If you run a blue team, you need to know whether your EDR flags credential reads from the Chrome profile directory. Running a known tool like this in a lab is how you generate the telemetry to tune those detections.
  • **Password-hygiene reality checks.** It makes concrete the argument for a dedicated password manager with a master secret, rather than relying on the browser's built-in store.

The mechanism is straightforward: locate the Chrome user-data directory, read the credential store, obtain the per-user encryption key from the OS-protected storage, and decrypt.

Features and Use Cases

What you can realistically do with it:

  • **Authorized post-exploitation demonstrations.** On an engagement where you already have user-level code execution, show the client what "saved passwords" actually means in terms of risk.
  • **Detection engineering.** Use it as a repeatable source of credential-access activity to validate that your monitoring catches reads of the Chrome login data store.
  • **Security education.** Teach developers and users why browser-saved credentials are only as strong as the endpoint they sit on.

Do not use it for phishing follow-up, lateral movement against third parties, or anything outside a written scope. The tool does not know or care about your authorization — that responsibility is entirely yours.

Ecosystem and Dependencies

Tools in this category live alongside broader credential-recovery and post-exploitation suites. If you are building a lab or a detection corpus, you will likely pair a focused extractor like Chromepass with general-purpose tools such as LaZagne for multi-application credential recovery, or browser-data extractors like HackBrowserData that cover cookies, history, and bookmarks in addition to passwords.

The dependency you cannot escape is the host OS itself. Because decryption relies on operating-system key-protection APIs, the tool is tightly coupled to platform internals and to Chrome's current storage format. When Chrome ships a new encryption scheme, expect breakage until the tool is updated.

Architectural Overview

The design splits into a few clear responsibilities:

  • **Locator.** Finds the Chrome profile and its credential database on disk.
  • **Reader.** Opens and parses the stored credential records.
  • **Decryptor.** Pulls the user-scoped key from OS-protected storage and reverses the encryption on each record.
  • **Output.** Renders recovered credentials for the operator.

Why this matters to you: the decryptor is the fragile, platform-specific part. Everything else is comparatively stable file and database handling. When you debug a failure, start at the key-retrieval step, because that is where OS and Chrome version changes bite first.

Pros and Cons

  • Does one thing and makes a single security concept very concrete.
  • Useful for authorized testing, detection tuning, and education.
  • Small surface area, so it is readable and easy to audit before you run it.
  • Tightly coupled to Chrome internals; breaks when the storage format changes.
  • Narrow scope — no engagement management, no multi-app coverage.
  • Maintenance and platform support vary; verify the project is current before depending on it.
  • High misuse potential, which means you carry full legal and ethical responsibility.

Comparison and Alternatives

Measured 90-day trends for this project and its alternatives.

GitHub stars

Weekly star gains

21291-30
Full metrics details

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

Chromepass

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
HackBrowserData

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

180 observed daily rows. Missing days are not fabricated.

DateValue

Issues opened

Weekly total

320
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

Chromepass

GitHub API observation. Historical values render only when the source provides a real observation for that day.

131 observed daily rows. Missing days are not fabricated.

DateValue
HackBrowserData

GitHub API observation. Historical values render only when the source provides a real observation for that day.

177 observed daily rows. Missing days are not fabricated.

DateValue

Issues closed

Weekly total

1790
Full metrics details

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

Chromepass

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

131 observed daily rows. Missing days are not fabricated.

DateValue
HackBrowserData

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

177 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests opened

Weekly total

950
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

Chromepass

GitHub API observation. Historical values render only when the source provides a real observation for that day.

131 observed daily rows. Missing days are not fabricated.

DateValue
HackBrowserData

GitHub API observation. Historical values render only when the source provides a real observation for that day.

177 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests closed

Weekly total

950
Full metrics details

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

Chromepass

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

131 observed daily rows. Missing days are not fabricated.

DateValue
HackBrowserData

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

177 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests merged

Weekly total

950
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

Chromepass

GitHub API observation. Historical values render only when the source provides a real observation for that day.

131 observed daily rows. Missing days are not fabricated.

DateValue
HackBrowserData

GitHub API observation. Historical values render only when the source provides a real observation for that day.

177 observed daily rows. Missing days are not fabricated.

DateValue

Open/closed pull request ratio

Weekly average

100500
Full metrics details

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

Chromepass

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
HackBrowserData

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue

Open/closed issues ratio

Weekly average

100500
Full metrics details

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

Chromepass

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
HackBrowserData

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue

Releases

Weekly total

110
Full metrics details

GitHub release published_at events bucketed by UTC day; drafts are excluded.

Chromepass

GitHub release published_at events bucketed by UTC day; drafts are excluded.

180 observed daily rows. Missing days are not fabricated.

DateValue
HackBrowserData

GitHub release published_at events bucketed by UTC day; drafts are excluded.

180 observed daily rows. Missing days are not fabricated.

DateValue

Hotness score

Weekly average

100500
Full metrics details

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

Chromepass

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.40 × Hot today + 0.40 × Hot week + 0.20 × Breakout.

  • Same-day multiplier = stars 1d ÷ max(1, stars 7d ÷ 7)
  • Weekly multiplier = stars 7d ÷ max(1, stars 30d ÷ 30 × 7)
  • Fortnight multiplier = stars 14d ÷ max(1, stars 90d ÷ 90 × 14)
  • Hot today = clamp(70 × log-scale(stars 1d, 1000) + 30 × breakout-scale(same-day, 4))
  • Hot week = clamp(75 × log-scale(stars 7d, 5000) + 25 × breakout-scale(weekly, 3))
  • Breakout = clamp(35 × breakout-scale(same-day, 4) + 40 × breakout-scale(weekly, 3) + 25 × breakout-scale(fortnight, 2.5))
DateStarsStars 1dStars 7dStars 14dStars 30dStars 90dSame-day multiplierWeekly multiplierFortnight multiplierHot todayHot weekBreakoutStored score
HackBrowserData

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.40 × Hot today + 0.40 × Hot week + 0.20 × Breakout.

  • Same-day multiplier = stars 1d ÷ max(1, stars 7d ÷ 7)
  • Weekly multiplier = stars 7d ÷ max(1, stars 30d ÷ 30 × 7)
  • Fortnight multiplier = stars 14d ÷ max(1, stars 90d ÷ 90 × 14)
  • Hot today = clamp(70 × log-scale(stars 1d, 1000) + 30 × breakout-scale(same-day, 4))
  • Hot week = clamp(75 × log-scale(stars 7d, 5000) + 25 × breakout-scale(weekly, 3))
  • Breakout = clamp(35 × breakout-scale(same-day, 4) + 40 × breakout-scale(weekly, 3) + 25 × breakout-scale(fortnight, 2.5))
DateStarsStars 1dStars 7dStars 14dStars 30dStars 90dSame-day multiplierWeekly multiplierFortnight multiplierHot todayHot weekBreakoutStored score

Reliability score

Weekly average

100500
Full metrics details

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

Chromepass

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.30 × Continuity + 0.30 × Closure + 0.20 × Shipping + 0.10 × Liveness + 0.10 × Support burden.

  • Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
  • Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
  • Shipping = 100 × (20% × release ratio 30d + 30% × release ratio 90d + 50% × release ratio 180d); ratios are releases ÷ 2, 6, and 12, capped at 1
  • Support burden = 100 − 2 × open issues per 1,000 stars
  • Liveness = 100 × exp(−pushed days ago ÷ 120)

Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.

DateIssues openedIssues closedPRs openedPRs mergedReleasesStarsOpen issuesPushed days agoContinuityClosureShippingLivenessSupport burdenLicenseObserved daysMissing daysNeeds healingStored score
HackBrowserData

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.30 × Continuity + 0.30 × Closure + 0.20 × Shipping + 0.10 × Liveness + 0.10 × Support burden.

  • Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
  • Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
  • Shipping = 100 × (20% × release ratio 30d + 30% × release ratio 90d + 50% × release ratio 180d); ratios are releases ÷ 2, 6, and 12, capped at 1
  • Support burden = 100 − 2 × open issues per 1,000 stars
  • Liveness = 100 × exp(−pushed days ago ÷ 120)

Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.

DateIssues openedIssues closedPRs openedPRs mergedReleasesStarsOpen issuesPushed days agoContinuityClosureShippingLivenessSupport burdenLicenseObserved daysMissing daysNeeds healingStored score

If your need is broader than "Chrome passwords only," several mature, well-known tools cover adjacent or overlapping ground.

For most teams, the best overall alternative is LaZagne: it covers credential recovery across many applications rather than Chrome alone, has a long track record, and is the more widely referenced tool in security curricula.

If you are a red-teamer or detection engineer who needs a concrete, auditable demonstration of how Chrome's saved-password store falls to local code execution, Chromepass is worth your time — read the source and the issues on the before you run anything. Its narrow scope is a feature here: a small tool you can fully understand beats a large suite you cannot.

Do not point this at a machine you are not authorized to test — credential extraction without written permission is a crime, and the tool will happily decrypt whatever it can reach. Do this first: stand up a throwaAC, log into Chrome with junk credentials in an isolated lab VM, and run it there while your monitoring watches.

Join the conversation

Reviews · Questions · Posts

Share what you know about chromepass — write a review from your real experience, ask an implementation question, or publish a post about how you use it.

Share your experience

Write or update your review

Explain what worked, what broke down, and what another team should know before adopting chromepass.

Write your review now — it saves locally and publishes automatically after you sign in.

Rating
Positive attributes
Negative attributes

Project Q&A

Questions and answers

Browse implementation threads tied directly to darkarp/chromepass. Each question links through to the full answer page.

Q&A No threads yet

Be the first to ask how teams run chromepass in production. Every question you post becomes a durable, searchable answer page other developers can find.

Ask the first question

Related posts

Posts tagged with the same topics

These posts come from the same topic surface as this repo, so readers can move from project evaluation into practical writeups and migration notes without leaving context.

Posts No topic-linked posts yet

Share how your team uses chromepass — a migration note, an architecture writeup, or a comparison. Your post reaches everyone browsing these same topics.

Write the first post
Get a weekly email with the hottest new projects in the Build Automation and Executable world.
No Spam. Unsubscribe easily at any time.

Copyright 2018-2026 Awesome Open Source.  All rights reserved.