Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
kangaroo — 基于GPU加速的波拉德袋鼠算法,用于求解secp256k1上的椭圆曲线离散对数问题(ECDLP),支持Vulkan、Metal和DX12后端。 | Kitploit
工具/GitHubGitHub/oritwoen/kangaroo
加密/解密工具漏洞分析密码学二进制分析论文与研究学习与教育
GitHuboritwoen/kangaroo

kangaroo

基于GPU加速的波拉德袋鼠算法,用于求解secp256k1上的椭圆曲线离散对数问题(ECDLP),支持Vulkan、Metal和DX12后端。

查看仓库
251725个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

袋鼠

Crates.io Downloads License Ask DeepWiki

基于GPU加速的Pollard袋鼠算法,用于求解secp256k1上的椭圆曲线离散对数问题(ECDLP)。

特性

  • 🖥️ 跨平台GPU — 通过wgpu支持Vulkan(AMD、NVIDIA、Intel)、Metal(Apple Silicon)、DX12(Windows)
  • 🦀 纯Rust + WGSL — 无CUDA依赖,计算着色器在运行时编译
  • ⚡ 区分点(Distinguished Points) — 通过自动调整DP位实现高效碰撞检测
  • 🔄 取反映射(Negation map) — 通过基于Y奇偶性的定向行走与循环防护实现约1.29倍加速
  • 🦘 多组袋鼠 — 驯服群、野生1群、野生2群,提高碰撞概率
  • 🎯 模约束 — 若k ≡ R (mod M),将搜索空间缩小M倍
  • ⚙️ 自动校准 — 启动时自动调整GPU调度时机和工作组大小
  • 📊 内置基准测试 — 使用--benchmark测试硬件,使用--save-benchmarks记录结果
  • 📦 数据提供者 — 可插拔的谜题来源(集成boha以支持比特币谜题)
  • 💻 CPU回退 — 纯CPU求解器,用于测试和比较

为何创建此项目?

现有的大多数袋鼠算法实现(如JeanLucPons/Kangaroo、RCKangaroo等)仅通过CUDA支持NVIDIA GPU。本实现采用WebGPU/wgpu,通过Vulkan、Metal和DX12提供跨平台GPU计算。

安装

Arch Linux (AUR)

root@kitploit:~
paru -S kangaroo

Cargo

root@kitploit:~
cargo install kangaroo

从源码编译

root@kitploit:~
git clone https://github.com/oritwoen/kangaroo
cd kangaroo
cargo build --release

使用boha提供者

root@kitploit:~
cargo build --release --features boha

用法

root@kitploit:~
kangaroo --pubkey <PUBKEY> --start <START> --range <BITS>

参数

必须提供--target或--pubkey。

示例

使用数据提供者(boha):

root@kitploit:~
# Solve puzzle using boha data (auto: pubkey, start, range)
kangaroo --target boha:b1000/66

# Override range (search smaller subset)
kangaroo --target boha:b1000/66 --range 60

# List available puzzles
kangaroo --list-providers

手动参数:

root@kitploit:~
kangaroo \
    --pubkey 03a2efa402fd5268400c77c20e574ba86409ededee7c4020e4b9f0edbee53de0d4 \
    --start 8000000000 \
    --range 40

带模约束(k ≡ 37 mod 60):

root@kitploit:~
kangaroo \
    --pubkey 03a2efa402fd5268400c77c20e574ba86409ededee7c4020e4b9f0edbee53de0d4 \
    --start 8000000000 \
    --range 40 \
    --mod-step 3c \
    --mod-start 25

这将搜索空间缩小约60倍。当部分密钥结构已知时(例如,密钥由可预测的步长模式生成),此功能很有用。

工作原理

Pollard袋鼠算法在O(√n)时间内解决离散对数问题,其中n为搜索范围。其工作原理如下:

  1. 驯服袋鼠从已知点出发并进行随机跳跃
  2. 野生袋鼠从目标公钥出发并进行相同类型的跳跃
  3. 当野生袋鼠与驯服袋鼠落在同一点(碰撞)时,即可计算出私钥

区分点(DP)优化:不存储所有访问过的点,而是仅存储x坐标具有特定位数前导零的点。这大大减少了内存使用,同时仍能进行碰撞检测。

性能

Expected operations: ~2^(range_bits/2)

运行kangaroo --benchmark测试硬件,无需修改文件。使用kangaroo --benchmark --save-benchmarks更新BENCHMARKS.md。

使用场景

使用场景示例
部分密钥已解码谜题给出约240位,需找到剩余约16位
密钥在已知范围内已知密钥在X与Y之间
验证近解已有候选值,在其周围搜索±N位

不适用于:

  • 完整256位密钥搜索(数学上不可能)
  • BIP39助记词暴力破解(请改用字典攻击)
  • 没有部分密钥信息的谜题

库使用

root@kitploit:~
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,  // range_bits
        12,  // dp_bits
        1024, // num_kangaroos
    )?;

    loop {
        if let Some(key) = solver.step()? {
            if verify_key(&key, &pubkey) {
                println!("Found: {}", hex::encode(&key));
                break;
            }
        }
    }

    Ok(())
}

数据提供者

袋鼠支持用于谜题来源的外部数据提供者。提供者提供公钥、密钥范围及其他谜题元数据。

boha(可选特性)

boha 提供包括比特币谜题交易(b1000)在内的加密谜题数据。

使用boha支持编译:

root@kitploit:~
cargo build --release --features boha

用法:

root@kitploit:~
# Solve specific puzzle
kangaroo --target boha:b1000/66

# List solvable puzzles (unsolved with known pubkey)
kangaroo --list-providers

提供者会验证范围覆盖 – 你不能搜索超出谜题密钥范围的值。

架构

root@kitploit:~
src/
├── main.rs              # CLI entry point
├── lib.rs               # Library entry + Args + run()
├── solver.rs            # GPU solver coordination
├── cli.rs               # CLI utilities (tracing, progress bar)
├── benchmark.rs         # Built-in benchmark suite
├── modular.rs           # Modular constraint transformation
├── math.rs              # 256-bit arithmetic, DP mask generation
├── convert.rs           # Limb/byte conversions for GPU↔CPU
├── provider/
│   ├── mod.rs           # Provider system interface
│   └── boha.rs          # boha provider (feature-gated)
├── cpu/
│   ├── cpu_solver.rs    # Pure CPU solver (testing/comparison)
│   ├── dp_table.rs      # Distinguished Points collision detection
│   └── init.rs          # Kangaroo initialization + jump tables
├── crypto/
│   └── mod.rs           # k256/secp256k1 wrappers
├── gpu/
│   ├── pipeline.rs      # Compute pipeline setup
│   └── buffers.rs       # GPU buffer management
├── gpu_crypto/
│   ├── context.rs       # GPU context + backend selection
│   └── shaders/         # WGSL shader library
│       ├── field.wgsl   # secp256k1 field arithmetic
│       └── curve.wgsl   # Jacobian point operations
└── shaders/
    └── kangaroo_affine.wgsl  # Main Kangaroo compute shader

要求

  • Rust 1.70+
  • 支持Vulkan的GPU(AMD、NVIDIA、Intel)或Metal(macOS)
  • 在使用AMD RADV的Linux上,需要Mesa 25.x或更新版本(较旧的Mesa版本可能会在着色器循环中的WGSL动态索引上崩溃)
  • 已安装GPU驱动程序

许可协议

MIT许可证 - 详见LICENSE。

相关项目

  • JeanLucPons/Kangaroo - CUDA实现(仅NVIDIA)
  • RCKangaroo - CUDA实现(仅NVIDIA)
  • boha - 加密谜题和赏金数据库
下载工具
参数默认值描述
-t, --target-数据提供者目标(例如 boha:b1000/135)
-p, --pubkey-目标公钥(压缩十六进制,33字节)
-s, --start0搜索范围起始(十六进制,不含0x前缀)
-r, --range32搜索范围位数(密钥在[start, start + 2^range - 1]内)
-d, --dp-bitsauto区分点位数
-k, --kangaroosauto并行袋鼠数量
--gpu0GPU设备索引
--backendautoGPU后端:auto、vulkan、dx12、metal、gl
-o, --output-结果输出文件
-q, --quietfalse最小输出,仅打印找到的密钥
--max-ops0最大操作数(0 = 无限制)
--cpufalse使用CPU求解器替代GPU
--jsonfalse以JSON格式输出基准测试结果
--benchmarkfalse运行基准测试套件
--save-benchmarksfalse当使用--benchmark时将基准测试结果保存到BENCHMARKS.md
--mod-step1模步长M(十六进制):仅搜索k ≡ R (mod M)
--mod-start0模余数R(十六进制):0 ≤ R < M
--list-providersfalse列出提供者中的可用谜题