Методология и источники

Сервис анонимный: он не хранит и не передаёт то, что вы вводите. Все расчёты выполняются в вашем браузере.

Источники данных

База утёкших паролей

Локальная база содержит 99 839 уникальных паролей (SecLists NCSC-100k, MIT) и хранится как фильтр Блума в файле /data/breached-bloom.a521eb61.json. Параметры фильтра:

  • n = 99 839 — число элементов в базе;
  • p = 0.1 % — целевая вероятность ложного срабатывания;
  • m = 1 435 448 бит (234 КБ) — размер битового массива;
  • k = 10 — число независимых хеш-функций (двойное FNV-1a).

Ложное срабатывание возможно только в безопасную сторону: сервис посоветует сменить пароль, которого на самом деле нет в базе. Обратной ошибки (пропустить реально утёкший пароль) у фильтра Блума не бывает. Файл неизменяемый — браузер кэширует его.

Энтропия пароля

Базовая формула для равновероятного случайного пароля (режим «Случайный»): длина × log₂(размер алфавита). Алфавит считается из реально использованных символов сгенерированного пароля.

Остальные режимы считают энтропию иначе:

  • Pronounceable — pronounceableEntropyBits(): чередование гласных/согласных из двух фиксированных наборов, энтропия ниже, чем у случайного той же длины.
  • Easy-To-Type — easyToTypeEntropyBits(): длина × log₂(56), алфавит — 56 символов без похожих (0 1 l o I O).
  • Diceware — dicewareEntropyBits(): число_слов × log₂(7776) ≈ 12,925 бит на слово, словарь EFF (public domain).

Все оценки предполагают равновероятный выбор и не учитывают, что сервис может хранить пароль в виде обратимого хеша, ограничивать длину или добавлять серверный шум. Реальная стойкость — это свойство системы хранения, а не только строки.

Расписание cron

Поддерживается Vixie cron в пять полей (минуты часы день_месяца месяц день_недели) с расширениями Quartz: L в поле дня месяца (последний день и L-3 — за три дня до конца), # и L в поле дня недели (5#3 — третья пятница, 5L — последняя пятница). Символ ? трактуется как *. Разбор и валидация выполняются в браузере.

Ближайшие 5 запусков считаются функцией nextRuns(cron, count = 5, from) из того же файла. Защита от бесконечного цикла на невыполнимых выражениях вроде «30 февраля»: расчёт ограничен 5 годами вперёд (MAX_YEARS_AHEAD = 5). Если за 5 лет не набирается 5 запусков, инструмент вернёт столько, сколько нашёл. Время сравнения — локальное время браузера.

Регулярные выражения

Каталог инструмента — 66 пресетов в 8 группах (страница-каталог: /regex/library/). Движок — встроенный RegExp браузера, синтаксис — стандарт ECMAScript (подмножество PCRE).

Шаблоны — это общедоступные паттерны, проверенные на тестовых строках из вики и документации соответствующих RFC. Это не полная валидация по RFC: например, шаблон URL пропускает невалидные IDN, а шаблон даты — не проверяет високосность за пределами формата YYYY-MM-DD. Для строгой проверки используйте специализированные библиотеки.

Ограничения

Лимиты ввода и вывода по инструментам: константы — из logic.ts соответствующего тула.
ИнструментЛимитПоведение при превышении
csv5 000 000 символов (MAX_CSV_INPUT_CHARS)Ошибка «Вход слишком длинный», ввод не разбирается.
json5 000 000 символов (MAX_INPUT_CHARS), глубина 2000 (MAX_DEPTH)Длинный ввод не разбирается; глубже 2000 уровней — ошибка глубины.
yaml1 000 000 символов (MAX_YAML_INPUT_CHARS), 2 000 000 развёрнутых узлов (MAX_EXPANDED_NODES), глубина dump 1000 (MAX_DUMP_DEPTH)Длинный ввод не разбирается; alias-бомба отсекается до сериализации; глубокий dump — ошибка вместо переполнения стека.
logs100 000 000 символов (MAX_LOG_INPUT_CHARS), топ-10 позиций (TOP_N)Длинный ввод не разбирается; в топах и примерах только первые позиции.
encode2 000 000 символов (MAX_ENCODE_INPUT_CHARS)Ошибка «Вход слишком длинный», ввод не конвертируется.
strings100 000 символов (MAX_STRINGS_INPUT_CHARS)Ошибка «Вход слишком длинный», текст не обрабатывается.
urlпервые 500 пар query (MAX_QUERY_ROWS)Остальные пары не рендерятся, в заметках — «показаны первые 500 из N».
diff500 000 символов двух полей (MAX_DIFF_CHARS), 5 000 строк вывода (MAX_RENDERED_OPS)Расчёт не запускается (ошибка лимита); длинный вывод усечён.
secret-scanner200 000 символов (MAX_SCAN_CHARS), 500 находок (MAX_FINDINGS)Скан не запускается; отчёт обрывается с пометкой «показаны не все».
radix4096 значащих цифр (MAX_SIGNIFICANT_DIGITS)Разбор отклоняется с ошибкой лимита.
subnetпервые 256 подсетей (MAX_SPLIT_ROWS)Показаны первые 256 из N подсетей, остальные не выводятся.
cron5 лет вперёд (MAX_YEARS_AHEAD)Возвращается столько запусков, сколько нашлось за этот срок.
timestampпределы Date: ±8 639 999 999 999 999 мс (MAX_UNIX_MS)Даты вне диапазона ECMA-262 не поддерживаются.

Тулы без собственного ограничения длины (например,hash,jwt, regex) обрабатывают ввод целиком. Живой пересчёт тяжёлых тулов (csv, json, yaml, regex, logs) откладывается общим debounce на 200 мс — вставка не пересчитывается на каждый символ.

Инструменты