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

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

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

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

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/lachesis/scallion
密码破解侦察信息收集密码学
GitHublachesis/scallion

scallion

基于GPU的洋葱哈希生成器

查看仓库
1.3k16265年前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

2020 项目更新

Scallion 是一个用于学习 OpenCL 和 RSA 的业余项目。我们目前没有在维护 scallion。它在两个重要方面已经过时:

  1. Tor 已经迁移到 v3 Onion 地址,而 scallion 不支持此版本。旧的 v2 地址将在 2021 年 10 月 停止工作。新规范使用了不同的密码学原语,整体上更加复杂。我们在 GPU 上批量生成 RSA 密钥的技巧在新的 ECDSA 密钥需求下无法以相同方式工作。在 GPU 上生成类似(但不兼容)的 ECDSA 密钥是可能的,用于比特币地址生成。请参见 vanitygen-plus 或更早的 oclvanitygen。关于适用于 Tor v3 隐藏服务的(基于 CPU 的)虚荣地址生成工具列表,请参见 这篇博客文章。
  2. 我们所依赖的 OpenSSL 版本已被弃用,在大多数现代操作系统中不可用。升级并不简单,因为我们使用了 OpenSSL 中一些低级数学函数,而这些函数在新版本的 C# 绑定中不可用。我个人使用基于 Ubuntu 16.04 Xenial 的 nvidia dockerfile 运行 Scallion,该版本仍然包含过时的 OpenSSL。然而,这仅适用于 Nvidia GPU 用户。您也可以尝试构建过时的 OpenSSL 库并直接链接,或者从 live USB 或 VM(带 PCI-e 直通)运行旧版操作系统。

如果有足够的关注和努力,上述两个挑战都是可以克服的。我们可以实现对 GPU ECDSA 密钥生成算法的支持,以获取 Tor v3 支持。我们可以更新 OpenSSL,并用其他库替换那些数学函数,或者为 OpenSSL 库编写自己的托管代码包装。然而,将 v3 onion 地址支持添加到像 vanitygen-plus 这样的维护项目中可能会更好。

Scallion

Scallion 允许您使用 OpenCL 创建虚荣 GPG 密钥和 .onion 地址(用于 Tor 的 隐藏服务)。

Scallion 可在 Mono(已在 Arch Linux 上测试)和 .NET 3.5+(已在 Windows 7 和 Server 2008 上测试)上运行。

Scallion 目前处于 beta 阶段,正在积极开发中。尽管如此,我们认为它已准备好使用。改进预计主要针对性能、用户界面和安装便捷性,而不是用于生成密钥的整体算法。

Scallion 采用 MIT 许可证发布。如果您在自己的项目中使用了此项目的代码,我们欢迎您通过 [email protected] 告知我们。

常见问题解答

以下是一些常见问题及其答案:

  • 为什么要生成 GPG 密钥?

    Scallion 曾被用于在信任网络的强集合中查找每一个 32 位密钥 ID 的碰撞,从而证明 32 位密钥 ID 是多么不安全。在 DEFCON 上有 一个演讲(视频),更多信息可访问 https://evil32.com/。

  • 哪些字符是有效的?

    Tor 的 .onion 地址使用 Base32,由所有字母以及数字 2 到 7(含)组成。它们不区分大小写。

    GPG 指纹使用 十六进制,由数字 0-9 和字母 A-F 组成。

  • 能否使用比特币 ASIC(例如 Jalapeno、KnC)来加速此过程?

    遗憾地,不能。虽然 Scallion 使用的过程在概念上相似(增加一个 nonce 并检查哈希),但细节不同(SHA-1 对比特币的双 SHA-256)。此外,比特币 ASIC 之所以如此之快,是因为它们极其定制化,专用于比特币挖矿应用。例如,这是 datasheet 对于 CoinCraft A-1,这是一款从未发布的 ASIC,但可能代表了总体方法。微控制器以比特币区块的最后 128 位、之前位的哈希中间状态、目标难度以及要尝试的最大 nonce 形式发送工作。ASIC 选择插入 nonce 的位置,并决定哪些区块满足哈希。Scallion 必须在不同的位置插入 nonce,并且它检查的是模式匹配,而不是简单的“低于 XXXX”。

  • 如何使用多个设备?

    运行多个 Scallion 实例。😄 Scallion 搜索是概率性的,因此使用第二个设备不会重复工作。真正的多设备支持并不困难,但也不会增加太多价值。我曾在 tmux 或 screen 中成功运行过多个 scallion 实例。当其中一个找到模式时,您只需手动中止所有任务(或者编写一个 shell 脚本来监控输出文件,并在发现结果时杀死所有任务)。

依赖项

  • 已安装并配置好的 OpenCL 及相关驱动程序。请参考您发行版的文档。
  • OpenSSL。对于 Windows,已包含预构建的 x86 DLL。
  • 仅在 Windows 上需要 VC++ Redistributable 2008

二进制下载

只想要最新的二进制版本?请从这里获取。

构建 Linux

先决条件

  • 为您的 Linux 发行版获取最新的 mono:

    http://www.mono-project.com/download/

  • 安装通用依赖项:

    root@kitploit:~
    sudo apt-get update
    sudo apt-get install libssl-dev mono-devel
    
  • AMD/开源构建 sudo apt-get install ocl-icd-opencl-dev

  • Nvidia 构建 sudo apt-get install nvidia-opencl-dev nvidia-opencl-icd

  • 最后 msbuild scallion.sln

Docker Linux(仅 nvidia GPU)

  1. 拥有 nvidia-docker 容器 运行时

  2. 构建容器:

    root@kitploit:~
    docker build -t scallion -f Dockerfile.nvidia .
    
  3. 运行:

    root@kitploit:~
    docker run --runtime=nvidia -ti --rm scallion -l
    

    预期输出的截图

构建 Windows

  1. 在 VS Express for Desktop 2012 中打开 'scallion.sln'
  2. 构建解决方案,我全部在调试模式下进行。

用法

在搜索过程中重新启动 Scallion 不会丢失“进度”。这是一项概率搜索,Scallion 不会“进步”

列出设备

root@kitploit:~
$ mono scallion/bin/Debug/scallion.exe -l

生成一个哈希

root@kitploit:~
$ mono scallion/bin/Debug/scallion.exe -d 0 prefix
Cooking up some delicious scallions...
Using kernel optimized from file kernel.cl (Optimized4)
Using work group size 128
Compiling kernel... done.
Testing SHA1 hash...
CPU SHA-1: d3486ae9136e7856bc42212385ea797094475802
GPU SHA-1: d3486ae9136e7856bc42212385ea797094475802
Looks good!
LoopIteration:40  HashCount:671.09MH  Speed:9.5MH/s  Runtime:00:01:10  Predicted:00:00:56  Found new key! Found 1 unique keys.
<XmlMatchOutput>
  <GeneratedDate>2014-08-05T07:14:50.329955Z</GeneratedDate>
  <Hash>prefix64kxpwmzdz.onion</Hash>
  <PrivateKey>-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCmYmTnwGOCpsPOqvs5mZQbIM1TTqOHK1r6zGvpk61ZaT7z2BCE
FPvdTdkZ4tQ3/95ufjhPx7EVDjeJ/JUbT0QAW/YflzUfFJuBli0J2eUJzhhiHpC/
1d3rb6Uhnwvv3xSnfG8m7LeI/Ao3FLtyZFgGZPwsw3BZYyJn3sD1mJIJrQIEB/ZP
ZwKBgCTUQTR4zcz65zSOfo95l3YetVhfmApYcQQd8HTxgTqEsjr00XzW799ioIWt
vaKMCtJlkWLz4N1EqflOH3WnXsEkNA5AVFe1FTirijuaH7e46fuaPJWhaSq1qERT
eQT1jY2jytnsJT0VR7e2F83FKINjLeccnkkiVknsjrOPrzkXAkEA0Ky+vQdEj64e
iP4Rxc1NreB7oKor40+w7XSA0hyLA3JQjaHcseg/bqYxPZ5J4JkCNmjavGdM1v6E
OsVVaMWQ7QJBAMweWSWtLp6rVOvTcjZg+l5+D2NH+KbhHbNLBcSDIvHNmD9RzGM1
Xvt+rR0FA0wUDelcdJt0R29v2t19k2IBA8ECQFMDRoOQ+GBSoDUs7PUWdcXtM7Nt
QW350QEJ1hBJkG2SqyNJuepH4PIktjfytgcwQi9w7iFafyxcAAEYgj4HZw8CQAUI
3xXEA2yZf9/wYax6/Gm67cpKc3sgKVczFxsHhzEml6hi5u0FG7aNs7jQTRMW0aVF
P8Ecx3l7iZ6TeakqGhcCQGdhCaEb7bybAmwQ520omqfHWSte2Wyh+sWZXNy49EBg
d1mBig/w54sOBCUHjfkO9gyiANP/uBbR6k/bnmF4dMc=
-----END RSA PRIVATE KEY-----
</PrivateKey>
  <PublicModulusBytes>pmJk58BjgqbDzqr7OZmUGyDNU06jhyta+sxr6ZOtWWk+89gQhBT73U3ZGeLUN//ebn44T8exFQ43ifyVG09EAFv2H5c1HxSbgZYtCdnlCc4YYh6Qv9Xd62+lIZ8L798Up3xvJuy3iPwKNxS7cmRYBmT8LMNwWWMiZ97A9ZiSCa0=</PublicModulusBytes>
  <PublicExponentBytes>B/ZPZw==</PublicExponentBytes>
</XmlMatchOutput>
init: 491ms / 1 (491ms, 2.04/s)
generate key: 1193ms / 6 (198.83ms, 5.03/s)
cpu precompute: 10ms / 6 (1.67ms, 600/s)
total without init: 70640ms / 1 (70640ms, 0.01/s)
set buffers: 0ms / 40 (0ms, 0/s)
write buffers: 3ms / 40 (0.08ms, 13333.33/s)
read results: 67442ms / 40 (1686.05ms, 0.59/s)
check results: 185ms / 40 (4.63ms, 216.22/s)

9.50 million hashes per second

Stopping the GPU and shutting down...

多模式哈希

Scallion 支持通过简单的正则表达式语法查找一个或多个模式。仅支持字符类(例如 [abcd])。. 字符表示任意字符。Onion 地址总是 16 个字符长,GPG 指纹总是 40 个字符。您可以通过在匹配末尾添加 $ 来查找后缀(例如 DEAD$)。最后,可以使用管道语法(例如 pattern1|pattern2)来查找多个模式。搜索多个模式(合理范围内)不会显著降低速度。许多正则表达式在 GPU 上会产生单一模式,从而不会导致速度下降。

一些用例及示例:

  • 生成前缀后跟数字以提高可读性:

    root@kitploit:~
      mono scallion.exe prefix[234567]
    
  • 同时搜索多个模式(注意:-c 使 scallion 在获得命中后继续生成)

    root@kitploit:~
      mono scallion.exe -c prefix scallion hashes
      mono scallion.exe -c "prefix|scallion|hashes"
    
  • 搜索后缀 "badbeef"

    root@kitploit:~
      mono scallion.exe .........badbeef
      mono scallion.exe --gpg badbeef$ # 生成 GPG 密钥
    
  • 复杂的自解释示例:

    root@kitploit:~
      mono scallion.exe "suffixa$|suffixb$|prefixa|prefixb|a.suffix$|a.test.$"
    

Scallion 是如何工作的?

从高层次来看,Scallion 的工作方式如下:

  1. 在 CPU 上使用 OpenSSL 生成 RSA 密钥
  2. 将密钥发送到 GPU
  3. 增加密钥的公钥指数
  4. 对密钥进行哈希运算
  5. 如果哈希后的密钥不是部分碰撞,则回到步骤 3
  6. 如果密钥未通过 PKCS #1 v2.1 建议的健全性检查(在 CPU 上检查),则回到步骤 3
  7. 获得全新的部分碰撞密钥!

基本算法如上所述。速度/性能是 GPU 和 CPU 上大规模并行化的结果。

速度/性能

重要的是要认识到 Scallion 执行的是概率搜索。实际时间可能与预测时间有很大差异

初始 RSA 密钥生成在 CPU 上完成。一个 Ivy Bridge i7 使用单核每秒可生成 51 个密钥。每个密钥可以提供 1 GHash 的指数供挖掘,并且根据当前实现,一台合适的 CPU 可以跟上多个 GPU。

SHA1 哈希在 GPU 上完成。以下是我们测试过的几个 GPU 的哈希率(按制造商分组并按功耗排序):

MH/s = 百万哈希每秒

值得注意的是,Intel 已经为其处理器发布了 OpenCL 驱动程序,并且可以在 CPU 上找到短碰撞。

要计算给定部分碰撞所需的秒数(平均),请使用公式:

类型预估时间
GPG 密钥2^(4*长度-1) / 哈希速度
.onion 地址2^(5*长度-1) / 哈希速度

例如,在我的 nVidia Quadro K2000M 上,我看到大约 90 MH/s。以该速度,我可以在大约 1 小时 41 分钟内生成一个 8 字符的 .onion 前缀,即 2^(5*8-1)/90 million = 101 分钟。

工作组大小

默认情况下,Scallion 会使用设备报告的首选工作组大小。这是一个合理的默认值,但尝试不同的工作组大小可能会提高性能。

安全性

Scallion 生成的密钥与 shallot 生成的密钥非常相似。它们具有异常大的公钥指数,但通过 openssl 的 RSA_check_key 函数,它们经过了 PKCS #1 v2.1 建议的完整健全性检查。Scallion 支持多种 RSA 密钥大小,并为 1024b、2048b 和 4096b 提供了优化内核。其他密钥大小可能也能工作,但未经过测试。

感谢 / 参考

  • Scallion 部分基于 shallot,并受 vanitygen 启发
  • OpenCL SHA-1 实现改编自 NearSHA
  • 包含来自 OpenTK 和 OpenSSL-net 的组件

捐赠

欢迎向比特币地址捐赠:1FxQcu6vhpwsqcTjPsjK43CZ9vjnuk4Hmo

下载工具
GPU速度
Intel i7-2620M9.9 MH/s
Intel i5-5200U118 MH/s
NVIDIA GT 52038.7 MH/s
NVIDIA Quadro K2000M90 MH/s
NVIDIA GTS 250128 MH/s
NVIDIA GTS 450144 MH/s
NVIDIA GTX 670480 MH/s
NVIDIA GTX 9702350 MH/s
NVIDIA GTX 9803260 MH/s
NVIDIA GTX 1050 (M)1400 MH/s
NVIDIA GTX 10704140 MH/s
NVIDIA GTX 1070 TI5100 MH/s
NVIDIA GTX TITAN X4412 MH/s
NVIDIA GTX 10805760 MH/s
NVIDIA Tesla V10011646 MH/s
AMD A8-7600 APU120 MH/s
AMD Radeon HD5770520 MH/s
AMD Radeon HD6850600 MH/s
AMD Radeon RX 460840 MH/s
AMD Radeon RX 470957 MH/s
AMD Radeon R9 380X2058 MH/s
AMD FirePro W91002566 MH/s
AMD Radeon RX 4802700 MH/s
AMD Radeon RX 5803180 MH/s
AMD Radeon R9 Nano3325 MH/s
AMD Vega Frontier Edition7119 MH/s