How haveibeenpwned/pwnedpasswordsdownloader works
This is a .NET command-line downloader for the Pwned Passwords range dataset. The principal workflow is: a user selects SHA1 or NTLM and an output mode; the command downloads ranges from the API, verifies Content-MD5, retries failures, and persists either one complete file or per-range files. Directory mode additionally reads and atomically updates an ETag index for incremental downloads. No source excerpts were provided, so relationships below rely on README-documented behavior and the visible module paths.
Components 9
Command Interface
- Command Entry
src/HaveIBeenPwned.PwnedPasswords.Downloader/Program.cs
Download Processing
- Range Downloader
src/HaveIBeenPwned.PwnedPasswords.Downloader/Program.cs - Content Verification
src/HaveIBeenPwned.PwnedPasswords.Downloader/Program.cs
Incremental State
- Range Index
src/HaveIBeenPwned.PwnedPasswords.Downloader/RangeIndex.cs - ETag Index File
Offline Output
- Single Output File
- Range Output Files
Remote Service
- Pwned Passwords API
Other components
- CLI User
Connections 10
- CLI User → Command Entry: invokes
- Command Entry → Range Downloader: dispatches
- Range Downloader → Pwned Passwords API: downloads ranges
- Pwned Passwords API → Range Downloader: returns content
- Range Downloader → Content Verification: checks MD5
- Content Verification → Range Downloader: signals retry
- Range Downloader → Range Index: uses ETags
- Range Index → ETag Index File: reads or writes
- Range Downloader → Single Output File: writes complete file
- Range Downloader → Range Output Files: writes range files