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

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

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

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

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

Категории

Все категории
Loading categories
TS_LLMLib — Python-библиотека для локального анализа безопасности с помощью LLM в сочетании с бинарным анализом Ghidra, сканированием уязвимостей C/C++ и интеграцией инструментов MCP для автоматизированной обратной разработки и генерации отчётов. | Kitploit
Инструменты/GitHubGitHub/trustedsec/ts_llmlib
Статический анализАнализ уязвимостейАнализ КодаЭксплуатацияОбратная инженерияСкриптинг и автоматизацияУтилиты и фреймворкиАнализ Бинарных ФайловМашинное ОбучениеБезопасность ИИ
GitHubtrustedsec/ts_llmlib

TS_LLMLib

12 месяцев назадЕщё не проверено

Популярное

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

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

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

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

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

Python-библиотека для локального анализа безопасности с помощью LLM в сочетании с бинарным анализом Ghidra, сканированием уязвимостей C/C++ и интеграцией инструментов MCP для автоматизированной обратной разработки и генерации отчётов.

Репозиторий

ts_llmlib - Библиотека LLM от TrustedSec

TrustedSec LLM Library — это библиотека Python для взаимодействия с локальными LLM, поддерживающими использование инструментов. Она позволяет выполнять крупные рабочие процессы, традиционно доступные только для передовых моделей, используя локальные конечные точки LLM и интеграцию с MCP (Model Context Protocol).

Возможности

  • Поддержка локальных LLM: Подключение к любому API-совместимому с OpenAI эндпоинту или использование локальных серверов LLM
  • Интеграция MCP: Полная поддержка Model Context Protocol для протоколов RPC и SSE
  • Реестр инструментов: Встроенные инструменты для работы с файлами с возможностью расширения пользовательскими инструментами
  • История диалога: Сохранение контекста чата на протяжении нескольких шагов
  • Ограничения по времени: Настраиваемые тайм-ауты выполнения для предотвращения зависаний
  • Чистый Python: Отсутствие внешних зависимостей за пределами стандартной библиотеки

Установка

Как пакет Python

root@kitploit:~
# Клонируйте или скопируйте репозиторий
git clone https://github.com/trustedsec/ts_llmlib.git
cd ts_llmlib

# Установите с помощью pip
pip install -e .

Ручная установка

Скопируйте директорию ts_llmlib/ в ваш проект:

root@kitploit:~
cp -rf ts_llmlib /path/to/your/project/

Быстрый старт

Базовое использование

root@kitploit:~
from ts_llmlib import ChatSession

# Инициализация с настройками по умолчанию (подключается к http://localhost:1234/v1/chat/completions)
chat = ChatSession()

# Выполнение промпта
response = chat.run_prompt("Какие файлы находятся в текущей директории?")
print(response['content'])

С пользовательской конфигурацией

root@kitploit:~
from ts_llmlib import ChatSession

# Настройка с пользовательскими параметрами
chat = ChatSession(
    system_prompt="Вы — полезный помощник, использующий файловые инструменты.",
    tool_list=[],  # Пустой список = использовать файловые инструменты по умолчанию
    mcp_servers={
        "default": "http://localhost:3000/mcp"
    },
    llm_endpoint_url="http://localhost:1234/v1/chat/completions",
    model_name="qwen3-coder-next",
    timeout=60,
    max_runtime=300
)

response = chat.run_prompt("Запиши 'hello' в /tmp/greeting.txt")
print(response['content'])

С историей диалога

root@kitploit:~
from ts_llmlib import ChatSession

chat = ChatSession()

history = [
    {"role": "user", "content": "Сколько будет 2+2?"},
    {"role": "assistant", "content": "Ответ — 4."}
]

response = chat.run_prompt("Можешь записать это в файл?", history=history)

Встроенные инструменты

Интеграция MCP

MCP (Model Context Protocol) позволяет интегрироваться с внешними инструментами и сервисами. При настройке MCP-серверов ts_llmlib будет:

  1. Инициализировать соединения с каждым сервером
  2. Получать доступные инструменты с сервера
  3. Объединять их со встроенными инструментами (инструменты MCP имеют приоритет при совпадении имён)
  4. Выполнять вызовы инструментов через соответствующий сервер

Пример с сервером Ghidra MCP

root@kitploit:~
from ts_llmlib import ChatSession

chat = ChatSession(
    mcp_servers={
        "ghidraSvr": "http://localhost:8081/sse"
    },
    llm_endpoint_url="http://localhost:1234/v1/chat/completions",
    model_name="qwen3-coder-next"
)

# Чат-сессия автоматически получит и интегрирует инструменты Ghidra,
# такие как list_methods, decompile_function, get_xrefs_to и др.

Конечные точки MCP-сервера

ts_llmlib поддерживает как RPC-стиль, так и SSE (Server-Sent Events) эндпоинты:

  • RPC: http://localhost:3000/mcp
  • SSE: http://localhost:3000/sse (автоматически преобразуется в /mcp для RPC-вызовов)

Справочник API

Класс ChatSession

root@kitploit:~
ChatSession(
    system_prompt: str | None = None,
    tool_list: list | None = None,
    mcp_servers: dict[str, str] | None = None,
    llm_endpoint_url: str = "http://localhost:1234/v1/chat/completions",
    model_name: str = "default",
    timeout: int = 60,
    max_runtime: int = 300
)

Параметры:

  • system_prompt (str | None): Пользовательский системный промпт. По умолчанию — минимальный промпт ассистента.
  • tool_list (list | None): Список определений пользовательских инструментов. Пустой список использует встроенные инструменты.
  • mcp_servers (dict[str, str] | None): Словарь, сопоставляющий имена серверов с URL.
  • llm_endpoint_url (str): URL API-эндпоинта LLM.
  • model_name (str): Идентификатор модели для эндпоинта LLM.
  • timeout (int): Тайм-аут HTTP-запроса в секундах.
  • max_runtime (int): Максимальное время выполнения промпта в секундах.

Метод run_prompt

root@kitploit:~
response = chat.run_prompt(
    user_prompt: str,
    conversation_history: list[dict] | None = None,
    disable_tools: list[str] | None = None,
    max_runtime: int | None = None
) -> dict

Параметры:

  • user_prompt (str): Сообщение или вопрос пользователя.
  • conversation_history (list[dict] | None): Необязательная история диалога в виде списка пар роль/содержание.
  • disable_tools (list[str] | None): Список имён инструментов для отключения при этом вызове.
  • max_runtime (int | None): Переопределение максимального времени выполнения для данного вызова.

Возвращает:

root@kitploit:~
{
    "content": str,           # Текст ответа LLM
    "tool_calls": list,       # Список выполненных вызовов инструментов (если есть)
    "usage": dict | None,     # Использование токенов, если доступно от LLM
    "error": str | None       # Сообщение об ошибке, если выполнение не удалось
}

Реестр инструментов

ToolRegistry управляет всеми инструментами, доступными для чат-сессии:

  • Встроенные инструменты: Файловые операции (чтение/запись/список)
  • Инструменты MCP: Инструменты, полученные с MCP-серверов
  • Пользовательские инструменты: Инструменты, определённые пользователем через параметр tool_list

Примеры

Чтобы переопределить пути по умолчанию, можно установить следующие переменные; они проверяются в ChatSession.

root@kitploit:~
TS_LLM_MODEL=qwen3-coder-next TS_LLM_ENDPOINT=http://HOSTNAME:1234/v1/chat/completions
# Пример использования
export TS_LLM_MODEL=qwen3-coder-next
export TS_LLM_ENDPOINT=http://HOSTNAME:1234/v1/chat/completions
ts_llmlib-redclippy
# ИЛИ
TS_LLM_MODEL=qwen3-coder-next TS_LLM_ENDPOINT=http://HOSTNAME:1234/v1/chat/completions ts_llmlib-redclippy

Анализ исходного кода C/C++

Анализирует исходные файлы C/C++ на наличие уязвимостей безопасности:

root@kitploit:~
ts_llmlib-cpp-analyze <source_folder> <output_folder>

Бинарный анализ с Ghidra

Обратный инжиниринг бинарного кода с интеграцией Ghidra:

root@kitploit:~
# Базовый анализ
ts_llmlib-ghidra-analyze <output_folder>

# Режим только переименования (первый проход)
ts_llmlib-ghidra-analyze --rename_only <output_folder>

# Обработка только ранее безымянных функций
ts_llmlib-ghidra-analyze --process_unnamed_only <output_folder>

# Групповой анализ для группировки по отношениям вызовов
ts_llmlib-ghidra-analyze --grouped <output_folder>

После завершения работы, если не использовался --rename_only, можно очистить структуру командой:

root@kitploit:~
ts_llmlib-ghidra-cleanup <input_folder> <output_folder>

Генерация отчётов об уязвимостях

Формирование форматированных отчётов об уязвимостях из JSON-файлов обзора:

root@kitploit:~
ts_llmlib-ghidra-report <review_folder>

GUI-приложение для чата

Запуск чат-интерфейса RedClippy на Qt (обратите внимание: требуется pyside6):

root@kitploit:~
ts_llmlib-redclippy

Параметры конфигурации

Настройка эндпоинта LLM

ts_llmlib подключается к любому API-совместимому с OpenAI эндпоинту. Распространённые локальные серверы LLM:

СерверURL по умолчанию
Ollamahttp://localhost:11434/v1/chat/completions
LM Studiohttp://localhost:1234/v1/chat/completions
vLLMhttp://localhost:8000/v1/chat/completions

Ограничения по времени

Управление выполнением осуществляется двумя настройками тайм-аута:

  • HTTP-тайм-аут (timeout): Максимальное время для одного API-запроса
  • Макс. время выполнения (max_runtime): Общее астрономическое время, выделенное на обработку промпта (включая вызовы инструментов)

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

Обработка ошибок

Все ошибки возвращаются в словаре ответа:

root@kitploit:~
response = chat.run_prompt("Какой-то промпт")

if response.get('error'):
    print(f"Ошибка: {response['error']}")
else:
    print(response['content'])

Распространённые ошибки

  • HTTP-ошибки: Отказ в соединении, тайм-аут, неверный API-ключ
  • Ошибки разбора JSON: Неверные аргументы инструментов или некорректные ответы
  • Ошибки выполнения инструментов: Отсутствующие файлы, проблемы с правами доступа, неверные параметры
  • Ошибки превышения времени: Операция превысила лимит max_runtime

Структура проекта

root@kitploit:~
ts_llmlib/
├── __init__.py          # Инициализация пакета, экспорт ChatSession
├── client.py            # LLMClient для HTTP-запросов к эндпоинтам LLM
├── chat.py              # Класс ChatSession (основной API)
├── mcp.py               # MCPClient для интеграции Model Context Protocol
├── tools.py             # ToolRegistry для управления инструментами
├── HOW_TO_TS_LLMLIB.md  # Исходная документация
└── examples/            # Примеры скриптов
    ├── c_cpp_analyze.py     # Скрипт анализа уязвимостей C/C++
    ├── redclippy.py         # GUI-чат-приложение на Qt
    ├── ghidra_analyze.py    # Анализ бинарного кода с Ghidra и MCP
    ├── ghidra_vuln_report.py  # Генератор отчётов об уязвимостях
    ├── ghidra_cleanup.py    # Утилита реорганизации выходных файлов
    └── example_ts_llmlib.py # Пример скрипта, демонстрирующего использование библиотеки

pyproject.toml         # Современная конфигурация пакета Python (скрипты определены здесь)
LICENSE.txt            # Лицензия BSD-3-Clause
README.md              # Этот файл

Лицензия

Лицензия BSD-3-Clause — подробнее в файле LICENSE.txt.

Участие в разработке

Приветствуются любые вклады! Пожалуйста, не стесняйтесь отправлять Pull Request.

  1. Форкните репозиторий
  2. Создайте ветку для вашей функции (git checkout -b feature/AmazingFeature)
  3. Закоммитьте изменения (git commit -m 'Добавлена AmazingFeature')
  4. Отправьте изменения в ветку (git push origin feature/AmazingFeature)
  5. Откройте Pull Request
Скачать инструмент
ИнструментПараметрыОписание
read_local_filepath: strЧитает содержимое локального файла
write_local_filepath: str, content: strЗаписывает содержимое в локальный файл
list_directorypath: strВыводит список файлов и директорий по пути