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

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

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

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

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

Категории

Все категории
Loading categories
kangaroo — Алгоритм Полларда «Кенгуру» с ускорением на GPU для решения задачи дискретного логарифмирования на эллиптической кривой (ECDLP) на secp256k1, поддерживающий бэкенды Vulkan, Metal и DX12. | Kitploit
Инструменты/GitHubGitHub/oritwoen/kangaroo
Инструменты шифрования/дешифрованияАнализ уязвимостейКриптографияАнализ Бинарных ФайловСтатьи и ИсследованияОбучение и Образование
GitHuboritwoen/kangaroo

kangaroo

Алгоритм Полларда «Кенгуру» с ускорением на GPU для решения задачи дискретного логарифмирования на эллиптической кривой (ECDLP) на secp256k1, поддерживающий бэкенды Vulkan, Metal и DX12.

Репозиторий
2517166 месяцев назадПроверено Kitploit

Популярное

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

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

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

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

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

Кенгуру

Crates.io Загрузки Лицензия Ask DeepWiki

Ускоренный на GPU алгоритм Полларда «Кенгуру» для решения задачи дискретного логарифмирования эллиптической кривой (ECDLP) на secp256k1.

Возможности

  • 🖥️ Кроссплатформенный GPU — Vulkan (AMD, NVIDIA, Intel), Metal (Apple Silicon), DX12 (Windows) через wgpu
  • 🦀 Чистый Rust + WGSL — без зависимости от CUDA, вычислительные шейдеры компилируются во время выполнения
  • ⚡ Отличительные точки — эффективное обнаружение коллизий с автоматически подбираемыми битами DP
  • 🔄 Карта отрицания — ускорение ~1.29× за счёт направленных переходов по чётности Y с защитой от циклов
  • 🦘 Множественные стада кенгуру — tame, wild1, wild2 для повышения вероятности коллизии
  • 🎯 Модульные ограничения — если k ≡ R (mod M), пространство поиска сокращается в M раз
  • ⚙️ Автокалибровка — время отправки GPU и размер рабочей группы настраиваются при запуске
  • 📊 Встроенные бенчмарки — --benchmark для проверки оборудования, --save-benchmarks для записи результатов
  • 📦 Поставщики данных — подключаемые источники головоломок (интеграция boha для Bitcoin-головоломок)
  • 💻 Запасной CPU — чисто CPU-решатель для тестирования и сравнения

Зачем этот проект?

Большинство существующих реализаций Кенгуру (JeanLucPons/Kangaroo, RCKangaroo и др.) поддерживают только GPU NVIDIA через CUDA. Эта реализация использует WebGPU/wgpu, что обеспечивает кроссплатформенные GPU-вычисления через Vulkan, Metal и DX12.

Установка

Arch Linux (AUR)

paru -S kangaroo

Cargo

cargo install kangaroo

Из исходников

git clone https://github.com/oritwoen/kangaroo
cd kangaroo
cargo build --release

С провайдером boha

cargo build --release --features boha

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

kangaroo --pubkey <PUBKEY> --start <START> --range <BITS>

Аргументы

АргументПо умолчаниюОписание
-t, --target-Цель поставщика данных (например, boha:b1000/135)
-p, --pubkey-Целевой открытый ключ (сжатый hex, 33 байта)
-s, --start0Начало диапазона поиска (hex, без префикса 0x)
-r, --range32Размер диапазона поиска в битах (ключ в [start, start + 2^range - 1])
-d, --dp-bitsautoБиты отличительных точек
-k, --kangaroosautoКоличество параллельных кенгуру
--gpu0Индекс GPU-устройства
--backendautoБэкенд GPU: auto, vulkan, dx12, metal, gl
-o, --output-Выходной файл для результата
-q, --quietfalseМинимальный вывод, только найденный ключ
--max-ops0Максимальное количество операций (0 = без ограничений)
--cpufalseИспользовать CPU-решатель вместо GPU
--jsonfalseВывод результатов бенчмарка в формате JSON
--benchmarkfalseЗапустить набор бенчмарков
--save-benchmarksfalseСохранить результаты бенчмарка в BENCHMARKS.md при использовании --benchmark
--mod-step1Модульный шаг M (hex): искать только k ≡ R (mod M)
--mod-start0Модульный остаток R (hex): 0 ≤ R < M
--list-providersfalseВывести список доступных головоломок от провайдеров

Требуется либо --target, либо --pubkey.

Примеры

Использование поставщика данных (boha):

# Решить головоломку, используя данные boha (авто: pubkey, start, range)
kangaroo --target boha:b1000/66

# Переопределить диапазон (искать меньший поддиапазон)
kangaroo --target boha:b1000/66 --range 60

# Список доступных головоломок
kangaroo --list-providers

Ручные параметры:

kangaroo \
    --pubkey 03a2efa402fd5268400c77c20e574ba86409ededee7c4020e4b9f0edbee53de0d4 \
    --start 8000000000 \
    --range 40

С модульным ограничением (k ≡ 37 mod 60):

kangaroo \
    --pubkey 03a2efa402fd5268400c77c20e574ba86409ededee7c4020e4b9f0edbee53de0d4 \
    --start 8000000000 \
    --range 40 \
    --mod-step 3c \
    --mod-start 25

Это сокращает пространство поиска примерно в 60 раз. Полезно, когда известна частичная структура ключа (например, ключ сгенерирован с предсказуемым шагом).

Как это работает

Алгоритм Полларда «Кенгуру» решает задачу дискретного логарифмирования за время O(√n), где n — диапазон поиска. Работает следующим образом:

  1. Ручные кенгуру начинают с известной точки и совершают случайные прыжки
  2. Дикие кенгуру начинают с целевого открытого ключа и совершают те же типы прыжков
  3. Когда дикое и ручное кенгуру оказываются в одной точке (коллизия), мы можем вычислить закрытый ключ

Оптимизация отличительных точек (DP): вместо хранения всех посещённых точек мы сохраняем только те, чья x-координата имеет определённое количество ведущих нулевых битов. Это значительно снижает использование памяти, позволяя при этом обнаруживать коллизии.

Производительность

Ожидаемое количество операций: ~2^(range_bits/2)

Запустите kangaroo --benchmark, чтобы проверить своё оборудование без обращения к файлам. Используйте kangaroo --benchmark --save-benchmarks для обновления BENCHMARKS.md.

Сценарии использования

СценарийПример
Частично известный ключГоловоломка даёт ~240 бит, нужно найти оставшиеся ~16
Ключ в известном диапазонеИзвестно, что ключ находится между X и Y
Проверка почти-решенияЕсть кандидат, поиск ±N бит вокруг него

НЕ применимо для:

  • Полный поиск 256-битного ключа (математически невозможно)
  • Перебор BIP39 мнемоник (используйте атаку по словарю)
  • Головоломки без частичной информации о ключе

Использование библиотеки

use kangaroo::{KangarooSolver, GpuContext, GpuBackend, parse_pubkey, parse_hex_u256, verify_key};

fn main() -> anyhow::Result<()> {
    let pubkey = parse_pubkey("03...")?;
    let start = parse_hex_u256("8000000000")?;

    let ctx = pollster::block_on(GpuContext::new(0, GpuBackend::Auto))?;
    let mut solver = KangarooSolver::new(
        ctx,
        pubkey.clone(),
        start,
        40,  // количество бит диапазона
        12,  // количество бит отличительных точек
        1024, // количество кенгуру
    )?;

    loop {
        if let Some(key) = solver.step()? {
            if verify_key(&key, &pubkey) {
                println!("Найден: {}", hex::encode(&key));
                break;
            }
        }
    }

    Ok(())
}

Поставщики данных

Kangaroo поддерживает внешние поставщики данных для источников головоломок. Поставщики предоставляют открытый ключ, диапазон ключа и другие метаданные головоломки.

boha (опциональная возможность)

boha предоставляет данные криптографических головоломок, включая Bitcoin Puzzle Transaction (b1000).

Сборка с поддержкой boha:

cargo build --release --features boha

Использование:

# Решить конкретную головоломку
kangaroo --target boha:b1000/66

# Список решаемых головоломок (нерешённые с известным открытым ключом)
kangaroo --list-providers

Провайдер проверяет переопределение диапазона — нельзя искать вне диапазона ключа головоломки.

Архитектура

Скачать инструмент