Skip to content

Add breach-check: HIBP password and email breach lookup - #10

Open
h4root wants to merge 2 commits into
mainfrom
feature/breach-check
Open

Add breach-check: HIBP password and email breach lookup#10
h4root wants to merge 2 commits into
mainfrom
feature/breach-check

Conversation

@h4root

@h4root h4root commented Aug 1, 2026

Copy link
Copy Markdown
Owner

CLI-проверка утечек по Have I Been Pwned, рядом с leakcheck/certcheck/dotenv-lint. Stdlib-only, как остальные утилиты.

Пароли (breach-check password)

k-anonymity range API, ключ не нужен: наружу уходят только первые 5 символов SHA-1, остальное сверяется локально. Запрос идёт с Add-Padding: true, фиктивные записи с count == 0 отбрасываются, чтобы по размеру ответа нельзя было понять, был ли пароль найден. Пароль читается через getpass или из stdin и никогда не попадает ни в вывод, ни в результат - только метка.

Email (breach-check email)

API v3 breachedaccount, ключ из HIBP_API_KEY (публичного k-anonymity эндпоинта для email у HIBP нет). Пауза --delay (1.6с по умолчанию) между запросами под лимит HIBP, один ретрай на 429 с учётом Retry-After. Сетевые сбои и 5xx пишутся в поле error конкретного адреса и не роняют остальную выборку; 401/403 останавливают работу - без ключа продолжать бессмысленно.

Прочее

  • Форматы text и json, коды выхода: 0 - чисто, 1 - найдены утечки или ошибки, 2 - ошибка использования или конфигурации.
  • 42 теста (pytest), сеть замокана; вживую проверено на range API.

h4root added 2 commits August 1, 2026 21:52
Пароли проверяются через k-anonymity range API: наружу уходят только
первые 5 символов SHA-1, ответ запрашивается с Add-Padding. Email идут
через API v3 с ключом из HIBP_API_KEY, с паузой и ретраем на 429.
Ключ берётся из --key-file, переменной окружения или запрашивается
getpass в интерактивном терминале. Отдельного флага со значением нет:
ключ осел бы в истории shell и в списке процессов.
@h4root
h4root force-pushed the feature/breach-check branch from 76d0d5c to bfaf876 Compare August 1, 2026 19:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant