Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
lm-fingerprint — Идентификация OpenAI-совместимых LLM по сигналам токенизатора и поведения. | Kitploit
Инструменты/GitLabGitLab/wattocyber/lm-fingerprint
РазведкаСбор информацииТестирование на ПроникновениеRed TeamingБезопасность APIБезопасность ИИ
GitLabwattocyber/lm-fingerprint

lm-fingerprint

Идентификация OpenAI-совместимых LLM по сигналам токенизатора и поведения.

Репозиторий
442 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

LM-Fingerprint

LM-Fingerprint

Снимает отпечаток serving-стека, стоящего за OpenAI-совместимым chat-эндпоинтом.

Он фиксирует учёт токенизатора, скрытое смещение шаблона, текст валидации, форму JSON/SSE, принимаемые роли, именованные лимиты и заголовки шлюза. Он не загружает веса, не хранит API-ключи и не спрашивает модель, кто она.

Импортlm_fingerprint
CLIlm-fingerprint
Что этоВерсионируемые инфраструктурные пробы против /chat/completions. Офлайн-синтетическая библиотека. Локальная проверка токенизатора Hugging Face (без весов).
Чем это не являетсяНе градиентная атака. Не джейлбрейк. Не идентификация по encode-map (tokprint). Не «какой бинарник на этом порту» (Julius).

python license repro

Только авторизованное использование: эндпоинты, которыми вы владеете, лаборатории, которые вы контролируете, баг-баунти в рамках скоупа, письменные пентесты. См. SECURITY.md. --api-key-env задаёт имя переменной окружения. Ключ никогда не логируется.

Содержание

  1. Проблема
  2. Что такое отпечаток
  3. Архитектура
  4. Модель угроз
  5. Установка и repro-гейт
  6. Первый запуск
  7. Против живого эндпоинта
  8. Локальные токенизаторы Hugging Face
  9. CLI
  10. Библиотека
  11. Чтение JSON-результата
  12. Measured vs ModelPrint
  13. Правила честности
  14. Смежные инструменты
  15. Лицензия

Проблема

OpenAI-совместимый чат — это общий провод. vLLM, SGLang, лабораторный шлюз и реселлер — все могут говорить на /chat/completions. Поле model — это метка. Хост может подменить бэкенд, обернуть токенизатор или поставить роутер спереди. Пробы личности сдвигаются, когда сдвигается системный промпт.

Что остаётся неизменным — это сантехника: как сервер считает токены, сколько скрытых токенов шаблона он добавляет, текст, написанный его валидатором, диалект SSE, какие роли он принимает, число, которое он называет, когда max_tokens абсурден, заголовки Server / провайдера.

Именно на этот вопрос отвечает инструмент: какой стек обрабатывает этот chat-путь? Не какой чекпоинт, не какой процесс привязан к порту, не кто написал completion.

ModelPrint задавал тот же вопрос в браузере с девятью пробами. Этот пакет — форма CLI и библиотеки: версионируемые пробы, библиотека для enrollment, попарные доказательства, дрейф и локальный путь токенизатора, который никогда не обращается к хостинговому Inference API.

Что такое отпечаток

Отпечаток — это версионируемая JSON-запись value проб. Каждая проба должна возвращать одно и то же значение при повторном обращении к тому же стеку. Временные метки, request id, задержка и ключи вырезаются.

Счётчики токенизатора переиспользуют тексты ModelPrint 1.0.0 (MIT, unclecode/modelprint), побайтово точные, минус односимвольный базовый "a", чтобы скрытый шаблон сократился. Эти четыре числа — проекция encode-map (T). Равные счётчики не означают (T_1 \equiv T_2). GPT-2 и OPT совпадают на них; хеш rust-пайплайна — нет.

hf_identity (только локальный HF-путь) — это SHA-256 от этого обязательства пайплайна плюс хеш chat-шаблона. Одинаковые (T) и одинаковый шаблон совпадают (tiny-gpt2 / gpt2). Это семейство + шаблон, а не чекпоинт.

Архитектура

Структура:

src/lm_fingerprint/
 cli.py argparse. --api-key-env only. No --api-key.
 client.py HttpTransport, InProcessTransport, redact_secrets
 probes.py 38 ProbeSpec rows (tokenizer / errors / shape / roles / limits / proxy / surface)
 engine.py run suite → Fingerprint
 schema.py schema_version=1, probe_suite_version=lm-fingerprint-probes-v2
 similarity.py weighted exact-match, coverage, confidence, library rank, drift
 align.py constant-shift MAE + residual on the 15-script suite
 catalog.py offline supported_parameters twins
 library.py enroll / match. Packaged rows are synthetic fixtures
 synthetic.py in-process stacks for tests and the shipped library
 hf.py local AutoTokenizer + named validation profile. No weights
 localmap.py encode-pipeline-v2 commitment (rust tokenizer.json)
 proof.py measured ModelPrint 9-probe identity
 report.py text reports
 data/library.json

Два пути к одному и тому же набору проверок:

live endpoint local Hub tokenizer (optional [hf])
 | |
 HttpTransport.chat HfChatTransport
 POST /chat/completions encode / chat_template for counts
 | synthetic profile for errors/shape
 +------------------+----------------------+
 |
 engine.run_probes
 |
 Fingerprint (JSON, keyless)
 |
 compare | match | drift | enroll

Создание проб: docs/PROBES.md. Карта модулей: docs/ARCHITECTURE.md.

Модель угроз

Что у вас естьЧто вы можете наблюдатьЧто делает этот инструмент
Авторизованный OpenAI-совместимый base URL + ключHTTP чата: usage, ошибки, заголовки, SSEfingerprint / compare / match / drift
Локальные файлы токенизатораencode и chat_templatefingerprint-hf / verify-hf. Веса остаются на диске
Ничего, кроме host:portБаннер / /health / /api/tagsВне области применения. Используйте Julius

Совпадение — это общая инфраструктура. Одна лаборатория может обслуживать две контрольные точки на одном стеке. Маршрутизатор может отвечать собственной обёрткой ошибок. Согласие по счёту не является идентичностью (T).

Установка и шлюз воспроизводимости

Python 3.10+. Основная среда выполнения — стандартная библиотека.

git clone https://gitlab.com/WattoCyber/lm-fingerprint.git
cd lm-fingerprint
pip install -e ".[dev]"
PYTHONPATH=src python3 scripts/repro.py

Ожидается REPRO_OK. Этот шлюз работает офлайн: без GPU, без production API. Локальные тесты HF пропускаются, если токенизатор не закэширован.

pip install -e ".[hf]" # transformers, for fingerprint-hf / verify-hf

Первый запуск

lm-fingerprint list-probes
lm-fingerprint list

list выводит упакованные стеки: openai-chat-strict, glm-compat, router-openai, permissive-compat. Это фикстуры, а не спарсенные провайдеры. Сравните два из них без сети:

from lm_fingerprint.client import InProcessTransport
from lm_fingerprint.engine import fingerprint_endpoint
from lm_fingerprint.similarity import compare_fingerprints
from lm_fingerprint.synthetic import SYNTHETIC_STACKS, handler_for

def fp(stack_id):
 t = InProcessTransport(handler_for(stack_id), headers=SYNTHETIC_STACKS[stack_id].headers)
 return fingerprint_endpoint(t, model=f"synthetic/{stack_id}", base_url=f"inprocess://{stack_id}")

print(compare_fingerprints(fp("openai-chat-strict"), fp("router-openai"))["note"])

Тот же токенизатор слов, другие ошибки и заголовки. Оценка около 0.62. Четыре счётчика ModelPrint совпадают; этот инструмент не называет это общим стеком.

Против живого эндпоинта

lm-fingerprint fingerprint \
 --base-url https://your-lab.example/v1 \
 --model the-label \
 --api-key-env OPENAI_API_KEY \
 --out lab.json
Скачать инструмент